关于2407定时器的中断问题

[复制链接]
4654|10
 楼主| pangshen 发表于 2009-7-16 15:40 | 显示全部楼层 |阅读模式
本人是菜鸟,在此向高手请教!<br /><br />在2407中,想要用定时器1产生1Ms的定时时间,因此将定时器1设置为连续增计数方式的周期中断。弱弱的问一下,进入周期中断的条件是什么?是当计数器T1CNT的值等于周期寄存器T1PR内的值的时候呢?还是程序运行40000条指令之后呢?因为每条指令的时间是25ns。<br />此问题困扰很多天,希望高手给予回答。
utmostfirst 发表于 2009-7-16 18:46 | 显示全部楼层

回复

周期中段和执行多少条语句无关,当计数器的值和周期寄存器的值一样时,在没有更高优先级中段发生时,进入周期中段。不过周期寄存的值是和时钟频率有关的。
 楼主| pangshen 发表于 2009-7-17 08:34 | 显示全部楼层

回复

之前我也是这样认为,觉得当计数器的值和周期寄存器的值一样时就进入中断,但是实际好像不是这样,当计数器计数到周期寄存器中的值时,没有进入中断,而只是从0开始计数,这是为什么?<br />我是在中断设置了断点,进入中断后,单步执行,然后我就单步执行到计数器的值和周期寄存器的值一样,然后我观察发现,没有再次进入中断,而只是T1CNT从0开始计数而已
dy452876 发表于 2009-7-20 10:59 | 显示全部楼层

回复

我感觉<br />每进入中断<br />counter++;<br />if(basic&nbsp;counter==40000)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;counter=0;<br />}<br />你这里counter清0了吗?
ldyeah 发表于 2009-7-20 21:29 | 显示全部楼层

re

之前我也是这样认为,觉得当计数器的值和周期寄存器的值一样时就进入中断,但是实际好像不是这样,当计数器计数到周期寄存器中的值时,没有进入中断,而只是从0开始计数,这是为什么?<br />我是在中断设置了断点,进入中断后,单步执行,然后我就单步执行到计数器的值和周期寄存器的值一样,然后我观察发现,没有再次进入中断,而只是T1CNT从0开始计数而已<br />==============================<br />你中断要使能呀<br />中断要工作,首先总中断要打开(CLRC&nbsp;INTM)<br />其次是周期中断使能(EVAIMRA或EVAIMRB)<br />还有就是定时器使能(T1CON)<br />你这个情况有可能是前面两个中断使能的一个或两个没有打开
 楼主| pangshen 发表于 2009-7-21 13:35 | 显示全部楼层

回复

首先,先谢谢大家!<br />我的中断都是打开的,因为如果进入中断后不用单步执行,而只是点RUN的话,程序能够一次次的进入中断,因此表明中断是打开的。<br />5楼的意思我不是很明白,麻烦详细解释一下
ldyeah 发表于 2009-7-21 19:39 | 显示全部楼层

re

计数器T1CNT的值等于周期寄存器T1PR内的值的时候<br />因为定时器有单独的分频器,如果分频不为1,那么计时器的一个时钟周期和CPU得就不一样
 楼主| pangshen 发表于 2009-7-22 13:43 | 显示全部楼层

继续

计数器T1CNT的值等于周期寄存器T1PR内的值的时候<br />因为定时器有单独的分频器,如果分频不为1,那么计时器的一个时钟周期和CPU得就不一样<br />==============================<br />感谢ldyeah.我还是不太明白,你说的单独的分频器是指什么?是定时器控制寄存器T1CON的第10位到第8位吗?<br /><br />再者说,计数器T1CNT的值等于周期寄存器T1PR内的值的时候就进入中断,那为什么我的程序就没进入呢?<br /><br /><br />我的步骤是:<br />1、在中断设置了断点,点RUN,进入中断后,单步执行,然后我就单步执行到计数器的值和周期寄存器的值一样,然后我观察发现,没有再次进入中断,而只是T1CNT从0开始计数而已<br />2、在中断进入和跳出都设置断点,点RUN,进入中断后,点RUN&nbsp;,程序能够一次次的进入中断,跳出中断。这也说明了程序是没有问题的,但是通过步骤1,我就奇怪,到底周期中断的条件是什么?按理说,在步骤1中,应该也再次进入中断的呀?<br /><br />希望高手耐心给与解答!<br /><br />
 楼主| pangshen 发表于 2009-7-31 08:42 | 显示全部楼层

疑惑

为什么没有愿意解答了呢?
 楼主| pangshen 发表于 2009-8-19 09:38 | 显示全部楼层
大家给解答一下吧。本人是新手啦。谢谢啦
 楼主| pangshen 发表于 2009-8-25 15:59 | 显示全部楼层
关于这个问题,有人告诉我,是因为单步执行的时候,进入中断后,总中断关闭,所以不能再次进入中断,大家认为呢?我觉得还挺有道理的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

55

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部