标定的片内RC振荡器提供了固定的1.0、2.0、4.0 或8.0 MHz 的时钟。这些频率都是5V、25°C 下的标称数值。这个时钟也可以作为系统时钟,只要按照Table 9 对熔丝位CKSEL进行编程即可。
选择这个时钟(此时不能对CKOPT进行编程)之后就无需外部器件了。复位时硬件将标定字节加载到OSCCAL 寄存器,自动完成对RC振荡器的标定。在5V,25°C 和频率为1.0 MHz 时,这种标定可以提供标称频率 ± 1% 的精度。
当使用这个振荡器作为系统时钟时,看门狗仍然使用自己的看门狗定时器作为溢出复位的依据。更多的有关标定数据的信息请参见P249“ 标定字节” 。 选择了这个振荡器之后,启动时间由熔丝位SUT 确定,如Table 10 所示。XTAL1 和XTAL2 要保持为空(NC)。 振荡器标定寄存器- OSCCAL
· Bits 7..0 – CAL7..0: 振荡器标定数据 将标定数据写入这个地址可以对内部振荡器进行调节以消除由于生产工艺所带来的振荡器频率偏差。复位时1 MHz 的标定数据( 标识数据的高字节,地址为0x00) 自动加载到OSCCAL 寄存器。
如果需要内部RC振荡器工作于其他频率,标定数据必须人工加载:首先通过编程器读取标识数据,然后将标定数据保存到Flash 或EEPROM 之中。这些数据可以通过软件读取,然后加载到OSCCAL 寄存器。当OSCCAL 为零时振荡器以最低频率工作。
当对其写如不为零的数据时内部振荡器的频率将增长。写入0xFF 即得到最高频率。标定的振荡器用来为访问EEPROM 和Flash 定时。有写EEPROM 和Flash 的操作时不要将频率标定到超过标称频率的10%,否则写操作有可能失败。要注意振荡器只对1.0、2.0、4.0 和8.0 MHz 这四种频率进行了标定,其他频率则无法保证。 |