[问题] 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