2

I am using Arduino Uno Rev 3, and according to this link we can achieve 2000000 baud rate.

This problem can be easily repeated by the following code:

void setup() {
 Serial.begin(2000000);
}
void loop() {
 int val = 234;
 Serial.println(val);
}

I am using the serial-USB cable. To read the data, I used Python pyserial (< 20 lines of code including empty lines and import lines):

import serial
import matplotlib.pyplot as plt
LEN = 10000
data = []
ser = serial.Serial('COM3', baudrate=2000000)
for i in range(LEN):
 try:
 data.append(int(ser.readline()))
 except:
 pass
ser.close()
# %% Plot data
plt.figure(figsize=(6, 4))
plt.plot(data)
plt.savefig('data.png')

Here is what I got:

Plot of data

Edit below

Chris mentioned a good point that it might be the high baud rate of 2,000,000 causing the instability. I did think about that when I first ran into this, but then I did a little trick: adding a sinusoid into the constant. If I do that, the weird spiking goes away! I think it indicate that this is not a high baud rate issue... Is it?

Code:

void setup() {
 Serial.begin(2000000);
}
void loop() {
 int val = 234;
 val += int(512 * (sin(float(millis()) * 0.01) + 1)) * 0.1;
 Serial.println(val);
}

Output:

Output

VE7JRO
2,51519 gold badges27 silver badges29 bronze badges
asked Apr 17, 2015 at 3:07
8
  • Your link overlooks many potential issues, such as buffer management in the USB converter. Just because the hardware UARTs can both divide a 16 MHz clock by 8, doesn't mean you can actually move bulk data at that rate reliably, or flush it through the USB backhaul before more comes in. Try capturing the actual data received. Commented Apr 17, 2015 at 3:43
  • Setting a high baud rate isn't necessarily going to move your data any faster anyway - if the bottleneck is elsewhere, it may just make it less reliable. For maximum throughput, look at a Leonardo-style board (or better yet, one of the ARM-based ones) as there, the baud rate is ignored and the USB will simply move the data as fast as the embedded processor can keep up with. Commented Apr 17, 2015 at 3:51
  • Please merge your two questions of today on this topic by editing all the content into one and deleting the other. Commented Apr 17, 2015 at 4:51
  • @ChrisStratton I thought about that too, but then if I do a little trick and add a sinusoid into it, it will transfer all right! I will update the OP now to show that. Commented Apr 17, 2015 at 5:20
  • 5
    You are probably just delaying things with the time consuming calculation, allowing time for something to catch up. Your overall problem is that your baud rate is unreliably high for one or more of the pieces in the chain. Commented Apr 17, 2015 at 5:43

0

Know someone who can answer? Share a link to this question via email, Twitter, or Facebook.

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.