Forked for version control on GIT
C++ C Java
Switch branches/tags
Nothing to show
Failed to load latest commit information.
Examples version 10c Apr 18, 2011
NewSoftSerial.cpp version 10c Apr 18, 2011
NewSoftSerial.h version 10c Apr 18, 2011
keywords.txt version 10c Apr 18, 2011
readme readme Apr 18, 2011


#A New Software Serial Library for Arduino

Forked from

NewSoftSerial is the latest of three Arduino libraries providing “soft” serial port support. It’s the direct descendant of ladyada’s AFSoftSerial, which introduced interrupt-driven receives – a dramatic improvement over the polling required by the native SoftwareSerial.

Without interrupts, your program’s design is considerably restricted, as it must continually poll the serial port at very short, regular intervals. This makes it nearly impossible, for example, to use SoftwareSerial to receive GPS data and parse it into a usable form. Your program is too busy trying to keep up with NMEA characters as they arrive to actually spend time assembling them into something meaningful. This is where AFSoftSerial’s (and NewSoftSerial’s) interrupt architecture is a godsend. Using interrupt-driven RX, your program fills its buffer behind the scenes while processing previously received data.

##Change Log

   1. initial version
   2. ported to Arduino 0013, included example sketch in package
   3. several important improvements: (a) support for 300, 1200, 14400, and 28800 baud (see caveats), (b) added bool overflow() method to test whether an RX buffer overflow has occurred, and (c) tuned RX and TX for greater accuracy at high baud rates 38.4K, 57.6K, and 115.2K.
   4. minor bug fixes — add .o file and objdump.txt to zip file for diagnostics.
   5. etracer’s inline assembler fix to OSX avr-gcc 4.3.0 interrupt handler bug added.
   6. ladyada’s new example sketch, fix to interrupt name, support for 328p.
   7. etracer’s workaround is now conditionally compiled only when avr-gcc’s version is less than 4.3.2.
   8. 8 MHz support and flush() and enable_timer0()  methods added
   9. digitalread/write scrapped in favor of direct port I/O.  Revised routines now get perfect RX up to 57.6K on 16MHz processors and 31.25K on 8MHz processors.
  10. inverted TTL signalling supported.  20MHz processors supported.  Teensy and Teensy++ supported.  New end() method and destructor added to clean up.