arduino笔记4:AVR微控制器 + 外围功能

下面是AVR微控制器的详细组成和相关参数的简介,对我们学习arduino有一定的辅助作用,当然刚开始用arduino可能会用不到,但是可以先了解一下。

 

目录

(一)外围功能

1)控制寄存器

2)数字I/O端口

3)8位定时器/计数器

正常模式(Normal mode)

CTC(Clear Timer on Compare)模式

快速PWM模式

相位校正PWM模式

4)16位定时器/计数器

5)定时器/计数器预分频器

(二)模拟比较器

(三)模数转换器

(四)串行I/O

(五)中断

(六)看门狗定时器

(七)电气特性


 

(一)外围功能

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端口能够执行多种不同功能,其中一些功能可以同时进行。当对一个端口进行配置并将其用作输出时,我们仍然可以借助它读取数据,输出可以用来触发中断。

3)8位定时器/计数器

AVR微控制器中,有两种形式的8位定时器/计数器可用。

  • 第一种类型中,时钟输入来自于主系统时钟,因此定时器/计数器是同步的;
  • 第二种类型中,可以使用外部时钟源在异步模式下进行操作。

下面是AVR定时器的简图:

在AVR8位定时器/计数器周边电路(peripheral function)中,Timer/Counter0模块是一个通用的定时器/计数器。其特色是带有两个独立的输出比较电路,拥有4种操作模式。

正常模式(Normal mode)

这是最简单的定时器/计数器操作模式。计数总是在增长,当计数器达到最大8位值时,不会对计数器执行清空操作,在此情形下,计数器会发生溢出并归0.计数器归0时,就会设置Timer/Counter的溢出标志位(TOV0),TOV0标记对应于第9位,它只在定时器溢出时被设置,而不是被清除。定时器溢出中断会自动清空溢出标志位,中断也可以用来增加内存中另一个基于软件的计数器。在任何时候,新的计数器值都可以被写入TCNT0寄存器。

CTC(Clear Timer on Compare)模式

在CTC模式下,OCR0A寄存器通过定义计数器的最大值操纵计数器的分辨率。这有利于更好地控制比较匹配输出频率,也有助于简化外部事件计数。

快速PWM模式

快速脉冲宽度调制模式支持产生高频PWM波形。

相位校正PWM模式

相位校正PWM模式提供了一个产生高分辨率相位矫正PWM波形

4)16位定时器/计数器

16为定时器/计数器与8位列斯,但拥有更大的计数范围。它是真正地16位逻辑,允许产生16位可变周期地PWM。

5)定时器/计数器预分频器

预分频器是一个分频电路。

 

(二)模拟比较器

AVR模拟比较器用于比较AIN0与AIN1引脚地输入电压。尽管AIN0被定义为正向输入,AIN1被定义为负输入,但这仅仅用于反映它们之间的关系,并非指输入电压的实际极性。下面是AVR模拟比较器电路的简图:

除了比较AIN0与AIN1输入的电压之外,模拟比较器还可以做更多事情。还可以对模拟比较器的输入进行配置,使得可以将AIN1输入看作是内部带隙基准电压,或者将AIN0看作ADC多路复用器的输出(并且该电压对于ADC输入仍然有效)。带有4个箭头的特殊符号是模拟门。模拟门对控制输入做出何种反映由反向循环(inversion circle)指示,即使用反向控制输入时,若控制为低电平,则传递模拟信号,否则传递数字信号。

(三)模数转换器

模数转换器即A/D转换器,或简称ADC,通常是指一个将模拟信号转变为数字信号的电子元件。通常的模数转换器是将一个输入电压信号转换为一个输出的数字信号。由于数字信号本身不具有实际意义,仅仅表示一个相对大小。故任何一个模数转换器都需要一个参考模拟量作为转换的标准,比较常见的参考标准为最大的可转换信号大小。而输出的数字量则表示输入信号相对于参考信号的大小。

下面是AVR ADC外围电路的框图:

 

(四)串行I/O

I/O接口是一电子电路(以IC芯片或接口板形式出现 ),其内有若干专用寄存器和相应的控制逻辑电路构成。它是CPU和I/O设备之间交换信息的媒介和桥梁。CPU与外部设备、存储器的连接和数据交换都需要通过接口设备来实现,前者被称为I/O接口,而后者则被称为存储器接口。

ATmega168主要提供3种串口:同步/异步串口、SPI主从同步串口、面向字节的双线接口—类似于PhilipsI2C(内部集成电路)标准。

(五)中断

中断是现代处理器的基本功能。它们允许处理器对内部或外部事件做出相应,通过切换到一段特殊的中断代理代码来处理中断。一旦中断处理代码执行完毕,控制流将返回程序中发生中断的位置,并继续向下执行。在AVR中,通过修改控制寄存器中相应的位,可以打开或关闭中断响应。

(六)看门狗定时器

看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个数字,程序开始运行后看门狗开始计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗置零,重新开始计数。如果看门狗增加到设定值就认为程序没有正常工作,强制整个系统复位。

AVR提供一个看门狗定时器(WDT)。

(七)电气特性

AVR设备的电流消耗各有不同,这主要取决于设备类型、微控制器的激活或非激活(睡眠)状态,以及时钟频率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章