看板 ASM 關於我們 聯絡資訊
請問一下 如果想寫一個功能是 收到資料後 會回傳一個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
kikiqqp:兩次傳送間需要確認資料已經送出,UART很慢的,所以不建 09/23 16:41
kikiqqp:議在中斷內寫傳送(事實上連判斷我都不會在中斷內寫,除非 09/23 16:42
kikiqqp:只有做封包頭判斷) 09/23 16:42
hogiking:我改在中斷外也一樣狀況 我應該看到1234567 都會在6被切 09/23 17:13
hogiking:是否跟TSR有關?? 09/23 17:14
ksmrt0123:1.程式要縮排 2.MCU型號 3.寫入TXREG前要測試TXIF 09/24 00:55
deo2000:看這個code應該是PIC 16bit up 12/11 05:30