百思不得其解----求助ECT模块OC时钟问题(急!)
- UID
- 148086
- 性别
- 男
|
|
|
|
|
|
- UID
- 148086
- 性别
- 男
|
|
|
|
|
|
- UID
- 146851
- 性别
- 男
|
TRCE置1,对TCNT清零,那么中断就不会再产生,
如果把TRCE再次清零的话,那定时的时间还是由时钟决定。
达不到我们想要的定时时间,这该怎么办啊? |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
TCRE对TCNT清零后,TCNT会继续从零开始计数,中断还会继续发生。所以TCRE的用法就相当于一个模数,把TCNT由自由运行计数器变成了模数计数器。 |
|
|
|
|
|
- UID
- 146851
- 性别
- 男
|
原来是我把TC0跟TC7的赋值放太前面了,导致TC0跟TC7都是0。所以进不了中断。 |
|
|
|
|
|
- UID
- 175217
- 性别
- 男
|
关于楼主的程序,我有四个问题想请教一下版主(我对程序作了一些修改,用MC9S12DG128B的PORTB口的小灯作测试,程序见后)
(1)按照版主的意思,当TC0=TCNT的时候产生中断,而TC0=125,依我的理解,TCNT先从0开始计数,当计数到125时,产生中断;中断执行完后,TCNT从125起继续计数,一直计数到65535溢出,然后再从0开始计数,当计数到125时产生中断,依此类推....你们都不是这种说法,不知道是谁对?
(2)我试了楼主的程序,的确是当i=5时,小灯明灭转换像是间隔一秒,但是我觉得要使i=5,必须要产生五次中断,而依版主的意思,产生一次中断的时间为1s,五次中断就是五秒,这是否矛盾呢?我发现中断程序中没有清中断的语句,是不是因为这个缘故呢?
(3)版主不是说TC0是不变的吗?那为什么中断程序又要写上TC0=125呢?而且,我发现如果把TC0=125去掉的话,八只小灯会全亮,这怎么解释呢?
(4)我发现一个奇怪的现象,当中断程序中的i=1时,会出现PB口的低三位和高三位小灯维持亮的状态不变,中间两只小灯保持熄灭状态。取i=2,才会出现交替亮灭的情况,交替时间为2到3秒,取i=5,像前面所说的交替时间为1秒,取i=10时,交替时间又像是2至3秒,当i取更长时,交替时间会更长。似乎i=5时交替时间最短,而当i<5或者i>5时交替时间都大于1s,请问怎么解释这个现象?
可能有些东西我没看明白,请多多指教!http://bbs.chinaecnet.com/uploadImages/OUTPUT COMPARE.rar |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
当使用输出比较功能时,TC0只是一个比较参考值。当TCNG=TC0时,会产生中断。TCNT会一直继续计数,不管是否产生中断。 |
|
|
|
|
|
- UID
- 175217
- 性别
- 男
|
第一个问题算是明白了,可是后面的问题呢?i=5时交替时间为1秒,这怎么计算? |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
问题出在你设置了TSCR1的TFFCA位为1,此时需用写TC0的方法清中断标志C0F。但是用写TC0的方法清中断标志似乎有问题(具体什么问题还要再仔细看看)。最好的方法是设置TFFCA位为0,然后在中断中用TFLG1_C0F=1的方法来清中断,你就可以看到正确的运行状态了。 |
|
|
|
|
|