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