Robofun 機器人論壇

標題: 【Arduino】序列埠速度問題 [打印本頁]

作者: mazda770    時間: 2016-5-6 12:15
標題: 【Arduino】序列埠速度問題
本帖最後由 mazda770 於 2016-5-6 12:29 編輯

目前如果我的baud rate設定為38400我寫一個迴圈計時器(利用micros函數)並且在程式端

float Sampling_time;

void loop()
{
println(Sampling_time);
}
序列埠輸出圖
[attach] [/attach]
上面顯示Sampling rate為0.0023sec
為什麼會這麼曼呢?理論值不是(38400/(32+2)=1129),1/1129=0.00088嗎?

請大神回答~
作者: 超新手    時間: 2016-5-6 12:36
應該是((8+2)*8)/38400=0.002083333
還蠻接近的....
作者: mazda770    時間: 2016-5-6 12:40
大大請問一下為什麼是  (8+2)*8 呢
我的認知是:
如果宣告的是float不是只有4byte的記憶空間也就是32位元
加上起始即收尾  32+2

麻煩您解釋摟
作者: 超新手    時間: 2016-5-6 12:50
本帖最後由 超新手 於 2016-5-6 12:57 編輯

你自己寫的 println, 已經把浮點數轉為字串
所以你才有辦法看懂
如果是傳binary, 應該是亂碼
所以是 0.0023\n\r 8 個bytes(加換行, 回車)
因為一個 byte 是 1 start+8data+1stop= 10 bits
所以是 80 bits
作者: mazda770    時間: 2016-5-6 13:50
高手~
可以再跟您請教幾個問題嘛!   
1.如果今天電腦不跟arduino作溝通,這樣取樣頻率就可能可以到10k hz以上了?如果用示波器看的話!
作者: mazda770    時間: 2016-5-6 13:53
以及如果我使用rs232或485作資料傳輸,一樣存在鮑率的限制,假設我要傳一個浮點數資料,他傳輸的過程的字元數是怎麼算的呢?也是字元或其他進位制嘛
作者: 超新手    時間: 2016-5-6 14:07
本帖最後由 超新手 於 2016-5-6 14:14 編輯

傳輸的方法是你自己寫的
你想用什麼方式是你自己決定的
你把程式
Serial.println(Sampling_time);
改成
Serial.write((char *)&Sampling_time, 4);
應該就可以了, 就是你要的4 個 BYTES
只是顯示的值是亂碼(或看不見), 但是只要接收端看的懂就好了
作者: mazda770    時間: 2016-5-6 16:50
感謝您的回答~




歡迎光臨 Robofun 機器人論壇 (https://www.robofun.net/forum/) Powered by Discuz! X3.2