完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
HI -我写了一些代码(见下文)使用中断发送和接收超过UART的数据。我发现:当使用PC(腻子)发送数据时,PIC代码接收超过2个字符。当我切换到蓝牙模块(HC-05)时,一次只能向PIC发送2个字符。为了ADC目的,我有一个定时器中断(TMR0)设置为20ms间隔。在里面,我有一个Primff(),它通过UART发送我需要的数据。如果我增加这个中断,比如说,1s或者移除printf(),那么UART就能够通过蓝牙模块接收超过2个字符。作为测试,我试着在RX中断被调用时禁用所有中断(停止TMR0中断),但是似乎没有帮助。为全双工做错事不工作?
|
|
相关推荐
9个回答
|
|
您正在启用中断,但我没有看到中断处理程序。
|
|
|
|
这是处理程序…我只使用RX中断。顺便说一下,“command”变量只是我用来调试的(我用它来关闭在TMR0 ISR中通过UART发送数据——在发送停止时,RX工作正常)。正如我所说,RX在PC上使用油灰而不是通过蓝牙发送的时候效果很好。
|
|
|
|
这个ISR是非常糟糕的,IMO.,我是说,呼叫USAARTH接收…
|
|
|
|
达里奥,怎么了?中断处理程序是否只需捕获接收到的字符?
|
|
|
|
是的,可能避免调用其他函数,因为它会产生很多开销(寄存器保存等)。是的,只获得一个字符并返回:没有字符串比较,没有本地数组:只需设置一个标志,让主代码处理所有内容,也许当接收到CR/LF或类似命令时。
|
|
|
|
我同意达里奥的说法,那是一些不好的代码。如果你的ADC和定时器正在产生中断,你将永远不会到达你的UART代码。试着把每个部分放在一个单独的IF状态IF TIMER....{}如果ADC…{}如果UART…{}
|
|
|
|
嗨,你用哪一张照片?哪个蓝牙模块?当做
|
|
|
|
在从缓冲区读取新字节之前必须处理错误,否则您将丢失错误信息,在这种情况下,您有什么建议?复制和调整ISR内部的函数,以避免开销,但是保持函数在临时变量中存储所有内容、错误和缓冲区,然后处理ISR之外的事情?
|
|
|
|
是的,ISR应该只处理一个字符(如果出现错误),存储它并引发一些标志(可能当看到EOT或CR/LF时),以便字符串主要被处理。
|
|
|
|
只有小组成员才能发言,加入小组>>
5160 浏览 9 评论
1998 浏览 8 评论
1927 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3170 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2225 浏览 5 评论
727浏览 1评论
612浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
501浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
626浏览 0评论
524浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 01:17 , Processed in 1.430718 second(s), Total 94, Slave 77 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号