精atmega寄存器笔记整理.doc
《精atmega寄存器笔记整理.doc》由会员分享,可在线阅读,更多相关《精atmega寄存器笔记整理.doc(35页珍藏版)》请在冰豆网上搜索。
![精atmega寄存器笔记整理.doc](https://file1.bdocx.com/fileroot1/2022-10/9/5da49882-4e44-4562-bdcc-bcbb09053524/5da49882-4e44-4562-bdcc-bcbb090535241.gif)
一、中断寄存器
中断
是指微处理器在程序执行期间响应外部的事务请求,暂停当前的处理器工作转而处理外部事件,外部事件处理完成之后返回原来工作暂停的地方继续执行程序。
Atmega16具有21个中断源,每个中断源都有独立的中断向量作为中断服务程序的入口地址,而且所有的中断源都有自己独立的使能位。
如果中断位I和中断向量使能位都置位,则中断发生,中断标志位置位,并执行中断服务程序。
中断向量表见表2,处于越低地址的中断具有更高优先级。
表2中断向量表向量号
程序地址
中断源
描述
1
0x00
RESET
外部引脚电平引发的复位,上电复位,掉电
检测复位,看门狗复位,以及JTAGAVR复位
2
0x02
INT0
外部中断请求0
3
0x04
INT1
外部中断请求1
4
0x06
TIMER2COMP
定时器/计数器2比较匹配
5
0x08
TIMER2OVF
定时器/计数器2溢出
6
0x0a
TIMER1CAPT
定时器/计数器1事件捕捉
7
0x0c
TIMER1COMPA
定时器/计数器1比较匹配A
8
0x0e
TIMER1COMPB
定时器/计数器1比较匹配B
9
0x10
TIMER1OVF
定时器/计数器1溢出
10
0x12
TIMER0OVF
定时器/计数器0溢出
11
0x14
SPI,STC
SPI串行传输结束
12
0x16
USART,RXC
USART,Rx结束
13
0x18
USART,UDRE
USART数据寄存器空
14
0x1a
USART,TXC
USART,Tx结束
15
0x1c
ADC
ADC转换结束
16
0x1e
EE_RDY
EEPROM就绪
17
0x20
ANA_COMP
模拟比较器
18
0x22
TWI
两线串行接口
19
0x24
INT2
外部中断请求2
20
0x26
TIMER0COMP
定时器/计数器0比较匹配
21
0x28
SPM_RDY
保存程序存储器内容就绪
<一>全局中断控制位
1、状态寄存器SREG
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
I
T
H
S
V
N
Z
C
I:
全局中断使能位。
在I置位后,单独的中断使能由不同的中断寄存器控制。
若I为0,则禁止中断。
<二>外部中断?
2.MCU控制寄存器MCUCR
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
SM2
SE
SM1
SM0
ISC11
ISC10
ISC01
ISC00
SE:
MCU休眠使能位
SM1~SM0:
MCU休眠模式选择
SM2
SM1
SM0
休眠模式
0
0
0
空闲
0
0
1
ADC噪声抑制模式
0
1
0
掉电模式
0
1
1
省电模式
1
0
0
保留
1
0
1
保留
1
1
0
Standby
(1)模式
1
1
1
扩展Standby
(1)模式
ISC11~ISC10:
外部中断INT1的中断检测方式
ISC11
ISC10
INT1中断
0
0
低电平中断
0
1
INT1引脚上任意的逻辑电平变化都将引发中断
1
0
下降沿中断
1
1
上升沿中断
ISC01~ISC00:
外部中断INT0的中断检测方式
ISC01
ISC00
INT0中断
0
0
低电平中断
0
1
INT1引脚上任意的逻辑电平变化都将引发中断
1
0
下降沿中断
1
1
上升沿中断
3.通用中断屏蔽寄存器GICR
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
INT1
INT0
INT2
-
-
-
IVSEL
IVCE
INT1:
使能外部中断请求1
INT0:
使能外部中断请求0
INT2:
使能外部中断请求2
4.通用中断标志寄存器GIFR
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
INTF1
INTF0
INTF2
-
-
-
IVSEL
IVCE
INTF1:
外部中断标志
INT1引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF1。
如果SREG的位I以及GICR寄存器相应的中断使能位INT1为”1”,MCU即跳转到相应的中断向量。
进入中断服务程序之后该标志自动清零。
此外,标志位也可以通过写入”1”来清零。
INTF0:
外部中断标志
INT0引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF0。
如果SREG的位I以及GICR寄存器相应的中断使能位INT0为”1”,MCU即跳转到相应的中断向量。
进入中断服务程序之后该标志自动清零。
此外,标志位也可以通过写入”1”来清零。
INTF2:
外部中断标志
INT2引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF1。
如果SREG的位I以及GICR寄存器相应的中断使能位INT2为”1”,MCU即跳转到相应的中断向量。
进入中断服务程序之后该标志自动清零。
此外,标志位也可以通过写入”1”来清零。
<三>定时器/计数器
AVR的三个定时/计数器。
他们分别是T/C0、T/C1、T/C2,其中
T/C0和T/C2是8位定时/计数器,
T/C1是16位定时/计数器。
如T/C0工作模式:
1、普通模式
2、CTC模式
3、快速PWM模式和
4、相位修正PWM模式
这4种工作模式,每种模式分别对应相应的功能。
普通模式:
这是较为简单的模式,在此模式中,计数器不停的累加,直到计数器溢出(0xff)。
溢出之后的下一个指令周期里,计数器会回到最小值(0x00)开始累加,计数器标志位(TOV0)置位。
此时的TOV0不会自动清零,只有在总中断和T/C0中断开启,进入中断服务子函数时,TOV0才会自动清零。
CTC模式:
所谓CTC模式也就是输出比较模式。
在普通模式,计数器会一直累加到最大值256,而在输出比较模式(CTC),另一寄存器(OCR0)可以决定最大值的大小。
在达到OCR0设定值后,还能产生中断,触发改变相应管脚(PB3:
OC0)的逻辑电平。
利用这一特点,多用来产生需要的波形。
后面会编写一个方波产生的例子来说明。
由于CTC模式没有双缓冲功能,在计数器以无预分频器或很低的预分频器工作的时候将TOP 更改为接近BOTTOM的数值时要小心。
如果写入的OCR0数值小于当前TCNT0的数值,计数器将丢失一次比较匹配。
多小才要注意,要看代码的效率决定。
快速PWM模式:
PWM翻译过来就是"脉宽调制模式"。
此模式同样用于生成波形。
与输出比较模式区别的是:
在输出比较模式中,当TCNT0到达OCR0时,TCNT0清零,相应管脚逻辑电平改变,从而产生波形变化;在PWM模式中,TCNT0的值是从0X00到0XFF,管脚逻辑电平变化的地方是TCNT0的值与OCR0相等时,但此时并不对TCNT0进行清0操作。
相位修正PWM模式:
和"快速PWM模式"作用相似。
不同是,计数器从0X00到0XFF,然后从0XFF到0X00计数,产生对称的双向斜波。
1.定时器0以及定时器共同相关寄存器
(1)T/C控制寄存器TCCR0(主要作用:
确定工作模式)
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
FOC0
WGM00
COM01
COM00
WGM01
CS02
CS01
CS00
FOC0:
强制输出比较位
FOC0仅在WGM00指明非PWM模式时才有效。
但是,为了保证与未来器件的兼容性,在使用PWM时,写TCCR0要对其清零。
对其写1后,波形发生器将立即进行比较操作。
比较匹配输出引脚OC0将按照COM01:
0的设置输出相应的电平。
要注意FOC0类似一个锁存信号,真正对强制输出比较起作用的是COM01:
0的设置。
FOC0不会引发任何中断,也不会在利用OCR0作为TOP的CTC模式下对定时器进行清零的操作。
读FOC0的返回值永远为0。
WGM01WGM01波形产生模式
这几位控制计数器的计数序列,计数器的最大值TOP,以及产生何种波形。
T/C支持的模式有:
普通模式,比较匹配发生时清除计数器模式(CTC),以及两种PWM模式。
模式
WGM01
WGM00
T/C的工作模式
TOP
OCR0的更新时间
TOV0的置位时刻
0
0
0
普通
0xFF
立即更新
MAX
1
0
1
相位修正PWM
0xFF
TOP
BOTTOM
2
1
0
CTC
OCR0
立即更新
MAX
3
1
1
快速PWM
0xFF
TOP
MAX
COM01COM00比较匹配输出模式(位5和位4—COM:
比较匹配输出模式。
这决定了比较匹配发生时,输出管脚OC0的电平。
当然,管脚首先要配置为输出。
触发电平除了和下表的配置有关外,还和WGM确定的工作模式相关。
)
这些位决定了比较匹配发生时输出引脚OC0的电平。
如果COM01:
0中的一位或全部都置位,OC0以比较匹配输出的方式进行工作。
同时其方向控制位要设置为1以使能输出驱动器。
当OC0连接到物理引脚上时,COM01:
0的功能依赖于WGM01:
0的设置。
下表给出了当WGM01:
0设置为普通模式或CTC模式时COM01:
0的功能。
比较输出模式,非PWM模式
COM01
COM00
说明
0
0
正常的端口操作,不与OC0相连接
0
1
比较匹配发生时OC0取反
1
0
比较匹配发生时OC0清零
1
1
比较匹配发生时OC0置位
比较输出模式,快速PWM模式
COM01
COM00
说明
0
0
正常的端口操作,不与OC0相连接
0
1
保留
1
0
比较匹配发生时OC0A清零,计数到TOP时OC0置位
1
1
比较匹配发生时OC0A置位,计数到TOP时OC0清零
注意:
一个特殊情况是OCR0等于TOP,且COM01置位。
此时比较匹配将被忽略,而计数到TOP时OC0的动作继续有效。