校准的ATmega88片内 RC 振荡器提供了固定的 8.0 MHz 的时钟 这是在 3V、25 C 下的标称数值。 器件出厂时CKDIV8熔丝位已经被编程,请参见 P31”系统时钟预分频器” 。按照Table11 对熔丝位 CKSEL 进行编程即可将其作为系统时钟。
选择这个时钟之后就无需外部器件了。复位时硬件将标定字节加载到 OSCCAL 寄存器,自动完成对 RC 振荡器的标定。在3V、25 C 时,这种标定可以提供标称频率 ± 1%的精度。 通过改变 OSCCAL 寄存器,标定可以使振荡器在 7.3 - 8.1 MHz 的范围内的精度达到 ± 1%。
当使用这个振荡器作为系统时钟时,看门狗振荡器继续为看门狗定时器和溢出复位提供时钟。更多的有关标定数据的信息请参见 P259” 校准字节 ” 。 选择了这个振荡器之后,启动时间由熔丝位 SUT确定,如 P28Table12 所示。 振荡器标定寄存器- OSCCAL
· Bits 7..0 – CAL7..0: 振荡器标定数据 将标定数据写入这个地址可以对内部振荡器进行调节以消除由于生产工器频率偏差。这在芯片复位时自动完成。 25°C 时振荡器频率为 8.0 MHz。应用软件可对 该寄存器进行写操作来改变振荡器频率。振荡器频率范围在 7.3 - 8.1 MHz 内标定精度可达到 ±1%以内,频率超出此范围则无法保证。
注意该振荡器用来为 EEPROM与 Flash 的写访问定时,从而对相应的时序产生影响。如果需要对 EEPROM 或 Flash 执行写入操作,不要将频率标定到高于 8.8 MHz。否则对EEPROM 或 Flash 的写操作将会失败。
CAL7位决定振荡器工作范围。将该位置0给出低端频率范围,而将该位置1则给出高端频率范围。这两个频率范围是有重叠的,也就是说 OSCCAL = 0x7F 给出的频率高于OSCCAL = 0x80。
CAL6..0位 用来调节被选中范围内的频率。设置为0x00表示该范围中的最低频率,设置为0x7F表示该范围中的最高频率。 当频率范围在7.3 - 8.1MHz时,CAL6..0中的值增加1频率值增加低于 2%。 |