Commit Graph

104 Commits

Author SHA1 Message Date
Zach Eveland 160bf890e0 changed auto-reset method for upload: now triggered by opening port at 1200 bps 2011-08-24 17:12:28 -04:00
Zach Eveland 0d592a5fea USB microcontrollers will call USB.attach() after init(), before setup() 2011-08-18 19:59:35 -04:00
Zach Eveland 7d575222af HW Serial on pins 0 and 1 works. Accessed by Serial1.* methods 2011-08-18 19:40:04 -04:00
Zach Eveland 84c0d2cff8 Temporary fix for auto-reset from IDE. Will reset chip when DTR is asserted, no matter what CDC baud rate is selected. 2011-08-16 13:43:55 -04:00
Zach Eveland ddd3418a4f Serial via USB works
Integrated rest of Peter's USB implementation
2011-08-14 16:59:34 -04:00
Zach Eveland 4c537c1b6d committed USB API, initial HardwareSerial-USBSerial integration 2011-08-11 14:08:38 -04:00
David A. Mellis a239d2c541 Added Printable interface class to allow printing of classes such as IPAddress 2011-06-04 09:19:17 -04:00
David A. Mellis 664e9af2cd Fixing 300 baud communication for serial.
Because UBBR is only 12 bits, we were overflowing it at 300 baud because of the use of the U2X bit.  Now we turn off U2X if it would yield a UBBR value that would overflow.

Note that this breaks 300 baud communication with the computer on the Uno and Mega 2560 because the 8U2 USB-serial firmware has this same bug (and previously they cancelled each other out).  Since, however, it seems more likely that people will need to use 300 baud to communicate with other (legacy) hardware than with the computer, I'm making this change.  Issue for 8U2 firmware bug: http://code.google.com/p/arduino/issues/detail?id=542

http://code.google.com/p/arduino/issues/detail?id=522
2011-05-20 13:29:13 -04:00
David A. Mellis 90c487402c Small optimization in HardwareSerial.
begin(long) -> begin(unsigned long)

Conflicts:

	hardware/arduino/cores/arduino/HardwareSerial.h
2011-05-12 16:58:56 -04:00
David A. Mellis 5e5cce8124 Optimizing printing of numbers (writing a single buffer).
Fix from Bill Greiman via Limor.
2011-05-07 18:17:32 -04:00
David A. Mellis ac5defcea6 Adding serialEvent(), serialEvent1(), etc.
Called from within the serial receive interrupt.  These are implemented as an empty weak function in the core that be overridden by the user's sketch.

http://code.google.com/p/arduino/issues/detail?id=263
2011-05-07 13:04:13 -04:00
David A. Mellis 111c55581b Refactoring the UART0 / USART0 receive interrupt handler. 2011-05-07 12:47:43 -04:00
David A. Mellis c7c7302d9d Changing Serial.flush() to write outgoing data, not drop incoming data.
This brings it in line with most other uses of flush(), both in and out of Arduino.
http://code.google.com/p/arduino/issues/detail?id=497
2011-05-07 12:05:27 -04:00
David A. Mellis 1cac0f3eb7 Restoring concatenation of built-in types with String. 2011-03-31 10:56:14 -04:00
David A. Mellis ffe7bc53c1 Adding F("foo") syntax for flash strings. 2011-03-27 15:06:20 -04:00
David A. Mellis 99e642a26d String: removing implicit numeric conversions and new approach to "if (s)".
This makes explicit the String constructors that take numeric types and chars and removes the versions of concat() and operator=() and operator+() that accept numberic types.

It also replaces the operator bool() with a operator that converts to a function pointer.  This allows for uses like "if (s)" but not "s + 123".  See: http://www.artima.com/cppsource/safebool.html.  This allowed removing the disambiguating operator+() functions and relying solely on StringSumHelper and anonymous temporaries once again.

Also, now treating unsigned char's like int when constructing Strings from them, i.e. String(byte(65)) is now "65" not "A".  This is consistent with the new behavior of Serial.print(byte).
2011-03-26 18:52:54 -04:00
David A. Mellis cedea72273 Commenting String API behavior. 2011-03-23 22:42:05 -04:00
David A. Mellis 58d04ab3a3 Return an invalid string (not a partial one) when operator+() fails. 2011-03-19 11:14:17 -04:00
David A. Mellis 7dea0522f4 Starting to distinguish between empty strings and invalid (null) ones. 2011-03-18 21:45:27 -04:00
David A. Mellis 45884b1231 Protecting String copy() and move(). 2011-03-13 19:39:04 -04:00
David A. Mellis a5f6e65242 Adding additional String + operators for disambiguation.
The operator bool() means that you could implicitly convert a String to a bool and then add it to it an int, for example.  Which means our operator+ has to match exactly or it will be ambiguous.
2011-03-13 19:31:10 -04:00
David A. Mellis 76776e7a46 Moving move() to __GXX_EXPERIMENTAL_CXX0X__ only, adding operator bool(). 2011-03-13 16:46:06 -04:00
David A. Mellis 98b403114c Modifying String.concat() to return success or failure, not this.
Which means you can't chain multiple concat() calls together, but you can check if they succeeded or not.
2011-03-12 14:03:34 -05:00
David A. Mellis b4b32f60f1 Don't return the string when modifying its value.
Changing toLowerCase(), toUpperCase(), trim() and replace() to return void instead of a reference to the string that's just been changed.  That way, it's clear that the functions modify the string they've been called on.
2011-03-11 18:54:58 -05:00
David A. Mellis 99e0c131fc Renaming append() back to concat(). 2011-03-11 18:04:31 -05:00
David A. Mellis 22786eaed2 Removing F("string") syntax for now.
We should probably add something like this back in later, but I want to do one thing at a time.  This removes the __FlashStringHelper class as well.
2011-03-11 18:01:40 -05:00
David A. Mellis 438bca3cb2 Rewrite of the String class by Paul Stoffregen.
http://www.pjrc.com/teensy/string_class_experimental.html
2011-03-11 17:56:10 -05:00
David A. Mellis 0ba1f0ec50 Flushing outgoing and incoming data in Serial.end().
That is, waiting for outgoing data to transmit and dropping any received data.
2011-03-06 12:20:42 -05:00
David A. Mellis 01d82d8277 Fixing race condition in Serial write (Brian Cook). 2011-03-06 11:47:18 -05:00
David A. Mellis bc416b14bd Moving TCCR1B reset into #ifdef check. 2011-03-06 11:29:35 -05:00
David A. Mellis d8d233ad3e Implemented serial transmit buffering.
Now Serial.write() places characters in the transmit buffer, and the data register empty interrupt reads and transmit them.  Based loosely on the implementation here: ftp://wookey.org.uk/arduino.

http://code.google.com/p/arduino/issues/detail?id=262
2011-03-05 14:17:26 -05:00
David A. Mellis a19a23ff92 Factoring pin definitions out of the core.
That is, there's now a pins/ directory in a platform, which includes multiple directories, each of which has its own pins_arduino.h.  The boards.txt gets a new preferences, <BOARD>.build.pins, whose values is a sub-directory of the pins/ directory (possibly with a "platform:" prefix).  That sub-directory is then placed in the include path during compilation.
2011-03-04 21:05:05 -05:00
David A. Mellis 6cd58c57db Moving all pin definitions into pins_arduino.h.
This is a step towards providing portability across AVR's by simply including an appropriate header file.
2011-03-03 23:54:33 -05:00
David A. Mellis b0ab2bc48b Rearranging internal #defines in headers. 2011-03-03 18:57:05 -05:00
David A. Mellis 58d683239d Removing optimized digitalWrite(), digitalRead(), pinMode(). 2011-03-03 18:46:45 -05:00
David A. Mellis d7a87f18f0 Re-arranging header files and small fixes to optimized core functions. 2011-03-02 23:05:25 -05:00
David A. Mellis 218eb5e807 Moving wiring.h contents into Arduino.h. 2011-03-01 20:00:16 -05:00
David A. Mellis e009c5c6c6 Renamed WProgram.h to Arduino.h. 2011-03-01 19:52:13 -05:00
David A. Mellis c8b8b8724c Removing BYTE keyword (use Serial.write() instead). 2011-02-26 13:58:03 -05:00
David A. Mellis 860c6f2031 Revert "Changes to optimized digitalWrte(), etc."
This reverts commit aa1f1cbda9d6bb52785f98b40746920853d6579b.
2011-02-18 10:41:29 -05:00
David A. Mellis 63515122ca Revert "Adding noAnalogWrite() function to disable PWM."
This reverts commit 38d4a34fec6925b29a732d13e200f54ee4b42025.
2011-02-18 10:40:56 -05:00
David A. Mellis cd050d05d1 Adding noAnalogWrite() function to disable PWM.
Also, removing the inline version of digitalPinToTimer() (since we're not optimizing the functions that use it anyway).  The noAnalogWrite() function is in wiring_analog.c, deriving from the previous turnOffPWM() which has moved from wiring_digital.c.

http://code.google.com/p/arduino/issues/detail?id=476
2011-02-12 14:47:08 -05:00
David A. Mellis eed15e48d6 Changes to optimized digitalWrte(), etc.
Factoring out the implementation of digitalWrite(), digitalRead(), and pinMode() into macros that can either be inlined (for constant pin numbers) or executed within a function (non-constant pins).  Removing testing for timers on pins in digitalWrite(), digitalRead(), and pinMode().  Moving pin to port macros from pins_arduino.h to wiring.h.
2011-02-11 19:29:46 -05:00
David A. Mellis 3696fa0446 Optimized digitalWrite(), etc. from Alvaro Lopez. 2011-02-11 17:53:24 -05:00
David A. Mellis 11dd06436d Changing String append to use realloc(); thanks to Paul Stoffregen.
http://code.google.com/p/arduino/issues/detail?id=332
2010-12-11 15:22:07 -05:00
David A. Mellis 053ec1b989 Replacing custom String.toInt() function with a call to atol(). 2010-12-03 23:12:41 -05:00
David A. Mellis 4a90c4bd40 Redoing 448222e4b65e0cf44dfc0c494f7f76901f1fabea without all the extra files.
Adds toInt() to String, WCharacter.h (from Wiring), and an SD Datalogger example.
2010-11-29 15:20:30 -05:00
David A. Mellis 80c5173bfd Revert "added toInt() function to WString".
This reverts commit 448222e4b65e0cf44dfc0c494f7f76901f1fabea.
2010-11-29 15:14:10 -05:00
Tom Igoe 15f51fc1f8 added toInt() function to WString 2010-11-29 11:31:00 -05:00
David A. Mellis eb9c51d43c pulseIn() now times out while measuring the pulse, not just while waiting for it to start. 2010-11-22 23:33:59 -05:00