完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
你好,我用的是PIC16F1887。我有一个旋转编码器服务的积极和消极的边缘两个“改变中断”引脚。它运行良好,不会错过任何过渡。编码器是手动控制,因此每秒旋转2-3次。我有一个陀螺仪/加速度计例程,需要10mS才能执行,而且每20mS就有一个TMR中断来维修它。它也工作得很好,并且能够快速地跟踪应用程序。然而,当我使用这两个例程时一起编码器中断错过一些边缘过渡,我想这是因为一些边缘过渡发生在10mS执行时间的陀螺例程。我如何能绕过这个问题?将陀螺仪中断改为50ms对编码器有好处,但陀螺仪响应太慢。16F不具有优先中断。
|
|
相关推荐
5个回答
|
|
|
陀螺仪/加速度计例程是可中断的。我的意思是,如果在中间发生中断,它会受到伤害吗?如果是,那么可以将它从中断例程移到主循环。然后,您可以运行它回或当计时器翻滚(您可以检测到它的IF标志)。它可以双向工作,如果不是,就把它变成可中断的。否则,唯一的办法是将陀螺仪/加速度计程序分成较小的程序,并在它们之间处理编码器。
|
|
|
|
|
|
没关系。这样一来,每个陀螺仪都会有10毫秒。如果其他的例行程序花费的时间太长,就把它们分开:假设有足够的时间来运行所有程序,这应该可以工作。另外,你可以试着在陀螺仪例行程序上工作,试图使它更快。
|
|
|
|
|
|
嗯,我明白了。我想我明白了。不幸的是,主回路中另一个程序的执行时间根据因素而变化,因此使得陀螺程序在可变时间发生。我想我可以设置一个中断计时器,这样我就可以用一个延迟来填充另一个例程,这样它总是同时完成的。考虑到
|
|
|
|
|
|
嗨,您可能需要将陀螺仪程序和/或主程序的其他部分划分成较小的部分,这些部分可以在彼此之间调用。考虑在什么时间需要完成哪些任务,以及需要完成多少时间。如果总和比所有时间都多,那么您可能必须用不同的方式做某事。
|
|
|
|
|
|
我懂了。好的,谢谢。我要试一试,让陀螺更快一些。我升级到XC8PRO模式,将执行时间从20ms减半到10ms,这都是C代码。汇编代码会产生多大的差异?考虑到
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
514 浏览 0 评论
5819 浏览 9 评论
2351 浏览 8 评论
2238 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3546 浏览 3 评论
1170浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1124浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
893浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
514浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-18 02:09 , Processed in 0.841573 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3110