下面是AVR微控制器的详细组成和相关参数的简介,对我们学习arduino有一定的辅助作用,当然刚开始用arduino可能会用不到,但是可以先了解一下。
目录
(一)外围功能
AVR微控制器的”心脏“是一块8位的CPU,但让它真正有用的是其内置的外围功能,这些功能被集成到IC(Integrated Circuit Chip),并带有CPU逻辑。比同类型的AVR设备,其外围功能也有所不同。有些只有一个定时器,而有些则有两个或更多(有的多达6个)。有些拥有10位的A/D转换器(ADC),而另一些的则为12位。所有AVR器件都为离散的数字信号提供双向I/O引脚。有些版本也提供触屏支持,以及其他一些交互接口。
这里将以ATmega168为例子进行讲解,并且只介绍通用的外围功能。当然更多的就需要查阅Atmel技术文档了。
1)控制寄存器
控制寄存器(CR0~CR3)用于控制和确定处理器的操作模式以及当前执行任务的特性。除了CPU中的32个通用寄存器之外,AVR设备也含有一些控制寄存器,它们用于控制I/O端口、定时器、通信端口以及其他功能的工作方式。控制寄存器的设置因设备类型的不同而不同,因为不同类型的设备可能会有不同数量的端口,以及不同的外围功能配置。
即使是ATmega168这类略显保守的AVR器件,也拥有很多内部功能。若每个引脚只分配一项功能,那么它所拥有的引脚是远远不够的。由于这个原因,AVR微控制器上的大多数引脚都能被重新配置为“基于控制寄存器中的设置执行特定功能”。因为引脚功能是可动态配置的,所以我们可以让一个引脚在某个时间点执行一种功能,然后当控制寄存器的值发生改变时,使其执行另一项功能。
比如,ATmega168采用的是28引脚的DIP封装方式,它的第12号引脚连接到PD6(端口D,位6),但它也可以被配置为中断源(PCINT22)、AVR内部模拟比较器(AIN0)的正向输入,或者用作定时器比较逻辑电路(Timer/Counter0输出比较匹配A)的输出,用于产生PWM(脉冲宽度调制)信号。
2)数字I/O端口
AVR微控制器使用双向I/O端口与外部世界进行通信。端口是一个8位的寄存器,它的部分位或所有位会被连接到AVR设备封装的物理引脚上。不同类型的AVR设备拥有不同数量的端口。
端口的每个引脚都由内部逻辑进行控制,这些内部逻辑管理着信号方向、内部上拉电阻的状态、计时以及其他功能。下面是AVR I/O端口的简图,图中Px表示point bit/pin x(0~7)。
由于功能控制逻辑复杂且巧妙,所以AVR端口能