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