智能车制作

标题: PIT定时中断问题,无法解释 [打印本页]

作者: CQQ    时间: 2013-3-5 21:45
标题: PIT定时中断问题,无法解释
使用PIT0定时中断和LPTMR计数器来获取编码器的脉冲,定时中断周期为10ms
如果在main函数里面的for(;;)中只放入获取脉冲值的代码,程序可以进入中断,
而一旦在for(;;)中添加了AD采集显示函数,舵机控制函数,程序就无法进去中断了,
这是为什么啊?
难道是这些函数之间有冲突?
这段程序我已经调试了三天了,没有一点突破,急啊!
求大神帮我解答解答!

作者: qurrer    时间: 2013-3-5 22:06
这个可能是其它函数执行的时间过长吧
作者: 穆旦阿斗    时间: 2013-3-5 22:33
会不会你AD和显示里面有比PIT0优先级更高的中断呢?
作者: CQQ    时间: 2013-3-5 22:51
qurrer 发表于 2013-3-5 22:06
这个可能是其它函数执行的时间过长吧

恩,不知道是不是这个问题,AD是采集100次取均值然,使用了七路AD,然后在显示出来,
但是中断来临,程序转去处理中断程序,讲现在执行的程序压入堆栈,保护现场,然后响应完后再继续从堆栈中取出数据继续执行,
这个和函数的执行时间长短关系不是很大吧?
如果我取的是1ms一次定时中断周期,程序可以进入中断,
这是为什么?
难道和各个模块的时钟周期有关系?


作者: CQQ    时间: 2013-3-5 22:52
穆旦阿斗 发表于 2013-3-5 22:33
会不会你AD和显示里面有比PIT0优先级更高的中断呢?

不知道啊,AD里面不会有中断啊
作者: qurrer    时间: 2013-3-6 10:22
CQQ 发表于 2013-3-5 22:51
恩,不知道是不是这个问题,AD是采集100次取均值然,使用了七路AD,然后在显示出来,
但是中断来临,程序 ...

[attach]41471[/attach]你试试用中断循环计数器,每次进中断只执行一个函数,这样可以保证每次进中断不会超时

作者: kakado    时间: 2013-3-30 13:49
我也遇到这个问题了,我用一个中断实现1ms采样,采样10次后跳回main函数的for循环里面做舵机转向处理,但是它没有运行,而且舵机用比例控制,宏定义的Kp在反馈回来的数据中显示无定义,另外,当我把舵机转向处理也放进中断子程序之后,它能够运行......现在还在找原因中......




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2