打印

关于2407定时器的中断问题

[复制链接]
3568|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pangshen|  楼主 | 2009-7-16 15:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人是菜鸟,在此向高手请教!

在2407中,想要用定时器1产生1Ms的定时时间,因此将定时器1设置为连续增计数方式的周期中断。弱弱的问一下,进入周期中断的条件是什么?是当计数器T1CNT的值等于周期寄存器T1PR内的值的时候呢?还是程序运行40000条指令之后呢?因为每条指令的时间是25ns。
此问题困扰很多天,希望高手给予回答。

相关帖子

沙发
utmostfirst| | 2009-7-16 18:46 | 只看该作者

回复

周期中段和执行多少条语句无关,当计数器的值和周期寄存器的值一样时,在没有更高优先级中段发生时,进入周期中段。不过周期寄存的值是和时钟频率有关的。

使用特权

评论回复
板凳
pangshen|  楼主 | 2009-7-17 08:34 | 只看该作者

回复

之前我也是这样认为,觉得当计数器的值和周期寄存器的值一样时就进入中断,但是实际好像不是这样,当计数器计数到周期寄存器中的值时,没有进入中断,而只是从0开始计数,这是为什么?
我是在中断设置了断点,进入中断后,单步执行,然后我就单步执行到计数器的值和周期寄存器的值一样,然后我观察发现,没有再次进入中断,而只是T1CNT从0开始计数而已

使用特权

评论回复
地板
dy452876| | 2009-7-20 10:59 | 只看该作者

回复

我感觉
每进入中断
counter++;
if(basic counter==40000)
{
    counter=0;
}
你这里counter清0了吗?

使用特权

评论回复
5
ldyeah| | 2009-7-20 21:29 | 只看该作者

re

之前我也是这样认为,觉得当计数器的值和周期寄存器的值一样时就进入中断,但是实际好像不是这样,当计数器计数到周期寄存器中的值时,没有进入中断,而只是从0开始计数,这是为什么?
我是在中断设置了断点,进入中断后,单步执行,然后我就单步执行到计数器的值和周期寄存器的值一样,然后我观察发现,没有再次进入中断,而只是T1CNT从0开始计数而已
==============================
你中断要使能呀
中断要工作,首先总中断要打开(CLRC INTM)
其次是周期中断使能(EVAIMRA或EVAIMRB)
还有就是定时器使能(T1CON)
你这个情况有可能是前面两个中断使能的一个或两个没有打开

使用特权

评论回复
6
pangshen|  楼主 | 2009-7-21 13:35 | 只看该作者

回复

首先,先谢谢大家!
我的中断都是打开的,因为如果进入中断后不用单步执行,而只是点RUN的话,程序能够一次次的进入中断,因此表明中断是打开的。
5楼的意思我不是很明白,麻烦详细解释一下

使用特权

评论回复
7
ldyeah| | 2009-7-21 19:39 | 只看该作者

re

计数器T1CNT的值等于周期寄存器T1PR内的值的时候
因为定时器有单独的分频器,如果分频不为1,那么计时器的一个时钟周期和CPU得就不一样

使用特权

评论回复
8
pangshen|  楼主 | 2009-7-22 13:43 | 只看该作者

继续

计数器T1CNT的值等于周期寄存器T1PR内的值的时候
因为定时器有单独的分频器,如果分频不为1,那么计时器的一个时钟周期和CPU得就不一样
==============================
感谢ldyeah.我还是不太明白,你说的单独的分频器是指什么?是定时器控制寄存器T1CON的第10位到第8位吗?

再者说,计数器T1CNT的值等于周期寄存器T1PR内的值的时候就进入中断,那为什么我的程序就没进入呢?


我的步骤是:
1、在中断设置了断点,点RUN,进入中断后,单步执行,然后我就单步执行到计数器的值和周期寄存器的值一样,然后我观察发现,没有再次进入中断,而只是T1CNT从0开始计数而已
2、在中断进入和跳出都设置断点,点RUN,进入中断后,点RUN ,程序能够一次次的进入中断,跳出中断。这也说明了程序是没有问题的,但是通过步骤1,我就奇怪,到底周期中断的条件是什么?按理说,在步骤1中,应该也再次进入中断的呀?

希望高手耐心给与解答!

使用特权

评论回复
9
pangshen|  楼主 | 2009-7-31 08:42 | 只看该作者

疑惑

为什么没有愿意解答了呢?

使用特权

评论回复
10
pangshen|  楼主 | 2009-8-19 09:38 | 只看该作者
大家给解答一下吧。本人是新手啦。谢谢啦

使用特权

评论回复
11
pangshen|  楼主 | 2009-8-25 15:59 | 只看该作者
关于这个问题,有人告诉我,是因为单步执行的时候,进入中断后,总中断关闭,所以不能再次进入中断,大家认为呢?我觉得还挺有道理的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

55

帖子

0

粉丝