xstdcl 发表于 2008-2-2 15:12:07

请教马老师《高档8位单片机ATmega128原理》中关于相位可调PWM模式的论述

马老师:你好!
    请教你大作《高档8位单片机ATmega128原理》第108页倒数第3行中讲述相位可调PWM模式时说道:“比较寄存器的数值则决定了输出脉冲的起始相位和脉宽”。我对这句话一直理解不了,我觉得比较寄存器的数值只能决定脉宽,不知道比较寄存器的数值是怎么决定起始相位的?如果马老师有时间能否说得详细点。最好能举个简单的例子。
    能否用ATmega128的16位定时器T/C1产生3个周期相同,占空比不同且有一定相位差的方波?
    非常感谢!

machao 发表于 2008-2-2 17:07:19

1.参考下面的相位可调PWM的时序图:TOP值决定了PWM的频率(周期),那么在一个PWM周期中(0-->TOP-->0)TCNT1要2次与比较匹配寄存器相同.假定:
T0P=100,OCR1A=50:在TCNT1的加1过程和减1过程中.2次为50,产生脉冲,宽度为100,发生点为50(50为起始相位)
TOP=100,OCR1A=40:在TCNT1的加1过程和减1过程中.2次为40,产生脉冲,宽度为120,发生点为40(40为起始相位,相位比上面提前了10)

因此,改变了比较寄存器的值,不但脉冲宽度变化了,变化起点也不同,这就是相位改变了.

2.可以

xstdcl 发表于 2008-2-3 09:48:24

马老师:
    非常感谢,已经明白了。
    作为您的学生真是幸福。只要是您的书我都买了,通过看您的书明白了好多以前不懂的东西。
    提前给您拜年了。祝身体健康,工作顺利,多出好书。
    另,你的《M128》中74页EIMSK和EIFR寄存器应是R/W,而不只是R;77页中寄存器SFIOR第1位应是PSR0。不知道我的理解对不对?
页: [1]
查看完整版本: 请教马老师《高档8位单片机ATmega128原理》中关于相位可调PWM模式的论述