[問題] URAT的溝通限制

作者: hogiking (***ˋ(  ̄▽ ̄)ˊ***)   2013-09-23 15:31:57
請問一下 如果想寫一個功能是
收到資料後 會回傳一個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就出問題了
想請問該怎樣解決這個問題
作者: deo2000 (800IM)   2013-02-11 05:30:00
看這個code應該是PIC 16bit up
作者: kikiqqp (喵食罐頭)   2013-09-23 16:41:00
兩次傳送間需要確認資料已經送出,UART很慢的,所以不建議在中斷內寫傳送(事實上連判斷我都不會在中斷內寫,除非只有做封包頭判斷)
作者: hogiking (***ˋ(  ̄▽ ̄)ˊ***)   2013-09-23 17:13:00
我改在中斷外也一樣狀況 我應該看到1234567 都會在6被切是否跟TSR有關??
作者: ksmrt0123 (ksmrt)   2013-09-24 00:55:00
1.程式要縮排 2.MCU型號 3.寫入TXREG前要測試TXIF

Links booklink

Contact Us: admin [ a t ] ucptt.com