定时器/计数器预分频器
ATmegal28单片机内部提供两个10位的预定比例分频器,一个给T/C0独自用.另一个给其他3个T/C共用。
图2—1 9为T/C0预定比例分频器结构。T/C0预分频器的输入时钟称为clkT。。默认情况下,clkT0与系统主时钟clkI/0连接。若置位ASSR的AS0,T/C0将由引脚TOSCl异步驱动。使得T/C0可以作为一个实时时钟。如果AS0置位,则TOSCl和TOSC2从端口C脱离。引脚上即可外接一个时钟晶振(内部振荡器针对32.768 kHz的钟表晶体进行了优化)。不推荐在T0SCl上直接施加时钟信号。T/C0的可能预分频选项有:clkTOS/8、clkT0s/32、clkTOS/64、clkTOS/128、clkTos/256和clkToS/1024。此外还可以选择clkToS和0(停止工作)。置位SFIOR寄存器的PSR0则复位预分频器,从而允许用户从可预测的预分频器开始工作。
图2—20为T/Cl、T/C2、T/C3预定比例分频器结构图。T/Cl、T/C2、T/C3的时钟源可以来自内部,也可以来自外部Tl、T2、T3。当CSn2:0=1时,系统内部时钟直接作为T/C的时钟源,这也是T/C最高频率的时钟源ƒCLK-I/0,与系统时钟频率相同。预分频器可以输出4个不同的时钟信号ƒCLK-I/0/8、ƒCLK-I/0/64、ƒCLK-I/0/256或ƒCLK-I/0/1 024。
由Tn引脚提供的外部时钟源可以用作T/C时钟clkT1/ClkT2/clkT3。引脚同步逻辑在每个系统时钟周期对引脚Tn进行采样,然后将同步(采样)信号送到边沿检测器。图2—21给出了Tn同步采样与边沿检测逻辑的功能等效方框图。寄存器由内部系统时钟clkI/0的上跳沿驱动。当内部时钟为高时,锁存器可以看作是透明的。CSn2:0=7时,边沿检测器检测到一个正跳变时产生一个clkT1/clkT2/clkT3脉冲;CSn2:0=6时,一个负跳变就产生一个clkT0脉冲。
由于引脚上同步与边沿检测电路的存在,引脚Tn上的电平变化需要延时2.5~3.5个系统时钟周期才能使计数器进行更新。禁止或使能时钟输入必须在Tn保持稳定至少一个系统时钟周期后才能进行,否则有产生错误T/C时钟脉冲的危险。为保证正确的采样,外部时钟脉冲宽度必须大于一个系统时钟周期。在占空比为50%时,外部时钟频率必须小于系统时钟频率的一(ƒEXtCLK<ƒCLK-I/0/2)。由于边沿检测器使用的是采样这一方法,它能检测到的外部时钟最多是其采样频率的一半(Nyquist采样定理)。然而,由于振荡器(晶体、谐振器与电容)本身误差带来的系统时钟频率及占空比的差异,建议外部时钟的最高频率不要大于ƒCLK-I/0/2.5。外部时钟源不送入预分频器。
>特殊功能I/O寄存器——SFIOR
>Bit7——TSM:T/C同步模式
TSM置位时寄存器PSR0和PSR32 1保持其数据直到被更新,或者TSM被清零。此模式对同步T/C非常有用。通过设置TSM和合适的PSR,相关的T/C将停止工作,然后被配置为具有相同的数值。一旦TSM清零,这些T/C立即开始同时计数。
>Bit l——PSR0:T/C0预分频器复位
置位时,T/C0的预分频器复位。操作完成后这一位由硬件自动清零。写入零时不会引发任何动作。若T/C0是由内部CPU时钟驱动的,则此位读返回值永远为零。如果T/C0工作于异步模式,则这一位置位后一直保持到预分频器复位操作真正完成。
>Bit 0——PSR321:T/Cl/2/3预分频器复位
置位时预分频器2复位。操作完成后这一位由硬件自动清零。写人零时不会引发任何动作.同时作用于T/Cl/2/3.
【电子街】推荐阅读: