完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我试图找到最好的/最快的方式使用中断在变化(i-O-C)在睡眠模式和正常模式。i-O-C在RC7上激活一个正触发器。初始化如下:睡眠模式工作良好,正触发器唤醒2中的PIC。然而,在正常模式下,我使用ISR来捕获一个正触发器,使用下面提到的ISR。清除中断标志和复位MCU需要大约425U,这样我就失去了大量的数据。这是在运行时使用i-O-C进行反应的最快方式还是有另一种有效的方式?P.S.我不能使用SPI,因为它被用来连接其他设备。
|
|
相关推荐
19个回答
|
|
|
哪一个PIC?如果你要做一个ReSET(),为什么要做其他所有的事情?为什么要重新设置()?
|
|
|
|
|
|
PIC设备?那是你唯一的打扰吗?为什么中断()中断?SPI与国际奥委会有什么关系?在ISR.Ioc中不需要清除GIE和PEIE是一个外围中断。
|
|
|
|
|
|
很抱歉。我使用的PIC是PIC16LF1618运行在32兆赫。基本上,无论何时检测到RC7处的正触发器,我都希望进入while循环的顶部;在睡眠期间以及运行时。
|
|
|
|
|
|
PIC设备:PIC16LF1618是您的唯一中断:YES.the RESET()当中断时:为了尽快到达while循环,因为数据每隔15us更新一次。SPI。不需要清除ISR中的GIE和PEI:它在睡眠模式下与IO-C混淆。(来自PIC16(L)F1614/8数据表:如果用户试图从睡眠中醒来并恢复在线代码执行,INTCON寄存器的GIE和PIE位必须被禁用。如果启用了INTCON寄存器的GIE和PIE位,则执行将切换到中断服务例程。)如果两者都被激活,PIC将错过数据。在执行while循环时,也需要运行时的i-O-C。IOC是一个外围中断:与上面一样,谢谢。
|
|
|
|
|
|
重置一段时间。最好不要重置UC的速度。通过更改PrimeStices中的相应标志,可以在重置时省略编译器初始化。
|
|
|
|
|
|
我不认为你需要一个中断。启动后,检查你的情况。如果它在那里,你跳到执行。如果没有,你去睡觉等待过渡,然后你醒来你去执行。
|
|
|
|
|
|
RESET()将导致程序从复位向量重新启动,执行所有的启动代码。这很可能要花很长时间。
|
|
|
|
|
|
这是我的初始化代码:我甚至尝试过一种方式,其中初始化仅在上电后执行一次,并且每次从睡眠模式醒来时都使用标志(最初为零)验证初始化。
|
|
|
|
|
|
@NorthGuy:问题在于,如果正触发器在[//执行您所做的任何事情]代码中发生,那么它必须从while循环的开始重新开始。
|
|
|
|
|
|
注意,除非发生触发器,否则你根本不会去做任何事情。一旦你完成了[//做任何事情],它将等待下一个。如果触发器在[//做任何事情]期间发生,你想发生什么?
|
|
|
|
|
|
RESET()将导致程序从复位向量重新启动,执行所有的启动代码。这可能要花很长时间。有没有比REST()更快捷的方法来到达while循环的顶部?
|
|
|
|
|
|
注意,除非发生触发器,否则你根本不会去做任何事情。一旦你完成了[//做任何事情],它将等待下一个。如果触发器在[//做任何事情]期间发生,你想发生什么?我想继续监控RC7的积极触发器。[//随便做什么]代码需要大约35个用户才能完成,这有时会跳过出现在PORTC的传入GPIO数据。新数据出现在每15个美国,而在执行这一数据时,可能需要大约32个美国,另一组数据可能出现。然后,我必须转储以前的数据并获取最新数据。
|
|
|
|
|
|
方法有1种。在数据处理期间,如果在地平线上有新的数据,则可以频繁地检查新数据并放弃处理。方法2。您启用中断,并从ISR内部接收所有数据。你把数据存储在别处,设置一个新数据已经到达的标志。一旦完成了正在进行的数据处理,它检查标志,如果有新的数据,则清除标志,从缓冲区复制新数据并处理它。方法3。一旦你得到一个中断,你清理堆栈(不是真正必要的,因为你的堆栈是圆形的),并返回到你的处理例程的开始。CyWo要做SETJMP(),但我不认为XC8支持它,所以你可能需要在汇编程序中写几行来完成这一点。方法4。优化处理程序,这样就需要更少的时间。
|
|
|
|
|
|
***
|
|
|
|
|
|
方法5。使用更快的图片。微笑:
|
|
|
|
|
|
禁用堆栈溢出/下溢复位,然后它将是简单的:& lt;编辑& gt;添加PaxESEL。
|
|
|
|
|
|
禁用堆栈溢出/下溢复位,然后它将是简单的:& lt;编辑& gt;添加PasiSel.谢谢1和0。我尝试了没有中断例程,但没有工作。我需要添加ISR例程和MyIsIr(),像这样吗?对不起,如果我没有抓住要点。
|
|
|
|
|
|
“不起作用”是什么意思?你必须给我们更多的工作。不,我的函数取代了不必要的上下文保存拖动的中断函数。
|
|
|
|
|
|
“不起作用”是什么意思?你必须给我们更多的工作。不,我的函数替换了不必要的上下文保存可能会拖动的中断函数。我在度假,我无法公布结果。我可以证实这个问题现在已经解决了。你的功能起作用了。我甚至尝试了下面提到的代码,这也是可行的。我的逻辑分析器不知从MCU中提取SPI输出,这导致了所有的混乱。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475 浏览 0 评论
5794 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1124浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1098浏览 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 10:53 , Processed in 0.951787 second(s), Total 78, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3460