[問題] Arduino Serial port rx 解析資料錯誤

作者: aaa7513231 (渾沌與秩序)   2020-03-18 20:51:25
大家好,先感謝前篇回覆熱心的大大們
受到Y大的啟發,我利用邏輯分析器分析發現不是485晶片的問題
可以參考下圖,我直接分析Arduino的Tx與Rx訊號
https://upload.cc/i1/2020/03/18/cO4LC3.png
485晶片回傳TTL訊號到Rx這端訊號是正確的
但是Arduino讀取時,不知名原因數據錯誤如下圖所示
https://upload.cc/i1/2020/03/18/bwCP31.png
附上我Arduino讀取的程式碼
https://upload.cc/i1/2020/03/18/IDMrBv.png
Arduino版為 Mega R3
這問題已經完全超出我能力了
要請教大家,這會是什麼問題?
謝謝大家~
作者: alibuda174 (阿哩不達)   2020-03-18 21:01:00
42 32 0 175 231是錯的,那正確的數據應是什麼?
作者: aaa7513231 (渾沌與秩序)   2020-03-18 21:09:00
可以參考第一張圖的Channel 2 應該讀到8碼42 3 2 0 239 221 206
作者: alibuda174 (阿哩不達)   2020-03-18 21:55:00
想不到問題出在哪耶... 請問你的溫濕度計是哪個?
作者: chuegou (chuegou)   2020-03-18 22:23:00
隨便猜 while裡的 delay(50)拿掉
作者: alibuda174 (阿哩不達)   2020-03-18 22:46:00
亂猜 修改通訊參數 9600,N81改成其他的試試
作者: easypro   2020-03-19 08:54:00
先用個buffer存資料,把printf拿掉,等資料收完再printf出來,另外delay拿掉。另外把溫度sensor型號列出來,不然誰知道資料是不是正確的delay是ms等級的,你延遲500會不會w太久了。
作者: n666160   2020-03-19 18:15:00
大概是Serial的時序跑掉了吧https://upload.cc/i1/2020/03/19/WeMVKc.png
作者: easypro   2020-03-20 08:53:00
你怎麼會產生modbus訊號延遲會比較久的錯覺,你應該是要看spec去決定你的接收延遲時間才對。
作者: smtmike   2020-04-21 22:55:00
接收中怎能用print來浪費時間,更糟的是delay |||^_^

Links booklink

Contact Us: admin [ a t ] ucptt.com