完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我有一个新的板与一个新的MCU和AM调试代码的第一次。我用的是一颗16MHz的晶体。我有RS232RX工作,但TX不工作。我接收和解析消息,但是当我发送确认消息(6字节)时,MCU TX2(在管脚RD6上)的输出在大约50kHz的50%占空比下,大约是10个脉冲。波特率设置为19.2K,再次,接收没有问题。对于TX,我正在查询TX2IF,以查看TXRG2何时准备好另一个字节,因此在阻塞模式下。鉴于RX工作完美,波特率设置和RC设置都很好。考虑到MCU实际传输的东西,告诉我大多数init的东西也很好。谁能想到什么会导致这种行为?初始化代码:TX代码
|
|
相关推荐
13个回答
|
|
|
下面是之前没有提交的代码,为了简洁起见。cu,进入电平转换器。我可以在传输之间启用tx端口,这在论坛上比较常见。我不认为这与我的问题有关,但我会试着把它放在init之后,看看这是否有区别。
|
|
|
|
|
|
所以看来我错了,在传输之间禁用TX2肯定会引起问题。我想我没有足够的时间在启用和传输或其他东西之间。我还没有脱离困境。如果我简化主循环只发送一个字节如下:它没有问题。如果我将字节放入缓冲区,然后将它们从缓冲区中拉出来以便基于任务进行传输,那么我只能发送2个字节,然后必须等待40多个周期才能使tx缓冲区准备好。我被抓到,我必须把延迟设置为200个周期,然后才最终进入“尝试& gt;= 10”的状态。当然,由于这种延迟,RS-232传输会受到影响。不知道是什么原因使得传输模块一直忙碌。如上所述:我的tx代码基于:“一旦TXREGx寄存器将数据传送到TSR寄存器(在一个TCY中发生),TXREGx寄存器就空了,并且设置了TXxIF标志位,“不知道如何实现轮询,或者硬件中的某些东西是否阻止端口传输。
|
|
|
|
|
|
在19.2K波特时,每个字节需要大约520us来传输。一旦您向TXREG中写入2个字节,TXREG和TSR都已满,并且TXREG在TSR稍后清空520us之前不再可用。
|
|
|
|
|
|
哦,天哪,它在传播!谢谢你指出的非常明显。传输后的500秒的延迟解决了问题:-!非常感谢!!
|
|
|
|
|
|
我不认为这是一个解决方案。你是否清除了Pr3BITXTX2?
|
|
|
|
|
|
TX2IF是只读位。软件不能直接清除它。当TX2RG可以接受一个字符时,它被设置。当TSR是活动的并且TX2RG具有等待传输的字符时,这是显而易见的。
|
|
|
|
|
|
TX2IF是只读位。软件不能直接清除它。当TX2RG可以接受一个字符时,它被设置。当TSR是活动的,TX2RG有一个等待传输的字符时是很清楚的。假设是所有FuxKuPS的母亲。谢谢。
|
|
|
|
|
|
TX2IF是只读位。软件不能直接清除它。当TX2RG可以接受一个字符时,它被设置。当TSR是活动的,TX2RG有一个等待传输的字符时是很清楚的。假设是所有FuxKuPS的母亲。谢谢。然而,对EUSART状态/中断标志的适当轮询将导致一种解决方案,该解决方案将防止在不使用任意(和阻塞?)延误。
|
|
|
|
|
|
我可以在中断或任务的基础上执行消息传输。我不能有效地运行足够快的时间来执行一个周期任务中的传输,同时运行其他任务。当我发现这个芯片上的中断实现真的很烦人(TXxIF被设置,即使TXxIE被禁用,等等),我选择执行TX任务为基础,在这种情况下,我阻止。由于我只希望在不执行任何其他基本任务的情况下周期性地发送消息,所以我接受阻塞。因此,如果检查每1U 500 x或我等待500次,然后检查每5U到10X,如果TX2IF清除之后,有什么区别?
|
|
|
|
|
|
使用这个“特性”的一种方法是使用循环缓冲区进行输出。当缓冲区中有某种东西时,启用中断。当缓冲区为空时禁用中断。EUSART在繁忙时将清除中断标志,从而暂停中断,直到TXREG可以接受另一个字节。
|
|
|
|
|
|
这就是PIC工作中的所有中断。IF标志是无论如何设置的,因此您可以轮询它,并且IE标志用于将信号传送到中断生成器。因为你没有任何东西可以传播。
|
|
|
|
|
|
哇,我没意识到这一点。我一直认为如果IE位被设置,IF标志只被设置。我必须回去检查我的一些代码,它可能在我不打算运行的时候运行。
|
|
|
|
|
|
WB,感谢循环缓冲区的代码。我通常远离它们,因为它们是调试的痛苦,但代码使它看起来诱人:-)。我知道,它们效率更高。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1124浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1095浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
873浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 05:30 , Processed in 2.360788 second(s), Total 98, Slave 81 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1060