hjw_1314 发表于 2008-5-10 00:02:12

请教马老师及各位坛友:mega16 TC1处于PWM模式时,OCR值为TOP或是BOTTOM时OC引脚的输出

这段时间在用mega16,碰到一个问题想请教下大家。
WGM(13:0)=8,COM1A1:COM1A0=10,COM1B1:COM1B0=11,ICR1=0x0190,OCR1A=0x0190,OCR1B=0x190
按照手册在相位与频率修正模式时,依据前面的设定,OCA在升序计数匹配时清0,降序计数匹配时置1,OCB反之。
当比较寄存器AB中的取值与ICR1相等时(也就是等于TOP值时),我根据手册时的理解输出应该为OCA=1,OCB=0。
但结果却不是这样,当我在proteus中仿真运行时,得到的结果却是OCA=0,OCB=1。
现在我不知道自己在哪方面没有注意到,在此请教马老师及各位坛友。谢谢

==============================================================================
附程序:
TCCR1A=0xB0;//相位与频率修正模式,不预分频,A上升匹配清零,B取反
TCCR1B=0x11;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x01;
ICR1L=0x90;
OCR1AH=0x01;
OCR1AL=0x90;
OCR1BH=0x01;
OCR1BL=0x90;
===============================================================================
刚又试了,只要不设OCR的值为TOP或是BOTTOM的值,仿真波形一切正常,如果设了的话,proteus仿真时示波器就没波形,根据mega16引脚颜色判断可知OCA=0(绿),OCB=1(红),此时OCR值为TOP;当OCR值为BOTTOM时,OCA=1(红),OCB=0(绿);这个结果跟手册恰恰相反,我是赞同手册上说的,只是不明白自己现在错在哪里,请各位指点指点!!
===============================================================================
刚没办法,烧程序到mega16,用示波器测,一切正常,看来是仿真的问题,可能是我电脑忍受不了极端,呵呵,不过还是想请教大家为什么极限值时仿真会出问题。

hjw_1314 发表于 2008-5-10 09:20:09

怎么没有人回答我???是问题太简单了??

hjw_1314 发表于 2008-5-10 11:03:11

没人理我,我等马老师

hl0716 发表于 2008-5-10 11:53:42

同问,你最好贴程序,让别人看看那里设置问题

hjw_1314 发表于 2008-5-10 13:31:10

WGM(13:0)=8,COM1A1:COM1A0=10,COM1B1:COM1B0=11,ICR1=0x0190,OCR1A=0x0190,OCR1B=0x190
有关TC1的设置都在这里哟,PWM发波都是正常的,只要OCR不设TOP值

machao 发表于 2008-5-11 12:57:27

软件仿真不是万能的.1.有些功能不能仿真出来;2.仿真软件有BUG.

因此,最终看实际运行效果.

你可以在AVR STUDIO中用软件模拟一下,如果结果同proteus不同,而与手册一致的话,就证明proteus有BUG.
页: [1]
查看完整版本: 请教马老师及各位坛友:mega16 TC1处于PWM模式时,OCR值为TOP或是BOTTOM时OC引脚的输出