Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 2785|回復: 7
打印 上一主題 下一主題

【Arduino】序列埠速度問題

[複製鏈接]
跳轉到指定樓層
1#
發表於 2016-5-6 12:15:09 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最後由 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嗎?

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

麻煩您解釋摟
4#
發表於 2016-5-6 12:50:35 | 只看該作者
本帖最後由 超新手 於 2016-5-6 12:57 編輯

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

傳輸的方法是你自己寫的
你想用什麼方式是你自己決定的
你把程式
Serial.println(Sampling_time);
改成
Serial.write((char *)&Sampling_time, 4);
應該就可以了, 就是你要的4 個 BYTES
只是顯示的值是亂碼(或看不見), 但是只要接收端看的懂就好了
8#
 樓主| 發表於 2016-5-6 16:50:30 | 只看該作者
感謝您的回答~
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-11-22 12:35 , Processed in 0.326229 second(s), 9 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表