我创建了一个微控制器电路,基于我在互联网上找到的最常用的电路——它使用外部晶体。据我所知,Atmega16 有一个内部振荡器,默认工作频率为 1 MHz。因此,微控制器可以在没有外部晶体的情况下使用。但现在我很困惑——我的微控制器电路需要外部晶体吗?我只是在使用 ADC、USART 和 LM35。我不知道内部振荡器是否足够、好或等等。
那么,我们什么时候需要为我们的微控制器使用外部晶体呢?
我创建了一个微控制器电路,基于我在互联网上找到的最常用的电路——它使用外部晶体。据我所知,Atmega16 有一个内部振荡器,默认工作频率为 1 MHz。因此,微控制器可以在没有外部晶体的情况下使用。但现在我很困惑——我的微控制器电路需要外部晶体吗?我只是在使用 ADC、USART 和 LM35。我不知道内部振荡器是否足够、好或等等。
那么,我们什么时候需要为我们的微控制器使用外部晶体呢?
我能想到的两个主要原因是...
您希望以比内部振荡器更高的时钟速度运行。对于您提到的 Atmega16 芯片,内部振荡器的最大速度为 8MHz,但您可以使用外部晶振以高达 16MHz 的速度运行该芯片。
您需要精确而准确的时间。通过一些努力,您可以将内部 RC 时钟校准到 +/1% 的精度,但是一个便宜的(1 美元)16MHz 晶体可以精确到 0.005%(50ppm)。内部 RC 振荡器对温度和电压变化也更敏感,因此外部晶体通常会更稳定。
您为什么要关心提高最大时钟速度?以两倍的速度运行意味着您可以在同一时间内完成两倍的工作,或者在一半的时间内完成相同数量的工作。或者您可以以双倍的频率生成/计数信号。
你为什么要关心有一个精确和准确的时钟?也许您想在本地跟踪您已经运行的秒数。1 周后,您可以使用 %1 振荡器关闭一个多小时,而使用 50ppm 晶体您应该在半分钟内关闭。或者您可能会关心非常短的时间——例如,生成串行数据位,在链路任一侧偏离 1% 可能足以导致帧错误。