Baud rate issues with Arduino

I am hoping someone can help me with some issues I am having with baud rates not working correctly in Arduino IDE.

I am connecting my Arduino pro mini (ATmega 328, 5v, 16 MHz) to USB port with FTDI friend. Xbee is S1 802.15.4.

I am having issues with the Arduino baud rates not working correctly with the xbee. Here is what I have been struggling with for the past couple of weeks…
When xbee and code are set for 38400 baud rate the Serial Monitor only displays correct data when the serial monitor baud rate is set to 19200. If I go and change all of the baud rates to 19200 the data only displays correctly when I change baud rate in serial monitor to 9600. It is like it only works at half of whatever baud rate is set (and therefore doesn’t work when I try to communicate with xbee).

Here is what I have tried so far:
Tried running with Arduino 1.0, 1.6.12, 1.0.5, 1.6.13, 1.6.6 - Same behavior.
Then I completely removed all installations of Arduino. Did a clean install of Arduino 1.8.1 Changed baud rate on USB port to 19200. Set Xbee and code to 19200. Still only got correct data in serial monitor at 9600 baud (just as it would only work at 19200 when set baud rates to 38400).

Xbee is mounted on Adafruit Xbee adapter. (Have also tried using sparkfun Xbee Explorer Regulated with no luck)

Checked VCC pin and got reading of 4.9, so I believe this is the Arduino pro mini 5v 16mhz as it should be.

I have also tried using several Xbees (S1) and that doesn’t make any difference.

I'm guessing the XBee has nothing to do with the problem. When you encounter a problem it's very important to remove any unnecessary complications so you narrow down the cause of the issue. Does it still occur if you just upload a simple test sketch without the XBee connected:

void setup() {

void loop() {}

Thank you so much for your response. I uploaded the simple code and everything worked at 19200. But I tried changing the baud rate in the code to 38400 and the baud rate in serial monitor to 38400 and it would not work. When the baud rate was set in the code to 38400 it would only work at 19200 setting in serial monitor. (I disconnected Xbee before doing this) My port settings for COM5 in my Device Manager are set at 38400 (for both tests).

Here are images of what I see in the serial monitor at 19200 and 38400.

This morning when I ran the test at 19200 it was no longer working correctly (see attached). It works at 9600, so only works at half speed. I sure hope someone out there has an idea. I don’t know what else to try.

Someone on the Digi forum has said that this could be an issue with the clock rate or the divisor or an issue with the crystal and that the problem does appear to be with Arduino.

I am not familiar with how to check or fix any issues related to that. Can someone please advise? Thanks.

I am really not sure about this but try adding this two lines of code in setup section then try that simple sketch again

CLKPR = 0x80;
CLKPR = 0x00;

Thank you for your reply! Before I do this can you please tell me what this will do?


It sets the clock divisor to 1 if there is any divisor problems this should solve it

Thanks - I'll give it a try.

Unfortunately that didn't fix the issue. The Serial Monitor is no longer displaying anything for the simple sketch. In other sketches it only works when set at half the baud rate.

Just found out the reason for my problems. I had ordered three pro-minis for my project and 2 out of the 3 were 3.3v 8MHz. When I checked voltage it was, of course, the only one that was 5v 16MHz so I thought that wasn't the issue.

Lesson learned. Gotta have a discussion with my supplier. Thanks everyone who tried to help. I feel like, and am, such a noob!

I had suspected that at first but then the fact it was working correctly at 19200 but not at 38400 made me think I was wrong because it should always half the baud rate when the wrong value of F_CPU is defined.