[問題] URAT的溝通限制

看板ASM作者 (***ˋ(  ̄▽ ̄)ˊ***)時間10年前 (2013/09/23 15:32), 編輯推噓1(106)
留言7則, 4人參與, 最新討論串1/3 (看更多)
請問一下 如果想寫一個功能是 收到資料後 會回傳一個20 Bytes的封包的功能 會推薦怎樣寫 目前在寫的時候碰到了瓶頸 使用rx中斷的方式來接收資料 想先寫個測試結果發生問題 想說收到一筆資料後 如果首位判定是0xAA 就抓資料 進行回傳(中斷內執行) 封包長度固定是20Bytes void __attribute__((interrupt, shadow, no_auto_psv)) _U2RXInterrupt() { int tmp=0; IFS1bits.U2RXIF = 0; while(!U2STAbits.TRMT); if( U2STAbits.OERR ) // if overrun, clear OERR flag U2STAbits.OERR = 0; tmp = U2RXREG; U2TXREG = 49; } 如果我在電腦端送任意一個值 這樣我在電腦端看到的東西會是1(ascii) 基本上問一答一都沒問題 但是如果改成 U2TXREG = 49; U2TXREG = 50; 前面一次傳 1~4都沒問題 依序收到12 1212 121212 12121212 當我輸入到第5個值的時候 開始出現問題(回傳沒有出現 會漏) U2TXREG = 49; U2TXREG = 50; U2TXREG = 51; 變成傳1~3沒問題 123 123123 123123 傳4就出問題了 想請問該怎樣解決這個問題 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.68.71.35

09/23 16:41, , 1F
兩次傳送間需要確認資料已經送出,UART很慢的,所以不建
09/23 16:41, 1F

09/23 16:42, , 2F
議在中斷內寫傳送(事實上連判斷我都不會在中斷內寫,除非
09/23 16:42, 2F

09/23 16:42, , 3F
只有做封包頭判斷)
09/23 16:42, 3F

09/23 17:13, , 4F
我改在中斷外也一樣狀況 我應該看到1234567 都會在6被切
09/23 17:13, 4F

09/23 17:14, , 5F
是否跟TSR有關??
09/23 17:14, 5F

09/24 00:55, , 6F
1.程式要縮排 2.MCU型號 3.寫入TXREG前要測試TXIF
09/24 00:55, 6F

12/11 05:30, , 7F
看這個code應該是PIC 16bit up
12/11 05:30, 7F
文章代碼(AID): #1IF-vmk1 (ASM)
文章代碼(AID): #1IF-vmk1 (ASM)