立即注册 找回密码

微雪课堂

搜索
微雪课堂 AVR AVR单片机内核剖析 ATmega168 查看内容

ATmega168 中断向量

2015-5-28 00:17| 发布者: kaloha| 查看: 2687| 评论: 0

摘要: 本节描述ATmega168 的中断处理。更一般的 AVR 中断处理请参见 P11” 复位与中断处理 ”ATmega48、 ATmega88 与 ATmega168 的中断向量基本相同,只有如下差别:* ATmega168的每个中断向量占据两个指令字,而 ATmega48 ...

本节描述ATmega168 的中断处理。更一般的 AVR 中断处理请参见 P11” 复位与中断处理 ”

ATmega48、 ATmega88 与 ATmega168 的中断向量基本相同,只有如下差别:
* ATmega168的每个中断向量占据两个指令字,而 ATmega48 与ATmega88的只占一 个指令字。
* ATmega48 没有独立的 Boot Loader 区。在 ATmega88 与 ATmega168 中,复位向量 由 BOOTRST 熔丝位决定,中断向量的起始地址由MCUCR寄存器的 IVSEL 决定。 。


(点击图片放大)

ATmega168 复位和中断向量(CONTINUED)

Notes: 1. 熔丝位BOOTRST被编程时,MCU复位后程序跳转到Boot Loader。请参见 P241”Boot Loader 支持RWW自编程,ATmega88 与 ATmega168” 2. 当寄存器MCUCR的IVSEL置位时,中断向量转移到Boot区的起始地址。此时各个中断 向量的实际地址为表中地址与Boot 区起始地址之和。

Table31 给出了不同的BOOTRST/IVSEL设置条件下的复位和中断向量的位置。如果程序 没有使用中断,中断向量就没有意义。用户可以在此直接写程序。同样,如果复位向量位 于应用区,而其他中断向量位于 Boot 区,则复位向量之后可以直接写程序。反过来亦是 如此。

ATmega168 复位和中断向量位置的确定

ATmega168 典型的复位和中断设置如下:
地址···代码 ···代码说明
0x000 rjmp RESET ; 复位处理
0x001 rjmp EXT_INT0 ; IRQ0处理
0x002 rjmp EXT_INT1 ; IRQ1处理
0x003 rjmp PCINT0 ; PCINT0处理
0x004 rjmp PCINT1 ; PCINT1处理
0x005 rjmp PCINT2 ; PCINT2处理
0x006 rjmp WDT ;看门狗定时器处理
0x007 rjmp TIM2_COMPA ; 定时器 2 比较 A处理
0x008 rjmp TIM2_COMPB ; 定时器 2比较 B处理
0x009 rjmp TIM2_OVF ; 定时器 2溢出处理
0x00A rjmp TIM1_CAPT ; 定时器 1捕获处理
0x00B rjmp rjmp TIM1_COMPA ; 定时器 1比较 A处理
0x00C rjmp TIM1_COMPB ; 定时器 1比较 B处理
0x00D rjmp TIM1_OVF ; 定时器 1溢出处理
0x00E rjmp TIM0_COMPA ; 定时器 0比较 A处理
0x00F rjmp TIM0_COMPB ; 定时器 0比较 B处理
0x010 rjmp TIM0_OVF ; 定时器 0溢出处理
0x011 rjmp SPI_STC ; SPI 传输结束处理
0x012 rjmp rjmp USART_RXC ; USART, RX结束处理
0x013 rjmp USART_UDRE ; USART, UDR空处理
0x014 rjmp USART_TXC ; USART, TX Complete 处理
0x015 rjmp ADC ; ADC转换结束处理
0x016 rjmp EE_RDY ; EEPROM就绪处理
0x017 rjmp ANA_COMP ; 模拟比较器处理
0x018 rjmp TWI ; 两线串行接口处理
0x019 rjmp SPM_RDY ; SPM 就绪处理

0x01A RESET: ldi r16, high(RAMEND); 主程序
0x01B out SPH,r16 ; 设置堆栈指针为 RAM的顶部
0x01C ldi r16, low(RAMEND)
0x01D out SPL,r16
0x01E sei ; 使能中断
0x01F <instr> xxx
、、、、 、、、、 、、、、

当熔丝位 BOOTRST被编程,Boot 区为 2K 字节,且寄存器 MCUCR 的 IVSEL 在使能任 何中断之前被置位时, ATmega168 典型的复位和中断设置如下:
地址··· 符号··· 代码··· 说明
0x0000 RESET: ldi r16,high(RAMEND) ; 主程序
0x0001 out SPH,r16 ; 设置堆栈指针为 RAM的顶部
0x0002 ldi r16,low(RAMEND)
0x0003 out SPL,r16
0x0004 sei ; 使能中断
0x0005 xxx
;
.org 0xC02
0x1C02 jmp EXT_INT0 ; IRQ0处理
0x1C04 jmp EXT_INT1 ; IRQ1处理
... ... ... ; 
0x1C32 jmp SPM_RDY ; SPM 就绪处理

当熔丝位 BOOTRST 未编程, Boot 区为 2K 字节, ATmega168 典型的复位和中断设置 如下:
地址··· 符号··· 代码 ···说明
.org 0x0002
0x0002 jmp EXT_INT0 ; IRQ0处理
0x0004 jmp EXT_INT1 ; IRQ1处理
... ... ... ; 
0x0032 jmp SPM_RDY ; SPM 就绪处理
;
.org 0x1C00
0x1C00 RESET: ldi r16,high(RAMEND) ; 主程序
0x1C01 out SPH,r16 ; 设置堆栈指针为 RAM的顶部
0x1C02 ldi r16,low(RAMEND)
0x1C03 out SPL,r16
0x1C04 sei ; 使能中断
0x1C05 xxx

ATmega168 当熔丝位BOOTRST被编程,Boot区为2K 字节,且寄存器MCUCR的IVSEL 在使能任何中断之前被置位时, ATmega168 典型的复位和中断设置如下:
地址···符号···代码···说明
;
.org 0x1C00
0x1C00 jmp RESET ; 复位处理
0x1C02 jmp EXT_INT0 ; IRQ0处理
0x1C04 jmp EXT_INT1 ; IRQ1处理
... ... ... ; 
0x1C32 jmp SPM_RDY ; SPM 就绪处理
;
0x1C33 RESET: ldi r16,high(RAMEND) ; 主程序
0x1C34 out SPH,r16 ; 设置堆栈指针为 RAM的顶部
0x1C35 ldi r16,low(RAMEND)
0x1C36 out SPL,r16
0x1C37 sei ; 使能中断
0x1C38 xxx

以上资料参考马潮老师的中文手册,由微雪电子整理并发布,转载请注明出处:www.waveshare.net,否则追究相应责任!


243

顶一下

刚表态过的朋友 (243 人)

最新评论

所有教程
    01ATmega168 简介
    ATmega168是基于增强的AVR RISC结构的低功耗8 位CMOS微控制器。由于其先进的指令集以
    02ATmega168 引脚功能
    引脚名称引脚功能说明VCC电源正GND电源地端口B(PB7..PB0)端口 B 为 8 位双向 I/O 口,
    03ATmega168 内核介绍
    本节从总体上讨论ATmega168 AVR 内核的结构。CPU 的主要任务是保证程序的正确执行。因
    04ATmega168 ALU
    ALU (Arithmetic Logic Unit)- 算术逻辑单元。 ATmega168 的 ALU 跟其他 AVR ALU 一样
    05ATmega168 状态寄存器
    ATmega168状态寄存器包含了最近执行的算术指令的结果信息。这些信息可以用来改变程序
    06ATmega168 通用寄存器
    寄存器文件针对AVR增强型RISC指令集做了优化。为了获得需要的性能和灵活性,寄存器文
    07ATmega168 堆栈指针
    堆栈指针主要用来保存临时数据、局部变量和中断/ 子程序的返回地址。堆栈指针总是指向
    08ATmega168 指令执行时序
    这一节介绍ATmega168指令执行过程中的访问时序。AVR CPU 由系统时钟clkCPU 驱动。此时
    09ATmega168 复位与中断处理
    AVR有不同的中断源。每个中断和复位在程序空间都有独立的中断向量。所有的中断事件都
    010ATmega168 Flash程序存储器
    系统内可编程的Flash 程序存储器ATmega168具有16K 字节的在线编程 Flash,用于存放程
    011ATmega168 SRAM数据存储器
    SRAM数据存储器Figure 10 给出了ATmega168 SRAM 空间的组织结构。ATmega168 是一个复
    012ATmega168 EEPROM数据存储器
    ATmega168包含512字节的EEPROM数据存储器。它是作为一个独立的数据 EEPROM 的寿命至少
    013ATmega168 I/O存储器
    ATmega168的 I/O P311“ 寄存器概述 ” 。ATmega168 的所有 I/O 和外设都被放置在 I/O
    014ATmega168 时钟系统及其分布
    时钟系统及其分布Figure12为ATmega168 的主要时钟系统及其分布。这些时钟并不需要同时
    015ATmega168 时钟源
    ATmega168芯片有如下几种通过Flash熔丝位进行选择的时钟源。时钟输入到AVR时钟发生器
    016ATmega168 晶体振荡器
    XTAL1 与XTAL2 分别为用作片内振荡器的反向放大器的输入和输出,如Figure 13 所示,这
    017ATmega168 低频晶体振荡器
    为了使用32.768 kHz 钟表晶体作为器件的时钟源,必须将熔丝位CKSEL 设置为“1001”以
    018ATmega168 外部RC振荡器
    芯片可用外部时钟源驱动,如Figure15所示。此时CKSEL熔丝位必须按照Table15编程。选择
    019ATmega168 标定的片内RC振荡器
    校准的ATmega168片内 RC 振荡器提供了固定的 8.0 MHz 的时钟 这是在 3V、25 C 下的标
    020ATmega168 外部时钟
    ATmega168可用外部时钟源驱动,如Figure 15所示的进行连接。此时CKSEL熔丝位必须按照T
    021ATmega168 定时器/计时器振荡器
    ATmega168可通过外部 32.768 kHz 表用振荡器或外部时钟源对定时器 计数器2 进行操作
    022ATmega168 MCU控制寄存器SMCR
    MCU 控制寄存器包含了电源管理的控制位。· Bits 7..4 Res 保留位: ATmega168中的这些
    023ATmega168 空闲模式
    SM2..0 为 000 时,SLEEP 指令使 MCU 进入 CPU 停止运行,而SPI、USART、模拟比较器、
    024ATmega168 ADC噪声抑制模式
    SM2..0为001时,SLEEP指令使MCU进入噪声抑制模式。在此模式下,CPU停止运行,而 ADC、
    025ATmega168 掉电模式
    SM2..0为010时,SLEEP指令使MCU进入掉电模式。在此模式下,外部晶体停振,而外部中断
    026ATmega168 省电模式
    当SM2..0 为011 时, SLEEP 指令将使MCU 进入省电模式。这一模式与掉电模式只有一点不
    027ATmega168 Standby模式
    Standby 模式当 SM2..0 为 110 ,且选择了外部晶体振荡器或陶瓷谐振器作为时钟源, SL
    028ATmega168 减少功耗的方法
    试图降低AVR 控制系统的功耗时需要考虑几个问题。一般来说,要尽可能利用睡眠模式,并
    029ATmega168 复位源
    复位AVR复位时所有的 I/O 寄存器都被设置为初始值,程序从复位向量处开始执行。 对于A
    030ATmega168 上电复位
    上电复位 (POR) 脉冲由片内检测电路产生。检测电平请参见 Table20。 无论何时 VCC 低
    031ATmega168 外部复位
    外部复位由外加于 RESET 引脚的低电平产生。当复位低电平持续时间大于最小脉冲宽度时
    032ATmega168 掉电检测
    ATmega168 具有片内 BOD(Brown-out Detection) 电路,通过与固定的触发电平的对比来检
    033ATmega168 看门狗复位
    看门狗定时器溢出时将产生持续时间为1个CK周期的复位脉冲。在脉冲的下降沿,延时定时
    034ATmega168 控制和状态寄存器MCUCSR
    AVR 控制和状态寄存器提供了有关引起AVR复位的复位源的信息。· Bit 7..4 – Res: 保
    035ATmega168 基准电压使能信号和启动时间
    ATmega168具有片内能隙基准源,用于掉电检测,或者是作为模拟比较器或ADC的输入。电压
    036ATmega168 看门狗定时器
    看门狗定时器由独立的128 kHz片内振荡器驱动。通过设置看门狗定时器的预分频器可以调
    037ATmega168 中断向量
    本节描述ATmega168 的中断处理。更一般的 AVR 中断处理请参见 P11” 复位与中断处理
    038ATmega168 SPI数据模式与时序
    ATmega168有四种 XCKn (SCK)相位与极性的组合与串行数据有关,具体由 UCPHAn与UCPOLn
    039ATmega168 片上调试系统
    特性* 完全的程序流控制* 仿真芯片上所有的模拟和数字功能,除了RESET引脚* 实时操作*
内核剖析
    01Atmega16
    深入剖析Atmega16芯片内核
    02Atmega48
    深入剖析Atmega48芯片内核
    03ATmega8
    深入剖析ATmega8芯片内核
    04ATmega128
    深入剖析ATmega128芯片内核
    05ATmega64
    深入剖析ATmega64芯片内核
    06ATmega32
    深入剖析ATmega32芯片内核
    07ATmega168
    深入剖析ATmega168芯片内核
    08ATtiny13
    深入剖析ATtiny13芯片内核
    09ATmega88
    深入剖析ATmega88芯片内核
    010ATtiny2313
    深入剖析ATtiny2313芯片内核
AVR

微雪官网|产品资料|手机版|小黑屋|微雪课堂. ( 粤ICP备05067009号 )

GMT+8, 2024-4-18 08:22 , Processed in 0.026478 second(s), 20 queries .

返回顶部