完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
嗨,我试着用自动波特特性在PIC24F上设置UART。我缺少的是一种检测接收字符是否不同于“U”的方法,因为接收机FIFO没有更新。如果已经发送了另一个ASCII字符呢?我在汇编程序中感谢。
|
|
相关推荐
8个回答
|
|
|
嗨,我没有使用过自动波特特性,但是从图21-11(DS39708B)和文本来看,看起来Rx中断位被设置成可以在Rx ISR中设置一个制动点,并且在监视窗口中查看BRG寄存器和/或读取Rx缓冲区。
|
|
|
|
|
|
如果我没记错的话,你不能使用除了“U”以外的字符作为autobaud,因为这将导致一个方波作为“字符”,而这正是UART的自动baud部分正在寻找的,以获得正确的计时。我不希望ISR触发或接收字符。(我甚至不确定它是否认为‘U’是在这种情况下被接收的。”苏珊
|
|
|
|
|
|
您好,阅读文档,中断被设置,ABAUD位在接收到第5条边后“清除”。其思想是保持在自动波特例程中,直到接收到正确的“U”为止(以使其防错)。所有其他字符都包含少于5条边,因此BRG计数器应该溢出,并且永远不要产生中断,也不要清除ABAUD。使用PIC16有一个BRG溢出位来覆盖这种情况并重新启动等待“U”,但是使用PIC24需要更智能一些;-)谢谢。
|
|
|
|
|
|
嗨,所有这些都花了一些时间来完成硬件,但现在我可以测试AutoBod了。我正在研究一款pic24FJ64GA002(ID修订=3003),带有内部时钟和4x锁相环。在一个简单的循环中,等待中断标志U1RXIF被设置并发送一个“U”到MCU,为U1BRG填充8个115200波特发射器。这样就好了。对于其他波特率也是如此。当发送其他诸如“U”之类的东西时,需要至少2个字符来设置中断标志并退出循环。然而,U1BRG与发送者的相应波特率值无关。(检查这个值可能是一个简单的解决方案,我也注意到了看似合理的值,但是并不正确)下一个想法是添加一个超时并重新启动自动波特计数器。不幸的是,这个代码的反应和上面描述的完全一样。我也检查了硅错误表,但是没有变得更加明智。我是否在代码中犯了逻辑错误,或者我不能把傻瓜放在终端上?谢谢你帮助汉斯
|
|
|
|
|
|
AFAIK,autobaud功能只设计用于专用用户软件,该软件知道发送“U”直到从PIC得到正确的答案。这样,它将完美无瑕地工作。如果您希望为任意数据设计真正的自动波特,那么这将是更复杂的任务。一般来说,我无法想象需要通用的任意字符流自动波特特性的场景。是否应该识别并保持所有的第一个字符?或者允许掉一些(多少钱?)调整程序的数据?在自动调谐过程中有没有数据流的假设?
|
|
|
|
|
|
嗨,Nikolay,用户软件知道发送“U”之前,它可以发送“命令”到PIC。因此,不需要复杂的算法来检测“在飞行中”的波特率(这将是一个不错的项目…)。在一些罕见的情况下,用户软件可以在这个文件处于autobaud init时向PIC发送字符。比“U”被发送到图片,并给予视觉反馈与LED“同步”。在PIC16家族中,BRG寄存器有一个超额位,说明出错了。不幸的是,PIC24单片机上缺少这个位。如前文所述,来自发送方的字符串将终止自动波特过程,并将错误值填充BRG。我的PIC程序只是在初始化之后等待发送者的角色。我还没有测试它,但在这种情况下,我猜会产生框架错误。我可以用它来重新启动UART初始化,但这是绕道而行。
|
|
|
|
|
|
如果用户SW正在发送“U”,并且您的情况符合经典场景,那么我建议您尝试以这种方式实现自动波特:将UART配置为按名义(预期)速率正常操作。在正常模式下启用UART,准备接收数据(不是自动波特)。使用PPS特性将Rx输入映射到“输入捕获”模块输入。AFAIK可以通过PPS两个监听器连接到一个物理输入引脚。使用输入捕获特性,您可以随时测量UART Rx引脚上的脉冲。甚至在接待过程中。这种方法允许您在消息之间实现某种包含一系列“U”的前导或测试信号,以更新调优,从而即使在环境发生严重变化的情况下也确保长期连接稳定性。这样,你就可以自动为消息基础重新配置能力。
|
|
|
|
|
|
嗨,Nikolay,我试着在FCY/8上运行一个计时器,与BRG时钟并行。一旦RX线变低并且在达到0xFFFF时中断,则启动计时器。同时,AutoBoD也正在运行。发送一个“U”正确地终止进程,发送另一个字符进入定时器中断。但是,如果发送了不止一个字符,BRG寄存器就会被更新为错误的值。我想我在定时器设置中犯了一个错误。我将调查您的方法。它更复杂,但确实应该在一个稳定的连接中让步。谢谢你的主意。如果我酿造了一些有用的东西,我会把它寄给汉斯。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
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 03:48 , Processed in 3.141139 second(s), Total 86, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1247