Skip to content

sirleech/NewSoftSerial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#A New Software Serial Library for Arduino

Forked from
http://arduiniana.org/libraries/newsoftserial/

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.

Releases

No releases published

Packages

No packages published