标题:
定时器中断
[打印本页]
作者:
benbentl
时间:
2011-3-19 23:48
标题:
定时器中断
请教大家一个问题:
MC9S12DP256单片机
我用了一个定时器溢出中断
如果中断函数里的程序的运行时间大于中断周期,会出现什么样的结果呢?
也就是说,进入中断以后,中断里面的程序还没运行完的时候,定时器又产生下一次中断了,这时程序怎么执行啊?是继续执行还是从中断的第一个语句开始执行啊?
作者:
hlxldb
时间:
2011-3-21 08:37
你这样的程序设计本身是不合理的,中断函数里不应执行过多的任务,中断函数一般完成清中断标志位,设置状态标志位,而把主要的任务教给主函数
作者:
benbentl
时间:
2011-3-22 10:58
可是我想做PID运算,而PID的计算不是需要循环的吗?所以我把PID的计算程序放到了中断函数里。
作者:
hlxldb
时间:
2011-3-22 13:18
3#
benbentl
PID可是涉及到乘法运算的了,乘法运算不是单片机的强项,不应在中断里进行这些运算,可以设一个标志位
作者:
benbentl
时间:
2011-3-22 15:52
版主,我现在的思路是这样的:
用一个定时器溢出中断,进入中断的时候就开始采样,并与设定值进行比较,进行PID计算,每进一次中断就进行一次采样并进行一次PID的计算,直到实际值和目标值的偏差达到我设定的精度。
请版主帮我看看我这个思路对不对。
按照版主所说,我可不可以这样理解:在中断里设一个标志位,比如说当进入中断500次后,我就设flag=1,而在主函数里有类似这样的语句:if(flag==1){//PID函数}
是这样吗?
作者:
hlxldb
时间:
2011-3-23 11:08
5#
benbentl
嗯,我的想法是这样的没错,具体的你可以试下,看下效果会不会更好
作者:
transmission
时间:
2011-3-24 08:30
你的pid计算肯定要放for循环里头,中断里头做很少的计算要不占用Ram会很多吧。中断只是做个Pid计算的频率控制。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0