完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
您好,我正在与APIC32 MX512…使用6 UART和RS485。一切都在工作,接收,传输,一切都被中断驱动。但我不满意我的传输中断程序(半双工),问题是从发送切换到接收。如果FIFO为空,或者在最后一个字节移位到移位寄存器的时刻,则产生发送IRQ。这就是问题所在。在这一时刻,我无法将发射机从发送切换到接收,或者最后一个字节丢失。但是如果我在这个时候关闭发送IRQ,我不知道最后一个字节是什么时候发送的。但是在发送最后一个字节之后,我需要在短时间内(<50us)从发送切换到接收。所以我只发现了两种可能性,这两种都不是我想要的。一种方法是,让中断启用并轮询TRMT,这种方法的缺点是中断被连续调用。另一种方法是在fifo中写入一个虚拟字节,并在生成irq时取消传输并切换。只要发射机没有偏移一点就行,但这取决于irq-late.。有人知道如何以更好的方式解决这个问题吗?前进中的THX
|
|
相关推荐
16个回答
|
|
|
谢谢你的回答,我也在考虑这个问题,但是我没有正确的策略来解决6个UARTS,在最坏的情况下,它们都以9.6K到115kbit之间的不同数据速率运行……
|
|
|
|
|
|
你已经有一个定时中断了吗?多快?如果它至少是10kHz,那么只需要为每个UART设置一个计数,当UART达到零时它将反转方向。也就是说,如果从停止位发送一个半毫秒延迟直到您反转方向,这是否重要。
|
|
|
|
|
|
我有2个定时器运行,一个每10MSEC和另一个100MSEK。有点慢……我在所有的UART MODBUS协议上运行,所以在最坏的情况下,在115KBIT中,我需要在50U中切换。
|
|
|
|
|
|
在发送最后一个字符后,禁用ISR外部的TX中断和轮询TMT位。
|
|
|
|
|
|
可能是一个解决方案,但是主C不够快。周转时间约为500美元,慢十倍。Modbus协议的主要问题是时序问题。我可以加快系统,但目前的消费高。是爆炸区域的应用(ATEX I组,IA,M1),我为每一个MA战斗。
|
|
|
|
|
|
你的主应用程序能容忍TX中断中至少有一个字符发送时间的代码阻塞吗?我认为你将被迫在ISR内部投票TrMT(但只在最后一个字符)。如果所有的UART同时运行,那么你需要在ISR内部的状态机在等待TrMT的时候继续维护它们。
|
|
|
|
|
|
我能行,我还没试过。我已经在TX中断了状态机。如果我以前知道这个问题(在制作HW之前我没有详细阅读文档),我就用2个Pins来控制tx/rx,并且当我在rx中断中得到最后一个字节时就切换了。但是硬件已经准备好了,整个应用程序不是关键的,除非从发送到接收切换。我得试试看。在阻塞中断产生时钟延迟的情况下,我不知道SPI连接的行为。我想,这不是问题。但我只是猜测……,我想我现在才明白……。你说的是所有ISR中的一种“分布式”状态机。这是个好主意!
|
|
|
|
|
|
你尝试过基于非中断的TX吗?我通常避免这样做:你也说你的整个应用程序不是时间关键的,所以…
|
|
|
|
|
|
不,我没有。原因是图片中的bug。签发44份勘误表。如果对外围设备进行写入,同时中断发生,则字节可以写入两次。当传输在ISR中时,这个问题不会发生。事实上,我不知道这种情况会发生多久。当我为所有6个UART和一个SPI服务时,我想可能是。
|
|
|
|
|
|
嗯,我知道了。也许你可以在那个时候禁用IRQs(不确定你是否能或如果它也能处理勘误表)。
|
|
|
|
|
|
不幸的是没有。如果我移动出去,大约10个字节,9K6BD大约10MSEC。在那个时候,另一个UART我也能收到10个字节。最糟糕的是,一个信道正在以115kbit运行……我想我必须和我的虚拟字节一起工作,并且希望发射机在我退出传输之前不能太快地移出起始位。
|
|
|
|
|
|
我还使用6个UART和RS-485。我在TX INT中添加了阻塞延迟。
|
|
|
|
|
|
在最后一个字节被转移到移位寄存器的时候,你会这样做吗?
|
|
|
|
|
|
当我使用测试包时,我已经启用了TX INT。
|
|
|
|
|
|
遗憾的是,这个勘误从来没有被解决过:
|
|
|
|
|
|
这个勘误表是我使用哑字节的原因。在我的第一个版本中,我启用了中断,测试了最后一个字节的TRMT,然后切换了DE/WR Pin,禁用了TX irq,但有时我在接收器上看到一个奇怪的行为,我只能用这个bug来解释。奇怪的是,更高数据量带来了问题。我希望这个问题的速率较低,因为需要更长的时间来生成停止位。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
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 04:04 , Processed in 1.309929 second(s), Total 102, Slave 85 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2239