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

看板ASM (組合語言)作者 (渾沌與秩序)時間4年前 (2020/03/18 20:51), 4年前編輯推噓1(1015)
留言16則, 6人參與, 4年前最新討論串1/1
大家好,先感謝前篇回覆熱心的大大們 受到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 這問題已經完全超出我能力了 要請教大家,這會是什麼問題? 謝謝大家~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.165.197.146 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/ASM/M.1584535887.A.106.html ※ 編輯: aaa7513231 (1.165.197.146 臺灣), 03/18/2020 20:53:48

03/18 21:01, 4年前 , 1F
42 32 0 175 231是錯的,那正確的數據應是什麼?
03/18 21:01, 1F

03/18 21:09, 4年前 , 2F
可以參考第一張圖的Channel 2 應該讀到8碼
03/18 21:09, 2F

03/18 21:09, 4年前 , 3F
42 3 2 0 239 221 206
03/18 21:09, 3F

03/18 21:55, 4年前 , 4F
想不到問題出在哪耶... 請問你的溫濕度計是哪個?
03/18 21:55, 4F
溫濕度計我是用GR8000 這是台灣一家自己生產的,因為我想這不是很重要就一直沒說

03/18 22:23, 4年前 , 5F
隨便猜 while裡的 delay(50)拿掉
03/18 22:23, 5F
delay我有拿掉,是什麼影響,畢竟收到的資料都已經現存Rx的暫存器了

03/18 22:46, 4年前 , 6F
亂猜 修改通訊參數 9600,N81改成其他的試試
03/18 22:46, 6F
8N1也沒什麼關係~

03/19 08:54, 4年前 , 7F
先用個buffer存資料,把printf拿掉,等資料收完再printf
03/19 08:54, 7F

03/19 08:54, 4年前 , 8F
出來,另外delay拿掉。
03/19 08:54, 8F

03/19 08:57, 4年前 , 9F
另外把溫度sensor型號列出來,不然誰知道資料是不是正確
03/19 08:57, 9F

03/19 08:57, 4年前 , 10F
03/19 08:57, 10F

03/19 09:03, 4年前 , 11F
delay是ms等級的,你延遲500會不會w太久了。
03/19 09:03, 11F
原本500ms是因為Modbus訊號通常要等300ms以上比較安全我才這樣寫的~

03/19 18:15, 4年前 , 12F
大概是Serial的時序跑掉了吧
03/19 18:15, 12F

03/19 18:16, 4年前 , 13F
我覺得問題應該就跟N大講的一樣,有錯位或時序問題,但我其實不清楚為什麼這樣 最後,這問題我改用SoftwareSerial的Serial就可以正常讀取 很神奇吧~謝謝大家的熱心回覆,我想應該是Serial的底層讀取方式有差異 所以導致的問題 謝謝~ ※ 編輯: aaa7513231 (1.165.197.146 臺灣), 03/19/2020 19:47:24 ※ 編輯: aaa7513231 (1.165.197.146 臺灣), 03/19/2020 19:49:21

03/20 08:53, 4年前 , 14F
你怎麼會產生modbus訊號延遲會比較久的錯覺,你應該是要
03/20 08:53, 14F

03/20 08:53, 4年前 , 15F
看spec去決定你的接收延遲時間才對。
03/20 08:53, 15F

04/21 22:55, 4年前 , 16F
接收中怎能用print來浪費時間,更糟的是delay |||^_^
04/21 22:55, 16F
文章代碼(AID): #1USXbF46 (ASM)
文章代碼(AID): #1USXbF46 (ASM)