今天我们说一下单片机的灵魂----时钟
单片机的时钟就像我们人类的心脏一样,不停地跳动才得以工作。在编写程序之前,一定要先了解时钟,没有时钟整个程序是运行不了的。那么这里小白就有个疑问。怎么去了解它,知道时钟的哪些东西才能更好的去编写程序呢?
我们学习时钟,分三个部分,输入、输出跟控制过程。输入即时钟的输入源,有哪些,比如晶振、RC振荡器等等。输出即这些个时钟最终是让位处理器的哪些部分正常的工作。过程就是我们如何去操作这些寄存器去选择时钟,更改频率,关闭相应的通道等等。下面就针对ARDUINO所运用到的ATmega2560这个avr单片机来说明。(以下简称2560)
首先通过数据手册我们可以找到一张时钟的逻辑图
从这张逻辑图中我们可以很清楚的看到整体分成3个部分,最上面的输出,最下面的输入,以及中间的控制过程。那么我们来整理一下:
输入:一共有6个时钟输入源
这里有个注意的地方,2560单片机上电默认的时钟是Calibrated Internal RC Oscillator,内部RC振荡器,频率是8MHz,被分频器分成1MHz
输出:一共有5个部分
1. The CPU clock is routed to parts of thesystem concerned with operation of the AVR core.
2. The I/O clock is used by the majority ofthe I/O modules, like Timer/Counters, SPI, and USART.
3. The Flash clock controls operation ofthe Flash interface.
4. The Asynchronous Timer clock allows theAsynchronous Timer/Counter to be clocked directly from an external clock or anexternal 32kHz clock crystal.
5. The ADC is provided with a dedicatedclock domain.
五个时钟分别控制不同的地方。
所谓的控制过程就是通过控制寄存器的相应的位置1或者置0来改变相应的选择。
时钟之所以是关键因为在执行任何的程序的的时候都需要时钟去赋予程序运行的规律或者说节奏,一般变成首先设置时钟,然后才能编写之后的内容,当然,阅读其他人的程序的时候首先要去找别人设置的始终是多少,以免有的时候改进他人程序的时候一头雾水。