完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在运行简单的代码来测试time2,但是它看起来是两次火。我编程定时器2以每1000nsec触发一次,并在RE4上切换I/O线路,但它似乎在800nsec触发,然后再次在1000nsec触发。如果我添加一行额外的代码,那么时间就可以了,它每1000毫秒发射一次。我附上了样本代码。有人知道发生了什么事吗?硬件:PIC32MZ启动器套件,内置DDRAM//*****************************************************void Initialize(void){init_Timer2();T2CONbits.TON=1;//启用定时器2执行一次引导闪存,而(1){}init_Timer2(){/*初始化定时器2外围设置*//关闭定时器T2CONbits.TON=0;//Pre-Scale=1:1 T2CONbits.TCKPS=0;//Set T2.=PR2=100;//ISR每1000nsecs(100000000/100)//Clear计数器TMR2=0;/*初始化定时器2中断控制器设置*//将中断优先级设置为7IPC2bits.T2IP=7;//重置定时器2int中断标志IFS0bits.T2IF=0;//启用定时器2IEC0bits.T2IE=1的中断;/*将PIC32MZ影子寄存器集分配给特定的CPU IPL*/PRISS=0x76543210;/*为多向量模式设置中断控制器*/INTCONSET=_INTCON_MVEC_MASK;}/*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************如果我对此行进行注释n此ISR在1000 nSIFS0BITS中执行两次。T2IF=0;/RESET中断标志}
|
|
相关推荐
2个回答
|
|
您没有列出预四次拨号代码,但在我的脑海中,您可能在ISR中做得太多了。在1000ns,您已经给出了处理器(假设为200MHz)200条指令,以便在每次触发定时器中断之间执行。缓存丢失、总线上的停顿,甚至ISR上执行的预编码和后编码都会像疯子一样吞噬这200条指令。第一条建议:向ISR添加no_fpu属性,以便它不会保存/恢复FPU寄存器。第二条建议:确保切换函数不使用第三个建议:使用CLR寄存器,使其原子化,并且更快,而不是读/修改/写操作:
|
|
|
|
谢谢你的回复。我的问题不是ISR没有足够的时间。事实上,这是另一种方式。当我注释一行切换LED的代码时,问题就出现了。我正在使用的MCU版本没有FPU,所以在ISR中保存FPU寄存器的问题确实出现了。PRE4toggle大约需要40nsecs。如果ISR耗尽时间,我会看到PRE4以2000nsecs进行切换(错过所有其他中断),但实际上它在800nsecs进行切换,然后再次以1000nsecs进行切换!ISR发射在800 NSECs不应该发生。
|
|
|
|
只有小组成员才能发言,加入小组>>
5238 浏览 9 评论
2028 浏览 8 评论
1950 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3204 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2253 浏览 5 评论
777浏览 1评论
666浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
595浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
676浏览 0评论
576浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 02:06 , Processed in 1.354592 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号