首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

定时器中断

定时器中断

请教大家一个问题:
MC9S12DP256单片机
我用了一个定时器溢出中断
如果中断函数里的程序的运行时间大于中断周期,会出现什么样的结果呢?
也就是说,进入中断以后,中断里面的程序还没运行完的时候,定时器又产生下一次中断了,这时程序怎么执行啊?是继续执行还是从中断的第一个语句开始执行啊?
你这样的程序设计本身是不合理的,中断函数里不应执行过多的任务,中断函数一般完成清中断标志位,设置状态标志位,而把主要的任务教给主函数
可是我想做PID运算,而PID的计算不是需要循环的吗?所以我把PID的计算程序放到了中断函数里。
3# benbentl PID可是涉及到乘法运算的了,乘法运算不是单片机的强项,不应在中断里进行这些运算,可以设一个标志位
版主,我现在的思路是这样的:
用一个定时器溢出中断,进入中断的时候就开始采样,并与设定值进行比较,进行PID计算,每进一次中断就进行一次采样并进行一次PID的计算,直到实际值和目标值的偏差达到我设定的精度。
请版主帮我看看我这个思路对不对。

按照版主所说,我可不可以这样理解:在中断里设一个标志位,比如说当进入中断500次后,我就设flag=1,而在主函数里有类似这样的语句:if(flag==1){//PID函数}
是这样吗?
5# benbentl 嗯,我的想法是这样的没错,具体的你可以试下,看下效果会不会更好
你的pid计算肯定要放for循环里头,中断里头做很少的计算要不占用Ram会很多吧。中断只是做个Pid计算的频率控制。
返回列表