大斧 发表于 2013-2-5 12:24:17

请教T0溢出中断时TCNT0不应该=0咩???

看图说话:
T1,T0都是普通溢出中断,T1为何TCNT1=0中断,而T0中断时TCNT0却等于1????





nicksean 发表于 2013-2-5 12:35:59

我认为中断发生后计数器继续在计数,所以在中断中看到的具体数据值要看计数频率高低了。

大斧 发表于 2013-2-5 12:52:40

这是设置寄存器状态TIFR改变来定点截的图,不是在源程序内设置断点。应该不存在截图延时。

大斧 发表于 2013-2-5 12:58:40

见鬼了!


shjw 发表于 2013-2-5 13:49:23

第一眼反应以为中断在程序里。后来说"设置寄存器状态TIFR改变来定点",是不是状态改变就中断,这个没有用过,怎么操作的?
这个问题我也很纳闷,T1和描述和T0是一样的,求解释

大斧 发表于 2013-2-5 14:15:55

shjw 发表于 2013-2-5 13:49 static/image/common/back.gif
第一眼反应以为中断在程序里。后来说"设置寄存器状态TIFR改变来定点",是不是状态改变就中断,这个没有用过 ...

点"暂停"开始仿真,不要点"开始".
再打开菜单"调试"-->Watch Window.往里面加要监视的寄存器或变量。

大斧 发表于 2013-2-5 14:48:09

原因找到乐:
当TCNT0=0xff时,在T0未计数前用软件写TCNT0=0x00后,当下一个计数周期到来时TCNT0=0x01,CPU会按上次欲置位的状态把TOV0置1!!
而当TCNT0=0xff时,在T0未计数前用软件写TCNT0=0x01到0xff的数,就不会发生这种错误.....

问题又来了:是M8 CPU有隐藏变量搞"欲置位"还是Proteus坑爹呢?{:huffy:}

shjw 发表于 2013-2-5 14:48:47

点"暂停"开始仿真,不要点"开始". -------这样也可以?
"调试"-->Watch Window   AVR Studio4.16没有这个,好久没有接触AVR了,版本没有升级级

大斧 发表于 2013-2-5 14:50:15

shjw 发表于 2013-2-5 14:48 static/image/common/back.gif
点"暂停"开始仿真,不要点"开始". -------这样也可以?
"调试"-->Watch Window   AVR Studio4.16没有这个, ...

哈哈,是Proteus+ICCAVR{:titter:}
页: [1]
查看完整版本: 请教T0溢出中断时TCNT0不应该=0咩???