SparkFun Forums 

Where electronics enthusiasts find answers.

For the discussion of Arduino related topics.
#183190
Hi all,

I am interfacing an RN-XV to an older PC at 2400 baud. It works perfectly, no data is dropped when connected directly. Not using flow control.

However, I'd like to introduce an Arduino Uno (actually, a MicroView) into the middle of the setup to eventually do some real-time data translation. This mostly works, but when there is a large burst of incoming data, a few characters get dropped and the data gets a slightly garbled, but it does recover.

Helpful diagram:

Image

Code:
Code: Select all
#include <SoftwareSerial.h>

SoftwareSerial mySerial(8, 9); // RX, TX

void setup()  
{
  Serial.begin(2400);
  mySerial.begin(2400);
}

void loop() // run over and over
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}
Nothing to it, right? I'm having a hard time believing that the Uno can't keep up, especially at such a low baud rate, but I'm sure there are background issues with interrupts and so on introduced by SoftwareSerial. Initial guess is that a buffer is filling up somewhere, but I'm not an expert on the innards.

Any suggestions?