I have a Ublox-NEO6M gps module that I am trying to read using SoftwareSerial. The GPS sends a few NMEA sentences at 9600 baud each 5th second - totally a couple of hundred characters. My 3.3V atmega 328 on an arduino pro board seems not to be able to cope and is loosing characters. One set of NMEA sentences ends up looking like
$GPRMC,131953.00,A,5939.89405,N,01038.33769,E,0.399,,060316,,,A*79 $GPVTG,,T,,0,.K2$G335.50.6,745,0* GA1,2,0,.1,2 G,5,12702,21214G,,1,,,84,81037$S,,26,55,09,17* G41,12388,2*$L39,1.615,6
The first one is good, all the following are mangeled (they should always start with $G and never contain a $ within the string.
If I set the transmission speed to 4800 baud, the arduino reads it without problems. Connecting the GPS to the same Serial USB interface that I use for the pro, so it talks directly to the PC, everything works at 9600, so the problem must be at the arduino. Is is as expected that soft serial is not working at higher baudrates than 9600? are there any settings I could change?(I was looking for possible buffer values without finding anything) Or are there other soft-serial libraries that is faster than SoftwareSerial?
I may end up using the hardware serial interface if I need the speed, but as that makes development and debugging a bit harder, I would prefer to use some other serial interface.. (and now, it is not possible to use a mega, this is prototyping for a gpssystem that cannot be too large)