完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
在MCC 3.16中,在高优先级中断中测试PEI-位。为什么?正如我所理解的,这个比特并不总是被设置。下面我将MCC创建的中断函数封装在一个非常简单的项目中。包括两个定时器,一个在高优先级,一个在低优先级。这不是虫子,还是我错过了什么?该项目使用MPLABX V3.35、XC8 V1.38、MCC 3.16和PIC18F26K22建立。
|
|
相关推荐
19个回答
|
|
|
如果ISR是由另一个PEIE没有门控的源触发的,那么中断服务就不会被错误调用。这也是为什么要测试TMR1IE的原因。
|
|
|
|
|
|
查看PIC的中断图。计时器不会导致中断,除非PEIE和TMR5IE都已启用。因此,如果另一个不相关的中断触发,并且PEIE未启用,则中断不应该被服务。这是因为这是非常通用的代码,所以将cov如果你从不禁用PEIE,你可以取消检查。如果你从不禁用TMR5IE,你也可以取消。如果你需要增加中断速度或者减小代码大小。
|
|
|
|
|
|
您还可以在每次禁用计时器的中断标志时取消是否禁用计时器的检查,从而确保在禁用中断时设置TMR5IF标志符。可以节省大量的检查,并使您的中断更快。
|
|
|
|
|
|
是的,它是一只虫子。在高优先级和低优先级ISR中测试PEIE是错误的。如果禁用了低优先级中断(PEIE/GIEL=0),那么高优先级中断向量中的PEIE检查将跳过对高优先级中断的服务,从而将PIC锁定在ISR的无穷分支中。IEEE,也就是吉尔,不是“1”,那么所有低优先级中断被禁用。因此,在低优先级中断向量中的PEI校验是冗余的,并且浪费了循环和代码空间。事实上,当输入低优先级ISR时,PEIE/GIEL被清除为“0”,PEIE检查将把PIC锁定在ISR的无穷分支中。此外,如果启用了中断优先级,那么该位符号应该是GIEL而不是PEIE。
|
|
|
|
|
|
这就是为什么你读数据表,即使你认为你知道它。(在回答问题之前)悲伤:1.
|
|
|
|
|
|
我也有一种“1和0”的感觉,一眼就看不见了。有人说“臃肿”吗?!
|
|
|
|
|
|
所以,我是对的。谢谢你确认我的怀疑。我不知道为什么在测试过程中还没有发现这一点。用上面的PEIE测试来运行代码是不可能的。我认为如果你不使用高优先级和低优先级中断,测试是有效的,但是如果你做了,就没有效果。当然,删除测试是很容易的,但是每次重新生成代码时,都必须再次进行。
|
|
|
|
|
|
为您提供信息:我已经向微芯片报告了错误。
|
|
|
|
|
|
啊哈。我也没有考虑优先事项。当然,这是吉尔,而不是PEIE当优先权被启用。抱歉误导了对话。
|
|
|
|
|
|
这是我的第一个想法。我问我自己为什么他们会那样做。想出了一个错误的答案。
|
|
|
|
|
|
我真的怀疑它已经被测试过了。(即使中断优先级级别被禁用(兼容模式),在ISR中测试PEIE也是不常见的,更不用说在与中断启用和标记位相同的if()语句中进行检查了。如果您想跳过ISR中的外围中断,则更有效的方法是:在自己的if()语句中检查PEIE,特别是当有多个外围中断时,从外围中断中跳过,这样就不会设置它的中断标志(就像NorthGuy建议的计时器)。我从来不检查ISR中的PEIE,也很少需要检查ISR中的中断启用(IE)位。ISR应该是快的,并且在大多数情况下只检查中断标志(IF)位就足够了。
|
|
|
|
|
|
如果你只有一个[高优先级]中断,你甚至不需要检查IF标志,这样你就可以得到最小的等待时间。
|
|
|
|
|
|
是的,就像OP在第1章中的中断函数一样。D
|
|
|
|
|
|
这是代码生成器的问题。他们只能走这么远。他们遵循简单的规则。但对整个项目的过度审视更为困难。
|
|
|
|
|
|
这是当代软件开发者的问题。他们只能走这么远。他们遵循简单的规则。但对整个项目的过度审视更为困难。
|
|
|
|
|
|
这是当代软件开发者的问题。他们只能走这么远。他们遵循简单的规则。但是对整个项目的看法是比较困难的。
|
|
|
|
|
|
当然,自从我听说MCC以来,我就有这种感觉了。或者,2004的名字是什么?但是,我可以写真正的软件。我喜欢我的地位
|
|
|
|
|
|
我猜ISR*中的PEIE测试提醒我们,需要设置标志,以便ISR完全由依赖PEIE的硬件生成的中断来调用。我刚刚第一次使用MCC,不知道为什么我的定时器中断没有发生。我假设给定代码初始化了用于中断使用的定时器(在定时器初始化代码中设置定时器的中断启用),只要打开全局中断,定时器就会正常工作,但是MCC生成的代码中没有一个对PEIE执行任何操作,因此一旦我检查了定时器实际上正在运行,在ISR中引用PEI是一个关于检查和修复的有用提示。
|
|
|
|
|
|
这是一个糟糕的提醒方式。一个周期在每个中断中丢失,它可能帮助你开始。但它总是会降低性能,只需要在程序中禁用PEIE并启用IE就可以了。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
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:20 , Processed in 1.785123 second(s), Total 110, Slave 93 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1372