产 品 特 性 高 性 能 低 功 耗 的 8 位 AVR 微 处 理 器 先 进 的 RISC 结 构 3 条 指 令 大 多 数 指 令 执 行 时 间 为 单 个 时 钟 周 期 32 个 8 位 通 用 工 作 寄 存 器 全 静 态 工 作 工 作 于 6 MHz 时 性 能 高 达 6 MIPS 只 需 两 个 时 钟 周 期 的 硬 件 乘 法 器 非 易 失 性 程 序 和 数 据 存 储 器 8K 字 节 的 系 统 内 可 编 程 Flash 擦 写 寿 命 :, 次 具 有 独 立 锁 定 位 的 可 选 Boot 代 码 区 通 过 片 上 Boot 程 序 实 现 系 统 内 编 程 真 正 的 同 时 读 写 操 作 52 字 节 的 EEPROM 擦 写 寿 命 :, 次 K 字 节 的 片 内 SRAM 可 以 对 锁 定 位 进 行 编 程 以 实 现 用 户 程 序 的 加 密 外 设 特 点 两 个 具 有 独 立 预 分 频 器 8 位 定 时 器 / 计 数 器, 其 中 之 一 有 比 较 功 能 一 个 具 有 预 分 频 器 比 较 功 能 和 捕 捉 功 能 的 6 位 定 时 器 / 计 数 器 具 有 独 立 振 荡 器 的 实 时 计 数 器 RTC 三 通 道 PWM TQFP 与 MLF 封 装 的 8 路 ADC 8 路 位 ADC PDIP 封 装 的 6 路 ADC 8 路 位 ADC 面 向 字 节 的 两 线 接 口 两 个 可 编 程 的 串 行 USART 可 工 作 于 主 机 / 从 机 模 式 的 SPI 串 行 接 口 具 有 独 立 片 内 振 荡 器 的 可 编 程 看 门 狗 定 时 器 片 内 模 拟 比 较 器 特 殊 的 处 理 器 特 点 上 电 复 位 以 及 可 编 程 的 掉 电 检 测 片 内 经 过 标 定 的 RC 振 荡 器 片 内 / 片 外 中 断 源 5 种 睡 眠 模 式 : 空 闲 模 式 ADC 噪 声 抑 制 模 式 省 电 模 式 掉 电 模 式 及 Standby 模 式 I/O 和 封 装 23 个 可 编 程 的 I/O 口 28 引 脚 PDIP 封 装,32 引 脚 TQFP 封 装,32 引 脚 MLF 封 装 工 作 电 压 2.7-5.5V (ATmega8L) 4.5-5.5V (ATmega8) 速 度 等 级 - 8 MHz (ATmega8L) - 6 MHz (ATmega8) 4 Mhz 时 功 耗, 3V, 25 C 工 作 模 式 : 3.6 ma 空 闲 模 式 :. ma 掉 电 模 式 :.5 µa 具 有 8KB 系 统 内 可 编 程 Flash 的 8 位 微 控 制 器 ATmega8 ATmega8L
引 脚 配 置 PDIP (RESET) PC6 (RXD) PD (TXD) PD (INT) PD2 (INT) PD3 (XCK/T) PD4 VCC GND (XTAL/TOSC) PB6 (XTAL2/TOSC2) PB7 (T) PD5 (AIN) PD6 (AIN) PD7 (ICP) PB 2 3 4 5 6 7 8 9 2 3 4 28 27 26 25 24 23 22 2 2 9 8 7 6 5 PC5 (ADC5/SCL) PC4 (ADC4/SDA) PC3 (ADC3) PC2 (ADC2) PC (ADC) PC (ADC) GND AREF AVCC PB5 (SCK) PB4 (MISO) PB3 (MOSI/OC2) PB2 (SS/OCB) PB (OCA) TQFP Top View 32 3 3 29 28 27 26 25 (INT) PD3 (XCK/T) PD4 GND VCC GND VCC (XTAL/TOSC) PB6 (XTAL2/TOSC2) PB7 2 3 4 5 6 7 8 24 23 22 2 2 9 8 7 PC (ADC) PC (ADC) ADC7 GND AREF ADC6 AVCC PB5 (SCK) (T) PD5 (AIN) PD6 (AIN) PD7 (ICP) PB (OCA) PB (SS/OCB) PB2 (MOSI/OC2) PB3 (MISO) PB4 9 2 3 4 5 6 PD2 (INT) PD (TXD) PD (RXD) PC6 (RESET) PC5 (ADC5/SCL) PC4 (ADC4/SDA) PC3 (ADC3) PC2 (ADC2) MLF Top View 32 3 3 29 28 27 26 25 (INT) PD3 (XCK/T) PD4 GND VCC GND VCC (XTAL/TOSC) PB6 (XTAL2/TOSC2) PB7 2 3 4 5 6 7 8 24 23 22 2 2 9 8 7 PC (ADC) PC (ADC) ADC7 GND AREF ADC6 AVCC PB5 (SCK) (T) PD5 (AIN) PD6 (AIN) PD7 (ICP) PB (OCA) PB (SS/OCB) PB2 (MOSI/OC2) PB3 (MISO) PB4 9 2 3 4 5 6 PD2 (INT) PD (TXD) PD (RXD) PC6 (RESET) PC5 (ADC5/SCL) PC4 (ADC4/SDA) PC3 (ADC3) PC2 (ADC2) NOTE: The large center pad underneath the MLF packages is made of metal and internally connected to GND. It should be soldered or glued to the PCB to ensure good mechanical stability. If the center pad is left unconneted, the package might loosen from the PCB. 2 ATmega8(L)
ATmega8(L) 综 述 方 框 图 ATmega8 是 基 于 增 强 的 AVR RISC 结 构 的 低 功 耗 8 位 CMOS 微 控 制 器 由 于 其 先 进 的 指 令 集 以 及 单 时 钟 周 期 指 令 执 行 时 间, ATmega8 的 数 据 吞 吐 率 高 达 MIPS/MHz, 从 而 可 以 缓 减 系 统 在 功 耗 和 处 理 速 度 之 间 的 矛 盾 Figure. 结 构 框 图 XTAL RESET PC - PC6 PB - PB7 VCC XTAL2 PORTC DRIVERS/BUFFERS PORTB DRIVERS/BUFFERS GND PORTC DIGITAL INTERFACE PORTB DIGITAL INTERFACE MUX & ADC ADC INTERFACE TWI AGND AREF PROGRAM COUNTER STACK POINTER TIMERS/ COUNTERS OSCILLATOR PROGRAM FLASH SRAM INTERNAL OSCILLATOR INSTRUCTION REGISTER GENERAL PURPOSE REGISTERS WATCHDOG TIMER OSCILLATOR INSTRUCTION DECODER X Y Z MCU CTRL. & TIMING CONTROL LINES ALU INTERRUPT UNIT AVR CPU STATUS REGISTER EEPROM PROGRAMMING LOGIC SPI USART + - COMP. INTERFACE PORTD DIGITAL INTERFACE PORTD DRIVERS/BUFFERS PD - PD7 3
AVR 内 核 具 有 丰 富 的 指 令 集 和 32 个 通 用 工 作 寄 存 器 所 有 的 寄 存 器 都 直 接 与 算 逻 单 元 (ALU) 相 连 接, 使 得 一 条 指 令 可 以 在 一 个 时 钟 周 期 内 同 时 访 问 两 个 独 立 的 寄 存 器 这 种 结 构 大 大 提 高 了 代 码 效 率, 并 且 具 有 比 普 通 的 CISC 微 控 制 器 最 高 至 倍 的 数 据 吞 吐 率 ATmega8 有 如 下 特 点 :8K 字 节 的 系 统 内 可 编 程 Flash( 具 有 同 时 读 写 的 能 力, 即 RWW), 52 字 节 EEPROM,K 字 节 SRAM,32 个 通 用 I/O 口 线,32 个 通 用 工 作 寄 存 器, 三 个 具 有 比 较 模 式 的 灵 活 的 定 时 器 / 计 数 器 (T/C), 片 内 / 外 中 断, 可 编 程 串 行 USART, 面 向 字 节 的 两 线 串 行 接 口, 位 6 路 (8 路 为 TQFP 与 MLF 封 装 )ADC, 具 有 片 内 振 荡 器 的 可 编 程 看 门 狗 定 时 器, 一 个 SPI 串 行 端 口, 以 及 五 种 可 以 通 过 软 件 进 行 选 择 的 省 电 模 式 工 作 于 空 闲 模 式 时 CPU 停 止 工 作, 而 SRAM T/C SPI 端 口 以 及 中 断 系 统 继 续 工 作 ; 掉 电 模 式 时 晶 体 振 荡 器 停 止 振 荡, 所 有 功 能 除 了 中 断 和 硬 件 复 位 之 外 都 停 止 工 作 ; 在 省 电 模 式 下, 异 步 定 时 器 继 续 运 行, 允 许 用 户 保 持 一 个 时 间 基 准, 而 其 余 功 能 模 块 处 于 休 眠 状 态 ; ADC 噪 声 抑 制 模 式 时 终 止 CPU 和 除 了 异 步 定 时 器 与 ADC 以 外 所 有 I/O 模 块 的 工 作, 以 降 低 ADC 转 换 时 的 开 关 噪 声 ; Standby 模 式 下 只 有 晶 体 或 谐 振 振 荡 器 运 行, 其 余 功 能 模 块 处 于 休 眠 状 态, 使 得 器 件 只 消 耗 极 少 的 电 流, 同 时 具 有 快 速 启 动 能 力 本 芯 片 是 以 Atmel 高 密 度 非 易 失 性 存 储 器 技 术 生 产 的 片 内 ISP Flash 允 许 程 序 存 储 器 通 过 ISP 串 行 接 口, 或 者 通 用 编 程 器 进 行 编 程, 也 可 以 通 过 运 行 于 AVR 内 核 之 中 的 引 导 程 序 进 行 编 程 引 导 程 序 可 以 使 用 任 意 接 口 将 应 用 程 序 下 载 到 应 用 Flash 存 储 区 (Application Flash Memory) 在 更 新 应 用 Flash 存 储 区 时 引 导 Flash 区 (Boot Flash Memory) 的 程 序 继 续 运 行, 实 现 了 RWW 操 作 通 过 将 8 位 RISC CPU 与 系 统 内 可 编 程 的 Flash 集 成 在 一 个 芯 片 内, ATmega8 成 为 一 个 功 能 强 大 的 单 片 机, 为 许 多 嵌 入 式 控 制 应 用 提 供 了 灵 活 而 低 成 本 的 解 决 方 案 ATmega8 具 有 一 整 套 的 编 程 与 系 统 开 发 工 具, 包 括 :C 语 言 编 译 器 宏 汇 编 程 序 调 试 器 / 软 件 仿 真 器 仿 真 器 及 评 估 板 声 明 本 数 据 手 册 的 典 型 值 来 源 于 对 器 件 的 仿 真, 以 及 其 他 基 于 相 同 产 生 工 艺 的 AVR 微 控 制 器 的 标 定 特 性 本 器 件 经 过 特 性 化 之 后 将 给 出 实 际 的 最 大 值 和 最 小 值 4 ATmega8(L)
ATmega8(L) 引 脚 说 明 VCC 数 字 电 路 的 电 源 GND 地 端 口 B(PB7..PB) XTAL/XTAL2/TOSC/TOSC2 端 口 C(PC5..PC) PC6/RESET 端 口 D(PD7..PD) RESET 端 口 B 为 8 位 双 向 I/O 口, 具 有 可 编 程 的 内 部 上 拉 电 阻 其 输 出 缓 冲 器 具 有 对 称 的 驱 动 特 性, 可 以 输 出 和 吸 收 大 电 流 作 为 输 入 使 用 时, 若 内 部 上 拉 电 阻 使 能, 端 口 被 外 部 电 路 拉 低 时 将 输 出 电 流 在 复 位 过 程 中, 即 使 系 统 时 钟 还 未 起 振, 端 口 B 处 于 高 阻 状 态 通 过 时 钟 选 择 熔 丝 位 的 设 置, PB6 可 作 为 反 向 振 荡 放 大 器 或 时 钟 操 作 电 路 的 输 入 端 通 过 时 钟 选 择 熔 丝 位 的 设 置 PB7 可 作 为 反 向 振 荡 放 大 器 的 输 出 端 若 将 片 内 标 定 RC 振 荡 器 作 为 芯 片 时 钟 源, 且 ASSR 寄 存 器 的 AS2 位 设 置,PB7..6 作 为 异 步 T/C2 的 TOSC2.. 输 入 端 端 口 B 的 其 他 功 能 见 P 55 端 口 B 的 第 二 功 能 及 P 22 系 统 时 钟 及 时 钟 选 项 端 口 C 为 7 位 双 向 I/O 口, 具 有 可 编 程 的 内 部 上 拉 电 阻 其 输 出 缓 冲 器 具 有 对 称 的 驱 动 特 性, 可 以 输 出 和 吸 收 大 电 流 作 为 输 入 使 用 时, 若 内 部 上 拉 电 阻 使 能, 端 口 被 外 部 电 路 拉 低 时 将 输 出 电 流 在 复 位 过 程 中, 即 使 系 统 时 钟 还 未 起 振, 端 口 C 处 于 高 阻 状 态 若 RSTDISBL 熔 丝 位 编 程, PC6 作 为 I/O 引 脚 使 用 注 意 PC6 的 电 气 特 性 与 端 口 C 的 其 他 引 脚 不 同 若 RSTDISBL 熔 丝 位 未 编 程, PC6 作 为 复 位 输 入 引 脚 持 续 时 间 超 过 最 小 门 限 时 间 的 低 电 平 将 引 起 系 统 复 位 门 限 时 间 见 P 35Table 5 持 续 时 间 小 于 门 限 时 间 的 脉 冲 不 能 保 证 可 靠 复 位 端 口 C 的 其 他 功 能 见 后 端 口 D 为 8 位 双 向 I/O 口, 具 有 可 编 程 的 内 部 上 拉 电 阻 其 输 出 缓 冲 器 具 有 对 称 的 驱 动 特 性, 可 以 输 出 和 吸 收 大 电 流 作 为 输 入 使 用 时, 若 内 部 上 拉 电 阻 使 能, 则 端 口 被 外 部 电 路 拉 低 时 将 输 出 电 流 在 复 位 过 程 中, 即 使 系 统 时 钟 还 未 起 振, 端 口 D 处 于 高 阻 状 态 端 口 D 的 其 他 功 能 见 后 复 位 输 入 引 脚 持 续 时 间 超 过 最 小 门 限 时 间 的 低 电 平 将 引 起 系 统 复 位 门 限 时 间 见 P 35Table 5 持 续 时 间 小 于 门 限 时 间 的 脉 冲 不 能 保 证 可 靠 复 位 5
AV CC AV CC 是 A/D 转 换 器 端 口 C (3..) 及 ADC (7..6) 的 电 源 不 使 用 ADC 时, 该 引 脚 应 直 接 与 V CC 连 接 使 用 ADC 时 应 通 过 一 个 低 通 滤 波 器 与 V CC 连 接 注 意, 端 口 C (5..4) 为 数 字 电 源, V CC AREF A/D 的 模 拟 基 准 输 入 引 脚 ADC7..6(TQFP 与 MLF 封 装 ) 代 码 例 子 TQFP 与 MLF 封 装 的 ADC7..6 作 为 A/D 转 换 器 的 模 拟 输 入 为 模 拟 电 源 且 作 为 位 ADC 通 道 本 数 据 手 册 包 含 了 一 些 简 单 的 代 码 例 子 以 说 明 如 何 使 用 芯 片 各 个 不 同 的 功 能 模 块 这 些 例 子 都 假 定 在 编 译 之 前 已 经 包 含 了 正 确 的 头 文 件 有 些 C 编 译 器 在 头 文 件 里 并 没 有 包 含 位 定 义, 而 且 各 个 C 编 译 器 对 中 断 处 理 有 自 己 不 同 的 处 理 方 式 请 注 意 查 阅 相 关 文 档 以 获 取 具 体 的 信 息 6 ATmega8(L)
ATmega8(L) AVR CPU 内 核 介 绍 结 构 综 述 本 节 从 总 体 上 讨 论 AVR 内 核 的 结 构 CPU 的 主 要 任 务 是 保 证 程 序 的 正 确 执 行 因 此 它 必 须 能 够 访 问 存 储 器 执 行 运 算 控 制 外 设 以 及 处 理 中 断 Figure 2. AVR MCU 结 构 的 方 框 图 Data Bus 8-bit Flash Program Memory Program Counter Status and Control Instruction Register 32 x 8 General Purpose Registrers Interrupt Unit SPI Unit Instruction Decoder Control Lines Direct Addressing Indirect Addressing ALU Watchdog Timer Analog Comparator i/o Module Data SRAM i/o Module 2 i/o Module n EEPROM I/O Lines 为 了 获 得 最 高 的 性 能 以 及 并 行 性, AVR 采 用 了 Harvard 结 构, 具 有 独 立 的 数 据 和 程 序 总 线 程 序 存 储 器 里 的 指 令 通 过 一 级 流 水 线 运 行 CPU 在 执 行 一 条 指 令 的 同 时 读 取 下 一 条 指 令 ( 在 本 文 称 为 预 取 ) 这 个 概 念 实 现 了 指 令 的 单 时 钟 周 期 运 行 程 序 存 储 器 是 可 以 在 线 编 程 的 Flash 快 速 访 问 寄 存 器 文 件 包 括 32 个 8 位 通 用 工 作 寄 存 器, 访 问 时 间 为 一 个 时 钟 周 期 从 而 实 现 了 单 时 钟 周 期 的 ALU 操 作 在 典 型 的 ALU 操 作 中, 两 个 位 于 寄 存 器 文 件 中 的 操 作 数 同 时 被 访 问, 然 后 执 行 运 算, 结 果 再 被 送 回 到 寄 存 器 文 件 整 个 过 程 仅 需 一 个 时 钟 周 期 寄 存 器 文 件 里 有 6 个 寄 存 器 可 以 用 作 3 个 6 位 的 间 接 寻 址 寄 存 器 指 针 以 寻 址 数 据 空 间, 实 现 高 效 的 地 址 运 算 其 中 一 个 指 针 还 可 以 作 为 程 序 存 储 器 查 询 表 的 地 址 指 针 这 些 附 加 的 功 能 寄 存 器 即 为 6 位 的 X Y Z 寄 存 器 ALU 支 持 寄 存 器 之 间 以 及 寄 存 器 和 常 数 之 间 的 算 术 和 逻 辑 运 算 ALU 也 可 以 执 行 单 寄 存 器 操 作 运 算 完 成 之 后 状 态 寄 存 器 的 内 容 得 到 更 新 以 反 映 操 作 结 果 7
程 序 流 程 通 过 有 / 无 条 件 的 跳 转 指 令 和 调 用 指 令 来 控 制, 从 而 直 接 寻 址 整 个 地 址 空 间 大 多 数 指 令 长 度 为 6 位, 亦 即 每 个 程 序 存 储 器 地 址 都 包 含 一 条 6 位 或 32 位 的 指 令 程 序 存 储 器 空 间 分 为 两 个 区 : 引 导 程 序 区 (Boot 区 ) 和 应 用 程 序 区 这 两 个 区 都 有 专 门 的 锁 定 位 以 实 现 读 和 读 / 写 保 护 用 于 写 应 用 程 序 区 的 SPM 指 令 必 须 位 于 引 导 程 序 区 在 中 断 和 调 用 子 程 序 时 返 回 地 址 的 程 序 计 数 器 (PC) 保 存 于 堆 栈 之 中 堆 栈 位 于 通 用 数 据 SRAM, 因 此 其 深 度 仅 受 限 于 SRAM 的 大 小 在 复 位 例 程 里 用 户 首 先 要 初 始 化 堆 栈 指 针 SP 这 个 指 针 位 于 I/O 空 间, 可 以 进 行 读 写 访 问 数 据 SRAM 可 以 通 过 5 种 不 同 的 寻 址 模 式 进 行 访 问 AVR 存 储 器 空 间 为 线 性 的 平 面 结 构 AVR 有 一 个 灵 活 的 中 断 模 块 控 制 寄 存 器 位 于 I/O 空 间 状 态 寄 存 器 里 有 全 局 中 断 使 能 位 每 个 中 断 在 中 断 向 量 表 里 都 有 独 立 的 中 断 向 量 各 个 中 断 的 优 先 级 与 其 在 中 断 向 量 表 的 位 置 有 关, 中 断 向 量 地 址 越 低, 优 先 级 越 高 I/O 存 储 器 空 间 包 含 64 个 可 以 直 接 寻 址 的 地 址, 作 为 CPU 外 设 的 控 制 寄 存 器 SPI, 以 及 其 他 I/O 功 能 映 射 到 数 据 空 间 即 为 寄 存 器 文 件 之 后 的 地 址 x2 - x5f 8 ATmega8(L)
ATmega8(L) ALU - 算 术 逻 辑 单 元 状 态 寄 存 器 AVR ALU 与 32 个 通 用 工 作 寄 存 器 直 接 相 连 寄 存 器 与 寄 存 器 之 间 寄 存 器 与 立 即 数 之 间 的 ALU 运 算 只 需 要 一 个 时 钟 周 期 ALU 操 作 分 为 3 类 : 算 术 逻 辑 和 位 操 作 此 外 还 提 供 了 支 持 无 / 有 符 号 数 和 分 数 乘 法 的 乘 法 器 具 体 请 参 见 指 令 集 状 态 寄 存 器 包 含 了 最 近 执 行 的 算 术 指 令 的 结 果 信 息 这 些 信 息 可 以 用 来 改 变 程 序 流 程 以 实 现 条 件 操 作 如 指 令 集 所 述, 所 有 ALU 运 算 都 将 影 响 状 态 寄 存 器 的 内 容 这 样, 在 许 多 情 况 下 就 不 需 要 专 门 的 比 较 指 令 了, 从 而 使 系 统 运 行 更 快 速, 代 码 效 率 更 高 在 进 入 中 断 服 务 程 序 时 状 态 寄 存 器 不 会 自 动 保 存, 中 断 返 回 时 也 不 会 自 动 恢 复 这 些 工 作 需 要 软 件 来 处 理 AVR 中 断 寄 存 器 SREG 定 义 如 下 : Bit 7 6 5 4 3 2 I T H S V N Z C SREG 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 Bit 7 I: 全 局 中 断 使 能 I 置 位 时 使 能 全 局 中 断 单 独 的 中 断 使 能 由 其 他 独 立 的 控 制 寄 存 器 控 制 如 果 I 清 零, 则 不 论 单 独 中 断 标 志 置 位 与 否, 都 不 会 产 生 中 断 任 意 一 个 中 断 发 生 后 I 清 零, 而 执 行 RETI 指 令 后 I 恢 复 置 位 以 使 能 中 断 I 也 可 以 通 过 SEI 和 CLI 指 令 来 置 位 和 清 零 Bit 6 T: 位 拷 贝 存 储 位 拷 贝 指 令 BLD 和 BST 利 用 T 作 为 目 的 或 源 地 址 BST 把 寄 存 器 的 某 一 位 拷 贝 到 T, 而 BLD 把 T 拷 贝 到 寄 存 器 的 某 一 位 Bit 5 H: 半 进 位 标 志 半 进 位 标 志 H 表 示 算 术 操 作 发 生 了 半 进 位 此 标 志 对 于 BCD 运 算 非 常 有 用 详 见 指 令 集 的 说 明 Bit 4 S: 符 号 位, S = N V S 为 负 数 标 志 N 与 2 的 补 码 溢 出 标 志 V 的 异 或 详 见 指 令 集 的 说 明 Bit 3 V:2 的 补 码 溢 出 标 志 支 持 2 的 补 码 运 算 详 见 指 令 集 的 说 明 Bit 2 N: 负 数 标 志 表 明 算 术 或 逻 辑 操 作 结 果 为 负 详 见 指 令 集 的 说 明 Bit Z: 零 标 志 表 明 算 术 或 逻 辑 操 作 结 果 为 零 详 见 指 令 集 的 说 明 Bit C: 进 位 标 志 表 明 算 术 或 逻 辑 操 作 发 生 了 进 位 详 见 指 令 集 的 说 明 通 用 寄 存 器 文 件 寄 存 器 文 件 针 对 AVR 增 强 型 RISC 指 令 集 做 了 优 化 为 了 获 得 需 要 的 性 能 和 灵 活 性, 寄 存 器 文 件 支 持 以 下 的 输 入 / 输 出 方 案 : 输 出 一 个 8 位 操 作 数, 输 入 一 个 8 位 结 果 输 出 两 个 8 位 位 操 作 数, 输 入 一 个 8 位 结 果 输 出 两 个 8 位 位 操 作 数, 输 入 一 个 6 位 结 果 输 出 一 个 6 位 位 操 作 数, 输 入 一 个 6 位 结 果 Figure 3 为 CPU 32 个 通 用 工 作 寄 存 器 的 结 构 9
Figure 3. AVR CPU 通 用 工 作 寄 存 器 7 Addr. R x R x R2 x2 R3 xd 通 用 R4 xe 工 作 R5 xf 寄 存 器 R6 x R7 x R26 xa X 寄 存 器, 低 字 节 R27 xb X 寄 存 器, 高 字 节 R28 xc Y 寄 存 器, 低 字 节 R29 xd Y 寄 存 器, 高 字 节 R3 xe Z 寄 存 器, 低 字 节 R3 xf Z 寄 存 器, 高 字 节 大 多 数 操 作 寄 存 器 文 件 的 指 令 都 可 以 直 接 访 问 所 有 的 寄 存 器, 而 且 多 数 这 样 的 指 令 的 执 行 时 间 为 单 个 时 钟 周 期 如 Figure 3 所 示, 每 个 寄 存 器 都 有 一 个 数 据 内 存 地 址, 将 他 们 直 接 映 射 到 用 户 数 据 空 间 的 头 32 个 地 址 虽 然 寄 存 器 文 件 的 物 理 实 现 不 是 SRAM, 这 种 内 存 组 织 方 式 在 访 问 寄 存 器 方 面 具 有 极 大 的 灵 活 性, 因 为 X Y Z 寄 存 器 可 以 设 置 为 指 向 任 意 寄 存 器 的 指 针 ATmega8(L)
ATmega8(L) X Y Z 寄 存 器 寄 存 器 R26..R3 除 了 用 作 通 用 寄 存 器 外, 还 可 以 作 为 数 据 间 接 寻 址 用 的 地 址 指 针 这 三 个 间 接 寻 址 寄 存 器 示 于 Figure 4 Figure 4. X Y Z 寄 存 器 5 XH XL X 寄 存 器 7 7 R27 (xb) R26 (xa) 5 YH YL Y 寄 存 器 7 7 R29 (xd) R28 (xc) 5 ZH ZL Z 寄 存 器 7 7 R3 (xf) R3 (xe) 在 不 同 的 寻 址 模 式 中, 这 些 地 址 寄 存 器 可 以 实 现 固 定 偏 移 量, 自 动 加 一 和 自 动 减 一 功 能 具 体 细 节 请 参 见 指 令 集 堆 栈 指 针 堆 栈 指 针 主 要 用 来 保 存 临 时 数 据 局 部 变 量 和 中 断 / 子 程 序 的 返 回 地 址 堆 栈 指 针 总 是 指 向 堆 栈 的 顶 部 要 注 意 AVR 的 堆 栈 是 向 下 生 长 的, 即 新 数 据 推 入 堆 栈 时, 堆 栈 指 针 的 数 值 将 减 小 堆 栈 指 针 指 向 数 据 SRAM 堆 栈 区 在 此 聚 集 了 子 程 序 堆 栈 和 中 断 堆 栈 调 用 子 程 序 和 使 能 中 断 之 前 必 须 定 义 堆 栈 空 间, 且 堆 栈 指 针 必 须 指 向 高 于 x6 的 地 址 空 间 使 用 PUSH 指 令 将 数 据 推 入 堆 栈 时 指 针 减 一 ; 而 子 程 序 或 中 断 返 回 地 址 推 入 堆 栈 时 指 针 将 减 二 使 用 POP 指 令 将 数 据 弹 出 堆 栈 时, 堆 栈 指 针 加 一 ; 而 用 RET 或 RETI 指 令 从 子 程 序 或 中 断 返 回 时 堆 栈 指 针 加 二 AVR 的 堆 栈 指 针 由 I/O 空 间 中 的 两 个 8 位 寄 存 器 实 现 实 际 使 用 的 位 数 与 具 体 器 件 有 关 请 注 意 某 些 AVR 器 件 的 数 据 区 太 小, 用 SPL 就 足 够 了 此 时 将 不 给 出 SPH 寄 存 器 Bit 5 4 3 2 9 8 SP5 SP4 SP3 SP2 SP SP SP9 SP8 SPH SP7 SP6 SP5 SP4 SP3 SP2 SP SP SPL 7 6 5 4 3 2 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 指 令 执 行 时 序 这 一 节 介 绍 指 令 执 行 过 程 中 的 访 问 时 序 AVR CPU 由 系 统 时 钟 clk CPU 驱 动 此 时 钟 直 接 来 自 选 定 的 时 钟 源 芯 片 内 部 不 对 此 时 钟 进 行 分 频 Figure 5 说 明 了 由 Harvard 结 构 决 定 的 并 行 取 指 和 指 令 执 行, 以 及 可 以 进 行 快 速 访 问 的 寄 存 器 文 件 的 概 念 这 是 一 个 基 本 的 流 水 线 概 念, 性 能 高 达 MIPS/MHz, 具 有 优 良 的 性 价 比 功 能 / 时 钟 比 功 能 / 功 耗 比
Figure 5. 并 行 取 指 和 指 令 执 行 T T2 T3 T4 clk CPU st Instruction Fetch st Instruction Execute 2nd Instruction Fetch 2nd Instruction Execute 3rd Instruction Fetch 3rd Instruction Execute 4th Instruction Fetch Figure 6 演 示 的 是 寄 存 器 文 件 内 部 访 问 时 序 在 一 个 时 钟 周 期 里,ALU 可 以 同 时 对 两 个 寄 存 器 操 作 数 进 行 操 作, 同 时 将 结 果 保 存 到 目 的 寄 存 器 中 去 Figure 6. 单 时 钟 周 期 ALU 操 作 T T2 T3 T4 clk CPU Total Execution Time Register Operands Fetch ALU Operation Execute Result Write Back 复 位 与 中 断 处 理 AVR 有 不 同 的 中 断 源 每 个 中 断 和 复 位 在 程 序 空 间 都 有 独 立 的 中 断 向 量 所 有 的 中 断 事 件 都 有 自 己 的 使 能 位 当 使 能 位 置 位, 且 状 态 寄 存 器 的 全 局 中 断 使 能 位 I 也 置 位 时, 中 断 可 以 发 生 根 据 程 序 计 数 器 PC 的 不 同, 在 引 导 锁 定 位 BLB2 或 BLB2 被 编 程 的 情 况 下, 中 断 可 能 被 自 动 禁 止 这 个 特 性 提 高 了 软 件 的 安 全 性 详 见 P 29 存 储 器 编 程 的 描 述 程 序 存 储 区 的 最 低 地 址 缺 省 为 复 位 向 量 和 中 断 向 量 完 整 的 向 量 列 表 请 参 见 P 43 中 断 列 表 也 决 定 了 不 同 中 断 的 优 先 级 向 量 所 在 的 地 址 越 低, 优 先 级 越 高 RESET 具 有 最 高 的 优 先 级, 第 二 个 为 INT 外 部 中 断 请 求 通 过 置 位 通 用 中 断 控 制 寄 存 器 (GICR) 的 IVSEL, 中 断 向 量 可 以 移 至 引 导 Flash 的 起 始 处, 参 见 P 43 中 断 编 程 熔 丝 位 BOOTRST 也 可 以 将 复 位 向 量 移 至 引 导 Flash 的 起 始 处 具 体 参 见 P 96 支 持 引 导 装 入 程 序 - 在 写 的 同 时 可 以 读 (RWW, Read-While-Write) 的 自 我 编 程 能 力 任 一 中 断 发 生 时 全 局 中 断 使 能 位 I 被 清 零, 从 而 禁 止 了 所 有 其 他 的 中 断 用 户 软 件 可 以 在 中 断 程 序 里 置 位 I 来 实 现 中 断 嵌 套 此 时 所 有 的 中 断 都 可 以 中 断 当 前 的 中 断 服 务 程 序 执 行 RETI 指 令 后 I 自 动 置 位 从 根 本 上 说 有 两 种 类 型 的 中 断 第 一 种 由 事 件 触 发 并 置 位 中 断 标 志 对 于 这 些 中 断, 程 序 计 数 器 跳 转 到 实 际 的 中 断 向 量 以 执 行 中 断 处 理 程 序, 同 时 硬 件 将 清 除 相 应 的 中 断 标 志 中 断 标 志 也 可 以 通 过 对 其 写 的 方 式 来 清 除 当 中 断 发 生 后, 如 果 相 应 的 中 断 使 能 位 为 "", 则 中 断 标 志 位 置 位, 并 一 直 保 持 到 中 断 执 行, 或 者 被 软 件 清 除 类 似 的, 如 果 全 局 中 断 标 志 被 清 零, 则 所 有 已 发 生 的 中 断 都 不 会 被 执 行, 直 到 I 置 位 然 后 挂 起 的 各 个 中 断 按 中 断 优 先 级 依 次 执 行 2 ATmega8(L)
ATmega8(L) 第 二 种 类 型 的 中 断 则 是 只 要 中 断 条 件 满 足, 就 会 一 直 触 发 这 些 中 断 不 需 要 中 断 标 志 若 中 断 条 件 在 中 断 使 能 之 前 就 消 失 了, 中 断 不 会 被 触 发 AVR 退 出 中 断 后 总 是 回 到 主 程 序 并 至 少 执 行 一 条 指 令 才 可 以 去 执 行 其 他 被 挂 起 的 中 断 要 注 意 的 是, 进 入 中 断 服 务 程 序 时 状 态 寄 存 器 不 会 自 动 保 存, 中 断 返 回 时 也 不 会 自 动 恢 复 这 些 工 作 必 须 由 用 户 通 过 软 件 来 完 成 使 用 CLI 指 令 来 禁 止 中 断 时, 中 断 禁 止 立 即 生 效 没 有 中 断 可 以 在 执 行 CLI 指 令 后 发 生, 即 使 它 是 在 执 行 CLI 指 令 的 同 时 发 生 的 下 面 的 例 子 说 明 了 如 何 在 写 EEPROM 时 使 用 这 个 指 令 来 防 止 中 断 发 生 以 避 免 对 EEPROM 内 容 的 破 坏 汇 编 代 码 例 程 in r6, SREG ; 保 存 SREG cli ; 禁 止 中 断 sbi EECR, EEMWE ; 启 动 EEPROM 写 操 作 sbi EECR, EEWE out SREG, r6 ; 恢 复 SREG (I 位 ) C 代 码 例 程 char csreg; csreg = SREG; /* 保 存 SREG */ /* 禁 止 中 断 */ _CLI(); EECR = (<<EEMWE); /* 启 动 EEPROM 写 操 作 */ EECR = (<<EEWE); SREG = csreg; /* 恢 复 SREG (I 位 ) */ 使 用 SEI 指 令 使 能 中 断 时, 紧 跟 其 后 的 第 一 条 指 令 在 执 行 任 何 中 断 之 前 一 定 会 首 先 得 到 执 行 汇 编 代 码 例 程 sei ; 置 位 全 局 中 断 使 能 标 志 sleep ; 进 入 休 眠 模 式, 等 待 中 断 发 生 ; 注 意 : 在 执 行 任 何 被 挂 起 的 中 断 之 前 MCU 将 首 先 进 入 休 眠 模 式 C 代 码 例 程 _SEI(); /* 置 位 全 局 中 断 使 能 标 志 */ _SLEEP(); /* 进 入 休 眠 模 式, 等 待 中 断 发 生 */ /* 注 意 : 在 执 行 任 何 被 挂 起 的 中 断 之 前 MCU 将 首 先 进 入 休 眠 模 式 */ 中 断 响 应 时 间 AVR 中 断 响 应 时 间 最 少 为 4 个 时 钟 周 期 4 个 时 钟 周 期 后, 程 序 跳 转 到 实 际 的 中 断 处 理 例 程 在 这 4 个 时 钟 期 期 间 PC 自 动 入 栈 在 通 常 情 况 下, 中 断 向 量 为 一 个 跳 转 指 令, 此 跳 转 需 要 3 个 时 钟 周 期 如 果 中 断 在 一 个 多 时 钟 周 期 指 令 执 行 期 间 发 生, 则 在 此 多 周 期 指 令 执 行 完 毕 后 MCU 才 会 执 行 中 断 程 序 若 中 断 发 生 时 MCU 处 于 休 眠 模 式, 中 断 响 应 时 间 还 需 增 加 4 个 时 钟 周 期 此 外 还 要 考 虑 到 不 同 的 休 眠 模 式 所 需 要 的 启 动 时 间 中 断 返 回 需 要 4 个 时 钟 在 此 期 间 PC( 两 个 字 节 ) 将 被 弹 出 栈, 堆 栈 指 针 加 二, 状 态 寄 存 器 SREG 的 I 置 位 3
AVR ATmega8 存 储 器 系 统 内 可 编 程 的 Flash 程 序 存 储 器 本 节 讲 述 ATmega8 的 存 储 器 AVR 结 构 具 有 两 个 主 要 的 存 储 器 空 间 : 数 据 存 储 器 空 间 和 程 序 存 储 器 空 间 此 外, ATmega8 还 有 EEPROM 存 储 器 以 保 存 数 据 这 三 个 存 储 器 空 间 都 为 线 性 的 平 面 结 构 ATmega8 具 有 8K 字 节 的 在 线 编 程 Flash, 用 于 存 放 程 序 指 令 代 码 因 为 所 有 的 AVR 指 令 为 6 位 或 32 位, 故 而 Flash 组 织 成 4K x 6 位 的 形 式 用 户 程 序 的 安 全 性 要 根 据 Flash 程 序 存 储 器 的 两 个 区 : 引 导 (Boot) 程 序 区 和 应 用 程 序 区, 分 开 来 考 虑 Flash 存 储 器 至 少 可 以 擦 写, 次 ATmega8 的 程 序 计 数 器 (PC) 为 2 位, 因 此 可 以 寻 址 4K 字 的 程 序 存 储 器 空 间 引 导 程 序 区 以 及 相 关 的 软 件 安 全 锁 定 位 请 参 见 P 96 支 持 引 导 装 入 程 序 - 在 写 的 同 时 可 以 读 (RWW, Read-While-Write) 的 自 我 编 程 能 力, 而 P 29 存 储 器 编 程 详 述 了 用 SPI 或 平 行 编 程 模 式 实 现 对 Flash 编 程 常 数 可 以 保 存 于 整 个 程 序 存 储 器 地 址 空 间 ( 参 考 LPM 加 载 程 序 存 储 器 指 令 的 说 明 ) 取 指 与 执 行 时 序 图 请 参 见 P 指 令 执 行 时 序 Figure 7. 程 序 存 储 器 映 像 $ Application Flash Section Boot Flash Section $FFF 4 ATmega8(L)
ATmega8(L) SRAM 数 据 存 储 器 Figure 8 给 出 了 ATmega8 SRAM 空 间 的 组 织 结 构 前 2 个 数 据 存 储 器 包 括 了 寄 存 器 文 件 I/O 存 储 器 及 内 部 数 据 SRAM 起 始 的 96 个 地 址 为 寄 存 器 文 件 与 I/O 存 储 器, 接 着 是 24 字 节 的 内 部 数 据 SRAM 数 据 存 储 器 的 寻 址 方 式 分 为 5 种 : 直 接 寻 址 带 偏 移 量 的 间 接 寻 址 间 接 寻 址 带 预 减 量 的 间 接 寻 址 和 带 后 增 量 的 间 接 寻 址 寄 存 器 文 件 中 的 寄 存 器 R26 到 R3 为 间 接 寻 址 的 指 针 寄 存 器 直 接 寻 址 范 围 可 达 整 个 数 据 区 带 偏 移 量 的 间 接 寻 址 模 式 能 够 寻 址 到 由 寄 存 器 Y 和 Z 给 定 的 基 址 附 近 的 63 个 地 址 在 自 动 预 减 和 后 加 的 间 接 寻 址 模 式 中, 寄 存 器 X Y 和 Z 自 动 增 加 或 减 少 ATmega8 的 全 部 32 个 通 用 寄 存 器 64 个 I/O 寄 存 器 及 24 个 字 节 的 内 部 数 据 SRAM 可 以 通 过 所 有 上 述 的 寻 址 模 式 进 行 访 问 寄 存 器 文 件 的 描 述 见 P 9 通 用 寄 存 器 文 件 Figure 8. 数 据 存 储 器 映 像 Register File R R R2... Data Address Space $ $ $2... R29 R3 R3 I/O Registers $ $ $2... $3D $3E $3F $D $E $F $2 $2 $22... $5D $5E $5F Internal SRAM $6 $6... $45E $45F 5
数 据 存 储 器 访 问 时 间 本 节 说 明 访 问 内 部 存 储 器 的 时 序, 内 部 数 据 SRAM 访 问 时 间 为 两 个 clk CPU 时 钟, 如 Figure 9 所 示 Figure 9. 片 上 数 据 SRAM 存 取 周 期 T T2 T3 clk CPU Address Compute Address Address Valid Data WR Data RD Read Write Memory Vccess Instruction Next Instruction EEPROM 数 据 存 储 器 ATmega8 包 含 52 字 节 的 EEPROM 数 据 存 储 器 它 是 作 为 一 个 独 立 的 数 据 空 间 而 存 在 的, 可 以 按 字 节 读 写 EEPROM 的 寿 命 至 少 为, 次 擦 除 周 期 EEPROM 的 访 问 由 地 址 寄 存 器 数 据 寄 存 器 和 控 制 寄 存 器 决 定 P 29 存 储 器 编 程 包 含 使 用 SPI 或 并 行 编 程 模 式 对 EEPROM 编 程 EEPROM 读 / 写 访 问 EEPROM 的 访 问 寄 存 器 位 于 I/O 空 间 EEPROM 的 写 访 问 时 间 由 Table 给 出 自 定 时 功 能 可 以 让 用 户 软 件 监 测 何 时 可 以 开 始 写 下 一 字 节 用 户 操 作 EEPROM 需 要 注 意 如 下 问 题 : 在 电 源 滤 波 时 间 常 数 比 较 大 的 电 路 中, 上 电 / 下 电 时 V CC 上 升 / 下 降 速 度 会 比 较 慢 此 时 CPU 可 能 工 作 于 低 于 晶 振 所 要 求 的 电 源 电 压 请 参 见 P 2 防 止 EEPROM 数 据 丢 失 以 避 免 出 现 EEPROM 数 据 丢 失 的 问 题 为 了 防 止 无 意 间 对 EEPROM 的 写 操 作, 需 要 执 行 一 个 特 定 的 写 时 序 具 体 参 看 EEPROM 控 制 寄 存 器 的 内 容 执 行 EEPROM 读 操 作 时, CPU 会 停 止 工 作 4 个 周 期, 然 后 再 执 行 后 续 指 令 ; 执 行 EEPROM 写 操 作 时, CPU 会 停 止 工 作 2 个 周 期, 然 后 再 执 行 后 续 指 令 6 ATmega8(L)
ATmega8(L) EEPROM 地 址 寄 存 器 - EEARH 和 EEARL Bit 5 4 3 2 9 8 EEAR8 EEARH EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR EEAR EEARL 7 6 5 4 3 2 读 / 写 R R R R R R R R/W R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 X X X X X X X X X Bits 5..9 Res: 保 留 保 留 位, 读 操 作 返 回 值 为 零 Bits 8.. EEAR8..: EEPROM 地 址 EEPROM 地 址 寄 存 器 EEARH 和 EEARL 指 定 了 52 字 节 的 EEPROM 空 间 EEPROM 地 址 是 线 性 的, 从 到 5 EEAR 的 初 始 值 没 有 定 义 在 访 问 EEPROM 之 前 必 须 为 其 赋 予 正 确 的 数 据 EEPROM 数 据 寄 存 器 - EEDR Bit 7 6 5 4 3 2 MSB LSB EEDR 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 Bits 7.. EEDR7..: EEPROM 数 据 对 于 EEPROM 写 操 作, EEDR 是 需 要 写 到 EEAR 单 元 的 数 据 ; 对 于 读 操 作, EEDR 是 从 地 址 EEAR 读 取 的 数 据 EEPROM 控 制 寄 存 器 - EECR Bit 7 6 5 4 3 2 EERIE EEMWE EEWE EERE EECR 读 / 写 R R R R R/W R/W R/W R/W 初 始 值 X Bits 7..4 Res: 保 留 保 留 位, 读 操 作 返 回 值 为 零 Bit 3 EERIE: EEPROM 就 绪 中 断 使 能 若 SREG 的 I 为 "", 则 置 位 EERIE 将 使 能 EEPROM 就 绪 中 断 清 零 EERIE 则 禁 止 此 中 断 当 EEWE 清 零 时 EEPROM 就 绪 中 断 即 可 发 生 Bit 2 EEMWE: EEPROM 主 机 写 使 能 EEMWE 决 定 了 EEWE 置 位 是 否 可 以 启 动 EEPROM 写 操 作 当 EEMWE 为 "" 时, 在 4 个 时 钟 周 期 内 置 位 EEWE 将 把 数 据 写 入 EEPROM 的 指 定 地 址 ; 若 EEMWE 为 ", 则 操 作 EEWE 不 起 作 用 EEMWE 置 位 后 4 个 周 期, 硬 件 对 其 清 零 见 EEPROM 写 过 程 中 对 EEWE 位 的 描 述 Bit EEWE: EEPROM 写 使 能 EEWE 为 EEPROM 写 操 作 的 使 能 信 号 当 EEPROM 数 据 和 地 址 设 置 好 之 后, 需 置 位 EEWE 以 便 将 数 据 写 入 EEPROM 此 时 EEMWE 必 须 置 位, 否 则 EEPROM 写 操 作 将 不 会 发 生 写 时 序 如 下 ( 第 3 步 和 第 4 步 的 次 序 并 不 重 要 ):. 等 待 EEWE 位 变 为 零 2. 等 待 SPMCSR 中 的 SPMEN 位 变 为 零 3. 将 新 的 EEPROM 地 址 写 入 EEAR( 可 选 ) 7
4. 将 新 的 EEPROM 数 据 写 入 EEDR( 可 选 ) 5. 对 EECR 寄 存 器 的 EEMWE 写 "", 同 时 清 零 EEWE 6. 在 置 位 EEMWE 的 4 个 周 期 内, 置 位 EEWE 在 CPU 写 Flash 存 储 器 的 时 候 不 能 对 EEPROM 进 行 编 程 在 启 动 EEPROM 写 操 作 之 前 软 件 必 须 检 查 Flash 写 操 作 是 否 已 经 完 成 步 骤 (2) 仅 在 软 件 包 含 引 导 程 序 并 允 许 CPU 对 Flash 进 行 编 程 时 才 有 用 如 果 CPU 永 远 都 不 会 写 Flash, 步 骤 (2) 可 省 略 请 参 见 P 96 支 持 引 导 装 入 程 序 - 在 写 的 同 时 可 以 读 (RWW, Read-While-Write) 的 自 我 编 程 能 力 注 意 : 如 果 在 步 骤 5 和 6 之 间 发 生 了 中 断, 写 操 作 将 失 败 因 为 此 时 EEPROM 写 使 能 操 作 将 超 时 如 果 一 个 操 作 EEPROM 的 中 断 打 断 了 另 一 个 EEPROM 操 作,EEAR 或 EEDR 寄 存 器 可 能 被 修 改, 引 起 EEPROM 操 作 失 败 建 议 此 时 关 闭 全 局 中 断 标 志 I 经 过 写 访 问 时 间 之 后,EEWE 硬 件 清 零 用 户 可 以 凭 借 这 一 位 判 断 写 时 序 是 否 已 经 完 成 EEWE 置 位 后, CPU 要 停 止 两 个 时 钟 周 期 才 会 运 行 下 一 条 指 令 Bit EERE: EEPROM 读 使 能 EERE 为 EEPROM 读 操 作 的 使 能 信 号 当 EEPROM 地 址 设 置 好 之 后, 需 置 位 EERE 以 便 将 数 据 读 入 EEAR EEPROM 数 据 的 读 取 只 需 要 一 条 指 令, 且 无 需 等 待 读 取 EEPROM 后 CPU 要 停 止 4 个 时 钟 周 期 才 可 以 执 行 下 一 条 指 令 用 户 在 读 取 EEPROM 时 应 该 检 测 EEWE 如 果 一 个 写 操 作 正 在 进 行, 就 无 法 读 取 EEPROM, 也 无 法 改 变 寄 存 器 EEAR 经 过 校 准 的 片 内 振 荡 器 用 于 EEPROM 定 时 Table 为 CPU 访 问 EEPROM 的 典 型 时 间 Table. EEPROM 编 程 时 间 符 号 () 校 准 的 RC 振 荡 器 周 期 数 典 型 的 编 程 时 间 EEPROM 写 操 作 (CPU) 8448 8.5 ms Note:. 使 用 时 钟 频 率 为 MHz, 不 倚 赖 CKSEL 熔 丝 位 的 设 置 8 ATmega8(L)
ATmega8(L) 下 面 的 代 码 分 别 用 汇 编 和 C 函 数 说 明 如 何 实 现 EEPROM 的 写 操 作 在 此 假 设 中 断 不 会 在 执 行 这 些 函 数 的 过 程 当 中 发 生 同 时 还 假 设 软 件 没 有 Boot Loader 若 Boot Loader 存 在, 则 EEPROM 写 函 数 还 需 要 等 待 正 在 运 行 的 SPM 命 令 的 结 束 汇 编 代 码 例 程 EEPROM_write: ; 等 待 上 一 次 写 操 作 结 束 sbic EECR,EEWE rjmp EEPROM_write ; 设 置 地 址 寄 存 器 (r8:r7) out EEARH, r8 out EEARL, r7 ; 将 数 据 写 入 数 据 寄 存 器 (r6) out EEDR,r6 ; 置 位 EEMWE sbi EECR,EEMWE ; 置 位 EEWE 以 启 动 写 操 作 sbi EECR,EEWE ret C 代 码 例 程 void EEPROM_write(unsigned int uiaddress, unsigned char ucdata) { /* 等 待 上 一 次 写 操 作 结 束 */ while(eecr & (<<EEWE)) ; /* 设 置 地 址 和 数 据 寄 存 器 */ EEAR = uiaddress; EEDR = ucdata; /* 置 位 EEMWE */ EECR = (<<EEMWE); /* 置 位 EEWE 以 启 动 写 操 作 */ EECR = (<<EEWE); } 9
下 面 的 例 子 说 明 如 何 用 汇 编 和 C 函 数 来 读 取 EEPROM, 在 此 假 设 中 断 不 会 在 执 行 这 些 函 数 的 过 程 当 中 发 生 汇 编 代 码 例 程 EEPROM_read: ; 等 待 上 一 次 写 操 作 结 束 sbic EECR,EEWE rjmp EEPROM_read ; 设 置 地 址 寄 存 器 (r8:r7) out EEARH, r8 out EEARL, r7 ; 设 置 EERE 以 启 动 读 操 作 sbi EECR,EERE ; 自 数 据 寄 存 器 读 取 数 据 in r6,eedr ret C 代 码 例 程 unsigned char EEPROM_read(unsigned int uiaddress) { /* 等 待 上 一 次 写 操 作 结 束 */ while(eecr & (<<EEWE)) ; /* 设 置 地 址 寄 存 器 */ EEAR = uiaddress; /* 设 置 EERE 以 启 动 读 操 作 */ EECR = (<<EERE); /* 自 数 据 寄 存 器 返 回 数 据 */ return EEDR; } 在 掉 电 休 眠 模 式 下 的 EEPROM 写 操 作 防 止 EEPROM 数 据 丢 失 若 程 序 执 行 掉 电 指 令 时 EEPROM 的 写 操 作 正 在 进 行, EEPROM 的 写 操 作 将 继 续, 并 在 指 定 的 写 访 问 时 间 之 前 完 成 但 写 操 作 结 束 后, 振 荡 器 还 将 继 续 运 行, 芯 片 并 非 处 于 完 全 的 掉 电 模 式 因 此 在 执 行 掉 电 指 令 之 前 应 结 束 EEPROM 的 写 操 作 若 电 源 电 压 过 低,CPU 和 EEPROM 有 可 能 工 作 不 正 常, 造 成 EEPROM 数 据 的 毁 坏 ( 丢 失 ) 这 种 情 况 在 使 用 独 立 的 EEPROM 器 件 时 也 会 遇 到 因 而 需 要 使 用 相 同 的 保 护 方 案 由 于 电 压 过 低 造 成 EEPROM 数 据 损 坏 有 两 种 可 能 : 一 是 电 压 低 于 EEPROM 写 操 作 所 需 要 的 最 低 电 压 ; 二 是 CPU 本 身 已 经 无 法 正 常 工 作 EEPROM 数 据 损 坏 的 问 题 可 以 通 过 以 下 方 法 解 决 : 当 电 压 过 低 时 保 持 AVR RESET 信 号 为 低 这 可 以 通 过 使 能 芯 片 的 掉 电 检 测 电 路 BOD 来 实 现 如 果 BOD 电 平 无 法 满 足 要 求 则 可 以 使 用 外 部 复 位 电 路 若 写 操 作 过 程 当 中 发 生 了 复 位, 只 要 电 压 足 够 高, 写 操 作 仍 将 正 常 结 束 I/O 存 储 器 ATmega8 的 I/O 空 间 定 义 见 P 27 2 ATmega8(L) ATmega8 所 有 的 I/O 及 外 设 都 被 放 置 于 I/O 空 间 所 有 的 I/O 位 置 都 可 以 通 过 IN 与 OUT 指 令 来 访 问, 在 32 个 通 用 工 作 寄 存 器 和 I/O 之 间 传 输 数 据 地 址 为 x - xf 的 I/O 寄 存 器 还 可 用 SBI 和 CBI 指 令 直 接 进 行 位 寻 址, 而 SBIS 和 SBIC 则 用 来 检 查 某 一 位 的 值 更 多 内 容 请 参 见 指 令 集 使 用 IN 和 OUT 指 令 时 地 址 必 须 在 x - x3f 之 间 如 果 要 象 SRAM 一 样 通 过 LD 和 ST 指 令 访 问 I/O 寄 存 器, 相 应 的 地 址 要 加 上 x2
ATmega8(L) 为 了 与 后 续 产 品 兼 容, 保 留 未 用 的 未 应 写 "", 而 保 留 的 I/O 寄 存 器 则 不 应 进 行 写 操 作 一 些 状 态 标 志 位 的 清 除 是 通 过 写 "" 来 实 现 的 要 注 意 的 是, 与 其 他 大 多 数 AVR 不 同, CBI 和 SBI 指 令 只 能 对 某 些 特 定 的 位 进 行 操 作, 因 而 可 以 用 于 包 含 这 些 状 态 标 志 的 寄 存 器 CBI 与 SBI 指 令 只 对 x 到 xf 的 寄 存 器 有 效 I/O 和 外 设 控 制 寄 存 器 在 后 续 其 他 章 节 进 行 介 绍 2
系 统 时 钟 及 时 钟 选 项 时 钟 系 统 及 其 分 布 Figure 为 AVR 的 主 要 时 钟 系 统 及 其 分 布 这 些 时 钟 并 不 需 要 同 时 工 作 为 了 降 低 功 耗, 可 以 通 过 使 用 不 同 的 睡 眠 模 式 来 禁 止 无 需 工 作 的 模 块 的 时 钟, 详 见 P 3 电 源 管 理 及 睡 眠 模 式 时 钟 系 统 详 见 Figure Figure. 时 钟 分 布 Asynchronous Timer/Counter General I/O Modules ADC CPU Core RAM Flash and EEPROM clk ADC clk I/O AVR Clock Control Unit clk CPU clk ASY clk FLASH Reset Logic Watchdog Timer Source Clock Watchdog Clock Clock Multiplexer Watchdog Oscillator Timer/Counter Oscillator External RC Oscillator External Clock Crystal Oscillator Low-Frequency Crystal Oscillator Calibrated RC Oscillator CPU 时 钟 - clk CPU I/O 时 钟 - clk I/O CPU 时 钟 与 操 作 AVR 内 核 的 子 系 统 相 连, 如 通 用 寄 存 器 文 件 状 态 寄 存 器 及 保 存 堆 栈 指 针 的 数 据 存 储 器 终 止 CPU 时 钟 将 使 内 核 停 止 工 作 和 计 算 I/O 时 钟 用 于 主 要 的 I/O 模 块, 如 定 时 器 / 计 数 器 SPI 和 USART I/O 时 钟 还 用 于 外 部 中 断 模 块 要 注 意 的 是 有 些 外 部 中 断 由 异 步 逻 辑 检 测, 因 此 即 使 I/O 时 钟 停 止 了 这 些 中 断 仍 然 可 以 得 到 监 控 此 外, USI 模 块 的 起 始 条 件 检 测 在 没 有 clk I/O 的 情 况 下 也 是 异 步 实 现 的, 使 得 这 个 功 能 在 任 何 睡 眠 模 式 下 都 可 以 正 常 工 作 Flash 时 钟 - clk FLASH Flash 时 钟 控 制 Flash 接 口 的 操 作 此 时 钟 通 常 与 CPU 时 钟 同 时 挂 起 或 激 活 22 ATmega8(L)
ATmega8(L) 异 步 定 时 器 时 钟 - clk ASY ADC 时 钟 - clk ADC 时 钟 源 异 步 定 时 器 时 钟 允 许 异 步 定 时 器 / 计 数 器 直 接 由 外 部 32 khz 时 钟 晶 体 驱 动 使 得 此 定 时 器 / 计 数 器 即 使 在 睡 眠 模 式 下 仍 然 可 以 为 系 统 提 供 一 个 实 时 时 钟 异 步 定 时 器 / 计 数 器 与 CPU 主 时 钟 使 用 相 同 的 XTAL 引 脚, 但 其 需 要 的 时 钟 频 率 是 振 荡 器 频 率 的 四 倍 因 此, 只 有 当 芯 片 使 用 内 部 振 荡 器 时 异 步 操 作 才 有 效 ADC 具 有 专 门 的 时 钟 这 样 可 以 在 ADC 工 作 的 时 候 停 止 CPU 和 I/O 时 钟 以 降 低 数 字 电 路 产 生 的 噪 声, 从 而 提 高 ADC 转 换 精 度 ATmega8 芯 片 有 如 下 几 种 通 过 Flash 熔 丝 位 进 行 选 择 的 时 钟 源 时 钟 输 入 到 AVR 时 钟 发 生 器, 再 分 配 到 相 应 的 模 块 Table 2. 时 钟 源 选 择 () 芯 片 时 钟 选 项 CKSEL3.. 外 部 晶 体 / 陶 瓷 振 荡 器 - 外 部 低 频 晶 振 外 部 RC 振 荡 器 - 标 定 的 内 部 RC 振 荡 器 - 外 部 时 钟 Note:. 对 于 所 有 的 熔 丝 位, 表 示 未 编 程, 表 示 已 编 程 不 同 的 时 钟 选 项 将 在 后 续 部 分 进 行 介 绍 当 CPU 自 掉 电 模 式 或 省 电 模 式 唤 醒 之 后, 被 选 择 的 时 钟 源 用 来 为 启 动 过 程 定 时, 保 证 振 荡 器 在 开 始 执 行 指 令 之 前 进 入 稳 定 状 态 当 CPU 从 复 位 开 始 工 作 时, 还 有 额 外 的 延 迟 时 间 以 保 证 在 MCU 开 始 正 常 工 作 之 前 电 源 达 到 稳 定 电 平 这 个 启 动 时 间 的 定 时 由 看 门 狗 振 荡 器 完 成 看 门 狗 溢 出 时 间 所 对 应 的 WDT 振 荡 器 周 期 数 列 于 Table 3 看 门 狗 振 荡 器 的 频 率 由 工 作 电 压 决 定, 详 见 ATmega8 典 型 特 性 芯 片 出 厂 时 CKSEL =, SUT = ( MHz 片 内 RC 振 荡 器, 电 源 缓 慢 上 升 ) Table 3. 看 门 狗 振 荡 器 周 期 数 典 型 的 溢 出 时 间 (V CC = 5.V) 典 型 的 溢 出 时 间 (V CC = 3.V) 时 钟 周 期 数 4. ms 4.3 ms 4K (4,96) 65 ms 69 ms 64K (65,536) 23
晶 体 振 荡 器 XTAL 与 XTAL2 分 别 为 用 作 片 内 振 荡 器 的 反 向 放 大 器 的 输 入 和 输 出, 如 Figure 所 示, 这 个 振 荡 器 可 以 使 用 石 英 晶 体, 也 可 以 使 用 陶 瓷 谐 振 器 熔 丝 位 CKOPT 用 来 选 择 这 两 种 放 大 器 模 式 的 其 中 之 一 当 CKOPT 被 编 程 时 振 荡 器 在 输 出 引 脚 产 生 满 幅 度 的 振 荡 这 种 模 式 适 合 于 噪 声 环 境, 以 及 需 要 通 过 XTAL2 驱 动 第 二 个 时 钟 缓 冲 器 的 情 况 而 且 这 种 模 式 的 频 率 范 围 比 较 宽 当 保 持 CKOPT 为 未 编 程 状 态 时, 振 荡 器 的 输 出 信 号 幅 度 比 较 小 其 优 点 是 大 大 降 低 了 功 耗, 但 是 频 率 范 围 比 较 窄, 而 且 不 能 驱 动 其 他 时 钟 缓 冲 器 对 于 谐 振 器, CKOPT 未 编 程 时 的 最 大 频 率 为 8 MHz, CKOPT 编 程 时 为 6 MHz C 和 C2 的 数 值 要 一 样, 不 管 使 用 的 是 晶 体 还 是 谐 振 器 最 佳 的 数 值 与 使 用 的 晶 体 或 谐 振 器 有 关, 还 与 杂 散 电 容 和 环 境 的 电 磁 噪 声 有 关 Table 4 给 出 了 针 对 晶 体 选 择 电 容 的 一 些 指 南 对 于 陶 瓷 谐 振 器, 应 该 使 用 厂 商 提 供 的 数 值 若 想 得 到 更 多 的 有 关 如 何 选 择 电 容 以 及 振 荡 器 如 何 工 作 的 信 息, 请 参 考 多 用 途 振 荡 器 应 用 手 册 Figure. 晶 体 振 荡 器 连 接 图 C2 C XTAL2 XTAL GND 振 荡 器 可 以 工 作 于 三 种 不 同 的 模 式, 每 一 种 都 有 一 个 优 化 的 频 率 范 围 工 作 模 式 通 过 熔 丝 位 CKSEL3.. 来 选 择, 如 Table 4 所 示 Table 4. 晶 体 振 荡 器 工 作 模 式 CKOPT CKSEL3.. 频 率 范 围 (MHz) Note:. 此 选 项 不 适 用 于 晶 体, 只 能 用 于 陶 瓷 谐 振 器 使 用 晶 体 时 电 容 C 和 C2 的 推 荐 范 围 (pf) ().4 -.9.9-3. 2-22 3. - 8. 2-22,,. 2-22 如 Table 5 所 示, 熔 丝 位 CKSEL 以 及 SUT.. 用 于 选 择 启 动 时 间 24 ATmega8(L)
ATmega8(L) Table 5. 晶 体 振 荡 器 时 钟 选 项 对 应 的 启 动 时 间 CKSEL SUT.. 掉 电 与 节 电 模 式 下 的 启 动 时 间 复 位 时 额 外 的 延 迟 时 间 (V CC = 5.V) 258 CK () 4. ms 258 CK () 65 ms 推 荐 用 法 Notes:. 这 些 选 项 只 能 用 于 工 作 频 率 不 太 接 近 于 最 大 频 率, 而 且 启 动 时 的 频 率 稳 定 性 对 于 应 用 而 言 不 重 要 的 情 况 不 适 用 于 晶 体 2. 这 些 选 项 是 为 陶 瓷 谐 振 器 设 计 的, 可 以 保 证 启 动 时 频 率 足 够 稳 定 若 工 作 频 率 不 太 接 近 于 最 大 频 率, 而 且 启 动 时 的 频 率 稳 定 性 对 于 应 用 而 言 不 重 要 时 也 适 用 于 晶 体 低 频 晶 体 振 荡 器 为 了 使 用 32.768 khz 钟 表 晶 体 作 为 器 件 的 时 钟 源, 必 须 将 熔 丝 位 CKSEL 设 置 为 以 选 择 低 频 晶 体 振 荡 器 晶 体 的 连 接 方 式 如 Figure 所 示 通 过 对 熔 丝 位 CKOPT 的 编 程, 用 户 可 以 使 能 XTAL 和 XTAL2 的 内 部 电 容, 从 而 去 除 外 部 电 容 内 部 电 容 的 标 称 数 值 为 36 pf 选 择 了 这 个 振 荡 器 之 后, 启 动 时 间 由 熔 丝 位 SUT 确 定, 如 Table 6 所 示 Table 6. 低 频 晶 体 振 荡 器 的 启 动 时 间 Note:. 这 些 选 项 只 能 用 于 启 动 时 的 频 率 稳 定 性 对 应 用 而 言 不 重 要 的 情 况 陶 瓷 谐 振 器, 电 源 快 速 上 升 陶 瓷 谐 振 器, 电 源 缓 慢 上 升 K CK (2) 陶 瓷 谐 振 器, BOD 使 能 K CK (2) 4. ms K CK (2) 65 ms 陶 瓷 谐 振 器, 电 源 快 速 上 升 陶 瓷 谐 振 器, 电 源 缓 慢 上 升 6K CK 石 英 振 荡 器,BOD 使 能 6K CK 4. ms 6K CK 65 ms SUT.. 掉 电 模 式 和 省 电 模 式 的 启 动 时 间 复 位 时 的 额 外 延 迟 时 间 (V CC = 5.V) 推 荐 用 法 石 英 振 荡 器, 电 源 快 速 上 升 石 英 振 荡 器, 电 源 慢 速 上 升 K CK () 4. ms 电 源 快 速 上 升, 或 是 BOD 使 能 K CK () 65 ms 电 源 缓 慢 上 升 32K CK 65 ms 启 动 时 频 率 已 经 稳 定 保 留 外 部 RC 振 荡 器 对 于 时 间 不 敏 感 的 应 用 可 以 使 用 Figure 2 对 于 时 间 不 敏 感 的 应 用 可 以 使 用 Figure 2 的 外 部 RC 振 荡 器 频 率 可 以 通 过 方 程 f = /(3RC) 进 行 粗 略 地 鼓 估 计 电 容 C 至 少 要 22 pf 通 过 编 程 熔 丝 位 CKOPT, 用 户 可 以 使 能 XTAL 和 GND 之 间 的 片 内 36 pf 电 容, 从 而 无 需 外 部 电 容 25
Figure 2. 外 部 RC 配 置 VCC R C NC XTAL2 XTAL GND 振 荡 器 可 以 工 作 于 四 个 不 同 的 模 式, 每 个 模 式 有 自 己 的 优 化 频 率 范 围 工 作 模 式 通 过 熔 丝 位 CKSEL3.. 选 取, 如 Table 7 所 示 Table 7. 外 部 RC 振 荡 器 工 作 模 式 CKSEL3.. 频 率 范 围 (MHz).9.9-3. 3. - 8. 8. - 2. 选 择 了 这 个 振 荡 器 之 后, 启 动 时 间 由 熔 丝 位 SUT 确 定, 如 Table 8 所 示 Table 8. 外 部 RC 振 荡 器 的 启 动 时 间 SUT.. 掉 电 模 式 和 省 电 模 式 的 启 动 时 间 复 位 时 的 额 外 延 迟 时 间 (V CC = 5.V) 推 荐 用 法 8 CK BOD 使 能 8 CK 4. ms 电 源 快 速 上 升 8 CK 65 ms 电 源 缓 慢 上 升 6 CK () 4. ms 电 源 快 速 上 升, 或 是 BOD 使 能 Note:. 这 些 选 项 只 能 用 于 工 作 频 率 不 太 接 近 于 最 大 频 率 时 的 情 况 26 ATmega8(L)
ATmega8(L) 标 定 的 片 内 RC 振 荡 器 标 定 的 片 内 RC 振 荡 器 提 供 了 固 定 的. 2. 4. 或 8. MHz 的 时 钟 这 些 频 率 都 是 5V 25 C 下 的 标 称 数 值 这 个 时 钟 也 可 以 作 为 系 统 时 钟, 只 要 按 照 Table 9 对 熔 丝 位 CKSEL 进 行 编 程 即 可 选 择 这 个 时 钟 ( 此 时 不 能 对 CKOPT 进 行 编 程 ) 之 后 就 无 需 外 部 器 件 了 复 位 时 硬 件 将 标 定 字 节 加 载 到 OSCCAL 寄 存 器, 自 动 完 成 对 RC 振 荡 器 的 标 定 在 5V, 25 C 和 频 率 为. MHz 时, 这 种 标 定 可 以 提 供 标 称 频 率 ± 3% 的 精 度 ; 使 用 www.atmel.com/avr 中 所 给 出 的 方 法, 可 在 任 何 电 压 任 何 温 度 下, 使 精 度 达 到 ± % 当 使 用 这 个 振 荡 器 作 为 系 统 时 钟 时, 看 门 狗 仍 然 使 用 自 己 的 看 门 狗 定 时 器 作 为 溢 出 复 位 的 依 据 更 多 的 有 关 标 定 数 据 的 信 息 请 参 见 P 2 标 定 字 节 Table 9. 片 内 标 定 的 RC 振 荡 器 工 作 模 式 CKSEL3.. Note:. 出 厂 时 的 设 置 选 择 了 这 个 振 荡 器 之 后, 启 动 时 间 由 熔 丝 位 SUT 确 定, 如 Table 所 示 PB6 (XTAL/TOSC) 与 PB7(XTAL2/TOSC2) 即 可 作 为 通 用 I/O 引 脚, 又 可 作 为 定 时 振 荡 器 引 脚 Note:. 出 厂 时 的 设 置 标 称 频 率 (MHz) (). 2. 4. 8. Table. 内 部 标 定 RC 振 荡 器 的 启 动 时 间 SUT.. 掉 电 模 式 与 省 电 模 式 的 启 动 时 间 复 位 时 的 额 外 延 迟 时 间 (V CC = 5.V) 推 荐 用 法 6 CK BOD 使 能 6 CK 4. ms 电 源 快 速 上 升 () 6 CK 65 ms 电 源 缓 慢 上 升 保 留 27
振 荡 器 标 定 寄 存 器 - OSCCAL Bit 7 6 5 4 3 2 CAL7 CAL6 CAL5 CAL4 CAL3 CAL2 CAL CAL OSCCAL 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 标 定 数 据 Bits 7.. CAL7..: 振 荡 器 标 定 数 据 将 标 定 数 据 写 入 这 个 地 址 可 以 对 内 部 振 荡 器 进 行 调 节 以 消 除 由 于 生 产 工 艺 所 带 来 的 振 荡 器 频 率 偏 差 复 位 时 MHz 的 标 定 数 据 ( 标 识 数 据 的 高 字 节, 地 址 为 x) 自 动 加 载 到 OSCCAL 寄 存 器 如 果 需 要 内 部 RC 振 荡 器 工 作 于 其 他 频 率, 标 定 数 据 必 须 人 工 加 载 : 首 先 通 过 编 程 器 读 取 标 识 数 据, 然 后 将 标 定 数 据 保 存 到 Flash 或 EEPROM 之 中 这 些 数 据 可 以 通 过 软 件 读 取, 然 后 加 载 到 OSCCAL 寄 存 器 当 OSCCAL 为 零 时 振 荡 器 以 最 低 频 率 工 作 当 对 其 写 如 不 为 零 的 数 据 时 内 部 振 荡 器 的 频 率 将 增 长 写 入 xff 即 得 到 最 高 频 率 标 定 的 振 荡 器 用 来 为 访 问 EEPROM 和 Flash 定 时 有 写 EEPROM 和 Flash 的 操 作 时 不 要 将 频 率 标 定 到 超 过 标 称 频 率 的 %, 否 则 写 操 作 有 可 能 失 败 要 注 意 振 荡 器 只 对. 2. 4. 和 8. MHz 这 四 种 频 率 进 行 了 标 定, 其 他 频 率 则 无 法 保 证, 如 Table 所 示 Table. 内 部 RC 振 荡 器 频 率 范 围 OSCCAL 数 值 最 小 频 率, 标 称 频 率 的 百 分 比 (%) 最 大 频 率, 标 称 频 率 的 百 分 比 (%) x 5 x7f 75 5 xff 2 28 ATmega8(L)
ATmega8(L) 外 部 时 钟 为 了 从 外 部 时 钟 源 驱 动 芯 片, XTAL 必 须 如 Figure 3 所 示 的 进 行 连 接 同 时, 熔 丝 位 CKSEL 必 须 编 程 为 若 熔 丝 位 CKOPT 也 被 编 程, 用 户 就 可 以 使 用 内 部 的 XTAL 和 GND 之 间 的 36 pf 电 容 Figure 3. 外 部 时 钟 驱 动 配 置 图 EXTERNAL CLOCK SIGNAL 选 择 了 这 个 振 荡 器 之 后, 启 动 时 间 由 熔 丝 位 SUT 确 定, 如 Table 2 所 示 Table 2. 外 部 时 钟 的 启 动 时 间 SUT.. 掉 电 模 式 与 省 电 模 式 的 启 动 时 间 复 位 时 的 额 外 延 迟 时 间 (V CC = 5.V) 推 荐 用 法 6 CK BOD 使 能 6 CK 4. ms 电 源 快 速 上 升 6 CK 65 ms 电 源 缓 慢 上 升 保 留 为 了 保 证 MCU 能 够 稳 定 工 作, 不 能 突 然 改 变 外 部 时 钟 源 的 振 荡 频 率 工 作 频 率 突 变 超 过 2% 将 会 产 生 异 常 现 象 应 该 在 MCU 保 持 复 位 状 态 时 改 变 外 部 时 钟 的 振 荡 频 率 定 时 器 / 计 时 器 振 荡 器 对 于 拥 有 定 时 器 / 振 荡 器 引 脚 (TOSC 和 TOSC2) 的 AVR 微 处 理 器, 晶 体 可 以 直 接 与 这 两 个 引 脚 连 接, 无 需 外 部 电 容 此 振 荡 器 针 对 32.768 khz 的 钟 表 晶 体 作 了 优 化 不 建 议 在 TOSC 引 脚 输 入 振 荡 信 号 29
电 源 管 理 及 睡 眠 模 式 睡 眠 模 式 可 以 使 应 用 程 序 关 闭 MCU 中 没 有 使 用 的 模 块, 从 而 降 低 功 耗 AVR 具 有 不 同 的 睡 眠 模 式, 允 许 用 户 根 据 自 己 的 应 用 要 求 实 施 剪 裁 进 入 睡 眠 模 式 的 条 件 是 置 位 寄 存 器 MCUCR 的 SE, 然 后 执 行 SLEEP 指 令 具 体 哪 一 种 模 式 ( 空 闲 模 式 ADC 噪 声 抑 制 模 式 掉 电 模 式 省 电 模 式 及 Standby 模 式 ) 由 MCUCR 的 SM2 SM 和 SM 决 定, 如 Table 3 所 示 使 能 的 中 断 可 以 将 进 入 睡 眠 模 式 的 MCU 唤 醒 经 过 启 动 时 间, 外 加 4 个 时 钟 周 期 后, MCU 就 可 以 运 行 中 断 例 程 了 然 后 返 回 到 SLEEP 的 下 一 条 指 令 唤 醒 时 不 会 改 变 寄 存 器 文 件 和 SRAM 的 内 容 如 果 在 睡 眠 过 程 中 发 生 了 复 位, 则 MCU 唤 醒 后 从 中 断 向 量 开 始 执 行 注 意, 由 于 TOSC 与 XTAL 共 用 同 一 引 脚, 对 于 许 多 AVR MCU 中 有 的 扩 展 Standby 模 式 在 ATmega8 中 已 删 除 P 22Figure 介 绍 了 ATmega8 不 同 的 时 钟 系 统 及 其 分 布 此 图 在 选 择 合 适 的 睡 眠 模 式 时 非 常 有 用 MCU 控 制 寄 存 器 - MCUCR MCU 控 制 寄 存 器 包 含 了 电 源 管 理 的 控 制 位 Bit 7 6 5 4 3 2 SE SM2 SM SM ISC ISC ISC ISC MCUCR 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 Bit 7 SE: 休 眠 使 能 为 了 使 MCU 在 执 行 SLEEP 指 令 后 进 入 休 眠 模 式, SE 必 须 置 位 为 了 确 保 进 入 休 眠 模 式 是 程 序 员 的 有 意 行 为, 建 议 仅 在 SLEEP 指 令 的 前 一 条 指 令 置 位 SE MCU 一 旦 唤 醒 立 即 清 除 SE Bits 6..4 SM2..: 休 眠 模 式 选 择 位 2 和 如 Table 3 所 示, 这 些 位 用 于 选 择 具 体 的 休 眠 模 式 Table 3. 休 眠 模 式 选 择 SM2 SM SM 休 眠 模 式 空 闲 模 式 ADC 噪 声 抑 制 模 式 掉 电 模 式 省 电 模 式 保 留 保 留 Standby () 模 式 Note:. 仅 在 使 用 外 部 晶 体 或 谐 振 器 时 Standby 模 式 才 可 用 3 ATmega8(L)
ATmega8(L) 空 闲 模 式 ADC 噪 声 抑 制 模 式 掉 电 模 式 省 电 模 式 Standby 模 式 当 SM2.. 为 时, SLEEP 指 令 将 使 MCU 进 入 空 闲 模 式 在 此 模 式 下, CPU 停 止 运 行, 而 SPI USART 模 拟 比 较 器 ADC 两 线 串 行 接 口 定 时 器 / 计 数 器 看 门 狗 和 中 断 系 统 继 续 工 作 这 个 睡 眠 模 式 只 停 止 了 clk CPU 和 clk FLASH, 其 他 时 钟 则 继 续 工 作 象 定 时 器 溢 出 与 USART 传 输 完 成 等 内 外 部 中 断 都 可 以 唤 醒 MCU 如 果 不 需 要 从 模 拟 比 较 器 中 断 唤 醒 MCU, 为 了 减 少 功 耗, 可 以 切 断 比 较 器 的 电 源 方 法 是 置 位 模 拟 比 较 器 控 制 和 状 态 寄 存 器 ACSR 的 ACD 如 果 ADC 使 能, 进 入 此 模 式 后 将 自 动 启 动 一 次 转 换 当 SM2.. 为 时, SLEEP 指 令 将 使 MCU 进 入 噪 声 抑 制 模 式 在 此 模 式 下, CPU 停 止 运 行, 而 ADC 外 部 中 断 两 线 接 口 地 址 配 置 定 时 器 / 计 数 器 2 和 看 门 狗 继 续 工 作 这 个 睡 眠 模 式 只 停 止 了 clk I/O clk CPU 和 clk FLASH, 其 他 时 钟 则 继 续 工 作 此 模 式 提 高 了 ADC 的 噪 声 环 境, 使 得 转 换 精 度 更 高 ADC 使 能 的 时 候, 进 入 此 模 式 将 自 动 启 动 一 次 AD 转 换 ADC 转 换 结 束 中 断 外 部 复 位 看 门 狗 复 位 BOD 复 位 两 线 接 口 地 址 匹 配 中 断 定 时 器 / 计 数 器 2 中 断 SPM/EEPROM 准 备 好 中 断 外 部 电 平 中 断 INT 或 INT, 或 外 部 中 断 INT2 可 以 将 MCU 从 ADC 噪 声 抑 制 模 式 唤 醒 当 SM2.. 为 时, SLEEP 指 令 将 使 MCU 进 入 掉 电 模 式 在 此 模 式 下, 外 部 晶 体 停 振, 而 外 部 中 断 两 线 接 口 地 址 匹 配 及 看 门 狗 ( 如 果 使 能 的 话 ) 继 续 工 作 只 有 外 部 复 位 看 门 狗 复 位 BOD 复 位 两 线 接 口 地 址 匹 配 中 断 外 部 电 平 中 断 INT 或 INT, 或 外 部 中 断 INT2 可 以 使 MCU 脱 离 掉 电 模 式 这 个 睡 眠 模 式 停 止 了 所 有 的 时 钟, 只 有 异 步 模 块 可 以 继 续 工 作 当 使 用 外 部 电 平 中 断 方 式 将 MCU 从 掉 电 模 式 唤 醒 时, 必 须 保 持 外 部 电 平 一 定 的 时 间 具 体 请 参 见 P 62 外 部 中 断 从 施 加 掉 电 唤 醒 条 件 到 真 正 唤 醒 有 一 个 延 迟 时 间, 此 时 间 用 于 时 钟 重 新 启 动 并 稳 定 下 来 唤 醒 周 期 与 由 熔 丝 位 CKSEL 定 义 的 复 位 周 期 是 一 样 的, 如 P 23 时 钟 源 当 SM2.. 为 时, SLEEP 指 令 将 使 MCU 进 入 省 电 模 式 这 一 模 式 与 掉 电 模 式 只 有 一 点 不 同 : 如 果 定 时 器 / 计 数 器 2 为 异 步 驱 动, 即 寄 存 器 ASSR 的 AS2 置 位, 则 定 时 器 / 计 数 器 2 在 睡 眠 时 继 续 运 行 除 了 掉 电 模 式 的 唤 醒 方 式, 定 时 器 / 计 数 器 2 的 溢 出 中 断 和 比 较 匹 配 中 断 也 可 以 将 MCU 从 休 眠 方 式 唤 醒, 只 要 TIMSK 使 能 了 这 些 中 断, 而 且 SREG 的 全 局 中 断 使 能 位 I 置 位 如 果 异 步 定 时 器 不 是 异 步 驱 动 的, 建 议 使 用 掉 电 模 式, 而 不 是 省 电 模 式 因 为 在 省 电 模 式 下, 若 AS2 为, 则 MCU 唤 醒 后 异 步 定 时 器 的 寄 存 器 数 值 是 没 有 定 义 的 这 个 睡 眠 模 式 停 止 了 除 clk ASY 以 外 所 有 的 时 钟, 只 有 异 步 模 块 可 以 继 续 工 作 当 SM2.. 为 时, SLEEP 指 令 将 使 MCU 进 入 Standby 模 式 这 一 模 式 与 掉 电 模 式 唯 一 的 不 同 之 处 在 于 振 荡 器 继 续 工 作 其 唤 醒 时 间 只 需 要 6 个 时 钟 周 期 Table 4. 在 不 同 睡 眠 模 式 下 活 动 的 时 钟 以 及 唤 醒 源 工 作 的 时 钟 振 荡 器 唤 醒 源 睡 眠 模 式 clk CPU clk FLASH clk IO clk ADC clk ASY 使 能 的 主 时 钟 使 能 的 定 时 器 时 钟 INT INT TWI 地 址 匹 配 定 时 器 2 SPM/ EEPROM 就 绪 空 闲 模 式 X X X X X (2) X X X X X X ADC 噪 声 抑 制 模 式 X X X X (2) X (3) X X X X ADC 其 他 I/O 3
Table 4. 在 不 同 睡 眠 模 式 下 活 动 的 时 钟 以 及 唤 醒 源 工 作 的 时 钟 振 荡 器 唤 醒 源 睡 眠 模 式 clk CPU clk FLASH clk IO clk ADC clk ASY 使 能 的 主 时 钟 使 能 的 定 时 器 时 钟 INT INT TWI 地 址 匹 配 定 时 器 2 SPM/ EEPROM 就 绪 ADC 其 他 I/O 掉 电 模 式 X (3) X 省 电 模 式 X (2) X (2) X (3) X X (2) Standby 模 () X X (3) X 式 Notes:. 时 钟 源 为 外 部 晶 体 或 谐 振 器 2. ASSR 的 AS2 置 位 3. 电 平 中 断 INT 与 INT 最 小 化 功 耗 试 图 降 低 AVR 控 制 系 统 的 功 耗 时 需 要 考 虑 几 个 问 题 一 般 来 说, 要 尽 可 能 利 用 睡 眠 模 式, 并 且 使 尽 可 能 少 的 模 块 继 续 工 作 不 需 要 的 功 能 必 须 禁 止 下 面 的 模 块 需 要 特 殊 考 虑 以 达 到 尽 可 能 低 的 功 耗 模 数 转 换 器 (ADC) 模 拟 比 较 器 使 能 时, ADC 在 睡 眠 模 式 下 继 续 工 作 为 了 降 低 功 耗, 在 进 入 睡 眠 模 式 之 前 需 要 禁 止 ADC 重 新 启 动 后 的 第 一 次 转 换 为 扩 展 的 转 换 具 体 请 参 照 P 83 模 数 转 换 器 在 空 闲 模 式 时, 如 果 没 有 使 用 模 拟 比 较 器, 可 以 将 其 关 闭 在 ADC 噪 声 抑 制 模 式 下 也 是 如 此 在 其 他 睡 眠 模 式 模 拟 比 较 器 是 自 动 关 闭 的 如 果 模 拟 比 较 器 使 用 了 内 部 电 压 基 准 源, 则 不 论 在 什 么 睡 眠 模 式 下 都 需 要 关 闭 它 否 则 内 部 电 压 基 准 源 将 一 直 使 能 请 参 见 P 8 模 拟 比 较 器 以 了 解 如 何 配 置 模 拟 比 较 器 32 ATmega8(L)
ATmega8(L) 掉 电 检 测 BOD 如 果 系 统 没 有 使 用 掉 电 检 测 器 BOD, 这 个 模 块 也 可 以 关 闭 如 果 熔 丝 位 BODEN 被 编 程, 从 而 使 能 了 BOD 功 能, 它 将 在 各 种 休 眠 模 式 下 继 续 工 作 在 深 层 次 的 休 眠 模 式 下, 这 个 电 流 将 占 总 电 流 的 很 大 比 重 请 参 看 P 37 掉 电 检 测 以 了 解 如 何 配 置 BOD 片 内 基 准 电 压 看 门 狗 定 时 器 端 口 引 脚 使 用 BOD 模 拟 比 较 器 和 ADC 时 可 能 需 要 内 部 电 压 基 准 源 若 这 些 模 块 都 禁 止 了, 则 基 准 源 也 可 以 禁 止 重 新 使 能 后 用 户 必 须 等 待 基 准 源 稳 定 之 后 才 可 以 使 用 它 如 果 基 准 源 在 休 眠 过 程 中 是 使 能 的, 其 输 出 立 即 可 以 使 用 请 参 见 P 39 片 内 基 准 电 压 以 了 解 基 准 源 启 动 时 间 的 细 节 如 果 系 统 无 需 使 用 看 门 狗, 这 个 模 块 也 可 以 关 闭 若 使 能, 则 在 任 何 休 眠 模 式 下 都 持 续 工 作, 从 而 消 耗 电 流 在 深 层 次 的 睡 眠 模 式 下, 这 个 电 流 将 占 总 电 流 的 很 大 比 重 请 参 看 P 4 看 门 狗 定 时 器 以 了 解 如 何 配 置 看 门 狗 定 时 器 进 入 休 眠 模 式 时, 所 有 的 端 口 引 脚 都 应 该 配 置 为 只 消 耗 最 小 的 功 耗 最 重 要 的 是 避 免 驱 动 电 阻 性 负 载 在 休 眠 模 式 下 I/O 时 钟 clk I/O 和 ADC 时 钟 clk ADC 都 被 停 止 了, 输 入 缓 冲 器 也 禁 止 了, 从 而 保 证 输 入 电 路 不 会 消 耗 电 流 在 某 些 情 况 下 输 入 逻 辑 是 使 能 的, 用 来 检 测 唤 醒 条 件 用 于 此 功 能 的 具 体 引 脚 请 参 见 P 52 数 字 输 入 使 能 和 睡 眠 模 式 如 果 输 入 缓 冲 器 是 使 能 的, 此 时 输 入 不 能 悬 空, 信 号 电 平 也 不 应 该 接 近 V CC /2, 否 则 输 入 缓 冲 器 会 消 耗 额 外 的 电 流 33
系 统 控 制 与 复 位 复 位 AVR 复 位 时 所 有 的 I/O 寄 存 器 都 被 设 置 为 初 始 值, 程 序 从 复 位 向 量 处 开 始 执 行 复 位 向 量 处 的 指 令 必 须 是 绝 对 跳 转 JMP 指 令, 以 使 程 序 跳 转 到 复 位 处 理 例 程 如 果 程 序 永 远 不 利 用 中 断 功 能, 中 断 向 量 可 以 由 一 般 的 程 序 代 码 所 覆 盖 这 个 处 理 方 法 同 样 适 用 于 当 复 位 向 量 位 于 应 用 程 序 区, 中 断 向 量 位 于 Boot 区 或 者 反 过 来 的 时 候 Figure 4 为 复 位 逻 辑 的 电 路 图 Table 5 则 定 义 了 复 位 电 路 的 电 气 参 数 复 位 源 有 效 时 I/O 端 口 立 即 复 位 为 初 始 值 此 时 不 要 求 任 何 时 钟 处 于 正 常 运 行 状 态 所 有 的 复 位 信 号 消 失 之 后, 芯 片 内 部 的 一 个 延 迟 计 数 器 被 激 活, 将 内 部 复 位 的 时 间 延 长 这 种 处 理 方 式 使 得 在 MCU 正 常 工 作 之 前 有 一 定 的 时 间 让 电 源 达 到 稳 定 的 电 平 延 迟 计 数 器 的 溢 出 时 间 通 过 熔 丝 位 SUT 与 CKSEL 设 定 延 迟 时 间 的 选 择 请 参 见 P 23 时 钟 源 复 位 源 ATmega8 有 4 个 复 位 源 : 上 电 复 位 电 源 电 压 低 于 上 电 复 位 门 限 V POT 时, MCU 复 位 外 部 复 位 引 脚 RESET 上 的 低 电 平 持 续 时 间 大 于 最 小 脉 冲 宽 度 时 MCU 复 位 看 门 狗 复 位 看 门 狗 使 能 并 且 看 门 狗 定 时 器 溢 出 时 复 位 发 生 掉 电 检 测 复 位 掉 电 检 测 复 位 功 能 使 能, 且 电 源 电 压 低 于 掉 电 检 测 复 位 门 限 V BOT 时 MCU 即 复 位 Figure 4. 复 位 逻 辑 DATA BUS MCU Control and Status Register (MCUCSR) PORF BORF EXTRF WDRF BODEN BODLEVEL Pull-up Resistor Brown-Out Reset Circuit SPIKE FILTER Watchdog Oscillator Clock Generator CK Delay Counters TIMEOUT CKSEL[3:] SUT[:] 34 ATmega8(L)
ATmega8(L) Table 5. 复 位 特 性 符 号 参 数 条 件 V POT 上 电 复 位 门 限 电 压 ( 电 压 由 低 到 高 上 升 ) ().4 2.3 V 上 电 复 位 门 限 电 压 ( 电 压 由 高 到 低 跌 落 ).3 2.3 V V RST RESET 门 限 电 压..9 V CC t RST RESET 最 小 脉 冲 宽 度.5 µs V BOT (2) 掉 电 检 测 复 位 门 限 电 压 BODLEVEL = 2.4 2.6 2.9 BODLEVEL = 3.7 4. 4.5 V t BOD 触 发 掉 电 检 测 复 位 的 低 电 平 的 BODLEVEL = 2 µs 最 小 持 续 时 间 BODLEVEL = 2 µs V HYST 掉 电 检 测 器 的 容 限 3 mv Notes:. 电 压 下 降 时, 只 有 电 压 低 于 V POT 时 复 位 才 会 发 生 2. 一 些 器 件 的 V BOT 可 能 比 标 称 的 最 小 工 作 电 压 还 要 低 这 些 器 件 在 生 产 测 试 过 程 中 进 行 了 V CC = V BOT 的 测 试, 保 证 在 V CC 下 降 到 处 理 器 无 法 正 常 工 作 之 前 产 生 掉 电 检 测 复 位 ATmega8L 的 测 试 条 件 为 BODLEVEL=,ATmega8 的 测 试 条 件 为 BODLEVEL= BODLEVEL= 不 适 用 于 ATmega8 最 小 值 典 型 值 最 大 值 单 位 上 电 复 位 上 电 复 位 (POR) 脉 冲 由 片 内 检 测 电 路 产 生 检 测 电 平 请 参 见 Table 5 无 论 何 时 V CC 低 于 检 测 电 平 POR 即 发 生 POR 电 路 可 以 用 来 触 发 启 动 复 位, 或 者 用 来 检 测 电 源 故 障 POR 电 路 保 证 器 件 在 上 电 时 复 位 V CC 达 到 上 电 门 限 电 压 后 触 发 延 迟 计 数 器 在 计 数 器 溢 出 之 前 器 件 一 直 保 持 为 复 位 状 态 当 V CC 下 降 时, 只 要 低 于 检 测 门 限,RESET 信 号 立 即 生 效 Figure 5. MCU 启 动 过 程, RESET 连 接 到 V CC VCC V POT RESET V RST TIME-OUT t TOUT INTERNAL RESET 35
Figure 6. MCU 启 动 过 程, RESET 由 外 电 路 控 制 V CC V POT RESET V RST TIME-OUT t TOUT INTERNAL RESET 36 ATmega8(L)
ATmega8(L) 外 部 复 位 外 部 复 位 由 外 加 于 RESET 引 脚 的 低 电 平 产 生 当 复 位 低 电 平 持 续 时 间 大 于 最 小 脉 冲 宽 度 时 ( 参 见 Table 5) 即 触 发 复 位 过 程, 即 使 此 时 并 没 有 时 钟 信 号 在 运 行 当 外 加 信 号 达 到 复 位 门 限 电 压 V RST ( 上 升 沿 ) 时, t TOUT 延 时 周 期 开 始 延 时 结 束 后 MCU 即 启 动 Figure 7. 工 作 过 程 中 发 生 外 部 复 位 CC 掉 电 检 测 ATmega8 具 有 片 内 BOD(Brown-out Detection) 电 路, 通 过 与 固 定 的 触 发 电 平 的 对 比 来 检 测 工 作 过 程 中 V CC 的 变 化 此 触 发 电 平 通 过 熔 丝 位 BODLEVEL 来 设 定, 2.7V (BODLEVEL 未 编 程 ), 4.V (BODLEVEL 已 编 程 ) BOD 的 触 发 电 平 具 有 迟 滞 功 能 以 消 除 电 源 尖 峰 的 影 响 这 个 迟 滞 功 能 可 以 解 释 为 V BOT+ = V BOT + V HYST /2 以 及 V BOT- = V BOT - V HYST /2 BOD 电 路 的 开 关 由 熔 丝 位 BODEN 控 制 当 BOD 使 能 后 (BODEN 被 编 程 ), 一 旦 V CC 下 降 到 触 发 电 平 以 下 (V BOT-, Figure 8), BOD 复 位 立 即 被 激 发 当 V CC 上 升 到 触 发 电 平 以 上 时 (V BOT+,Figure 8), 延 时 计 数 器 开 始 计 数, 一 旦 超 过 溢 出 时 间 t TOUT,MCU 即 恢 复 工 作 如 果 V CC 一 直 低 于 触 发 电 平 并 保 持 如 Table 5 所 示 的 时 间 t BOD, BOD 电 路 将 只 检 测 电 压 跌 落 Figure 8. 工 作 过 程 中 发 生 掉 电 检 测 复 位 V CC V BOT- V BOT+ RESET TIME-OUT t TOUT INTERNAL RESET 37
看 门 狗 复 位 看 门 狗 定 时 器 溢 出 时 将 产 生 持 续 时 间 为 个 CK 周 期 的 复 位 脉 冲 在 脉 冲 的 下 降 沿, 延 时 定 时 器 开 始 对 t TOUT 记 数 请 参 见 看 门 狗 定 时 器 的 具 体 操 作 过 程 Figure 9. 工 作 过 程 中 发 生 看 门 狗 复 位 CC CK MCU 控 制 和 状 态 寄 存 器 - MCUCSR MCU 控 制 和 状 态 寄 存 器 提 供 了 有 关 引 起 MCU 复 位 的 复 位 源 的 信 息 Bit 7 6 5 4 3 2 WDRF BORF EXTRF PORF MCUCSR 读 / 写 R R R R R/W R/W R/W R/W 初 始 值 见 位 说 明 Bit 7..4 Res: 保 留 这 几 位 保 留, 读 操 作 始 终 为 " Bit 3 WDRF: 看 门 狗 复 位 标 志 看 门 狗 复 位 发 生 时 置 位 上 电 复 位 将 使 其 清 零, 也 可 以 通 过 写 来 清 除 Bit 2 BORF: 掉 电 检 测 复 位 标 志 掉 电 检 测 复 位 发 生 时 置 位 上 电 复 位 将 使 其 清 零, 也 可 以 通 过 写 来 清 除 Bit EXTRF: 外 部 复 位 标 志 外 部 复 位 发 生 时 置 位 上 电 复 位 将 使 其 清 零, 也 可 以 通 过 写 来 清 除 Bit PORF: 上 电 复 位 标 志 上 电 复 位 发 生 时 置 位 只 能 通 过 写 来 清 除 为 了 使 用 这 些 复 位 标 志 来 识 别 复 位 条 件, 用 户 应 该 尽 早 读 取 此 寄 存 器 的 数 据, 然 后 将 其 复 位 如 果 在 其 他 复 位 发 生 之 前 将 此 寄 存 器 复 位, 则 后 续 复 位 源 可 以 通 过 检 查 复 位 标 志 来 了 解 38 ATmega8(L)
ATmega8(L) 片 内 基 准 电 压 ATmega8 具 有 片 内 能 隙 基 准 源, 用 于 掉 电 检 测, 或 者 是 作 为 模 拟 比 较 器 或 ADC 的 输 入 ADC 的 2.56V 基 准 电 压 由 此 片 内 能 隙 基 准 源 产 生 基 准 电 压 使 能 信 号 和 启 动 时 间 电 压 基 准 的 启 动 时 间 可 能 影 响 其 工 作 方 式 启 动 时 间 列 于 Table 6 为 了 降 低 功 耗, 可 以 控 制 基 准 源 仅 在 如 下 情 况 打 开 :. BOD 使 能 ( 熔 丝 位 BODEN 被 编 程 ) 2. 能 隙 基 准 源 连 接 到 模 拟 比 较 器 (ACSR 寄 存 器 的 ACBG 置 位 ) 3. ADC 使 能 因 此, 当 BOD 被 禁 止 时, 置 位 ACBG 或 使 能 ADC 后 要 启 动 基 准 源 为 了 降 低 掉 电 模 式 的 功 耗, 用 户 可 以 禁 止 上 述 三 种 条 件, 并 在 进 入 掉 电 模 式 之 前 关 闭 基 准 源 Table 6. 内 部 电 压 基 准 源 的 特 性 符 号 参 数 最 小 值 典 型 值 最 大 值 单 位 V BG 能 隙 基 准 源 电 压.5.23.4 V t BG 能 隙 基 准 源 启 动 时 间 4 7 µs I BG 能 隙 基 准 源 功 耗 µa 39
看 门 狗 定 时 器 看 门 狗 定 时 器 由 独 立 的 MHz 片 内 振 荡 器 驱 动 这 是 V CC = 5V 时 的 典 型 值 请 参 见 特 性 数 据 以 了 解 其 他 V CC 电 平 下 的 典 型 值 通 过 设 置 看 门 狗 定 时 器 的 预 分 频 器 可 以 调 节 看 门 狗 复 位 的 时 间 间 隔, 如 P 4Table 7 所 示 看 门 狗 复 位 指 令 WDR 用 来 复 位 看 门 狗 定 时 器 此 外, 禁 止 看 门 狗 定 时 器 或 发 生 复 位 时 定 时 器 也 被 复 位 复 位 时 间 有 8 个 选 项 如 果 没 有 及 时 复 位 定 时 器, 一 旦 时 间 超 过 复 位 周 期, ATmega8 就 复 位, 并 执 行 复 位 向 量 指 向 的 程 序 具 体 的 看 门 狗 复 位 时 序 在 P 38 有 说 明 为 了 防 止 无 意 之 间 禁 止 看 门 狗 定 时 器, 当 看 门 狗 禁 用 时, 其 后 必 须 加 入 一 个 特 定 的 关 闭 序 列, 详 见 看 门 狗 定 时 器 控 制 寄 存 器 说 明 Figure 2. 看 门 狗 定 时 器 WATCHDOG OSCILLATOR 看 门 狗 定 时 器 控 制 寄 存 器 - WDTCR Bit 7 6 5 4 3 2 WDCE WDE WDP2 WDP WDP WDTCR 读 / 写 R R R R/W R/W R/W R/W R/W 初 始 值 Bits 7..5 Res: 保 留 保 留 位, 读 操 作 返 回 值 为 零 Bit 4 WDCE: 看 门 狗 修 改 使 能 清 零 WDE 时 必 须 先 置 位 WDCE, 否 则 不 能 禁 止 看 门 狗 一 旦 置 位, 硬 件 将 在 紧 接 的 4 个 时 钟 周 期 之 后 将 其 清 零 请 参 考 有 关 WDE 的 说 明 来 禁 止 看 门 狗 工 作 于 安 全 级 别 和 2 时 也 必 须 置 位 WDCE 以 修 改 预 分 频 器 的 数 据, 详 见 代 码 例 程 4 ATmega8(L)
ATmega8(L) Bit 3 WDE: 看 门 狗 使 能 WDE 为 " 时, 看 门 狗 使 能, 否 则 看 门 狗 将 被 禁 止 只 有 在 WDCE 为 " 时 WDE 才 能 清 零 以 下 为 关 闭 看 门 狗 的 步 骤 :. 在 同 一 个 指 令 内 对 WDCE 和 WDE 写 ", 即 使 WDE 已 经 为 " 2. 在 紧 接 的 4 个 时 钟 周 期 之 内 对 WDE 写 " Bits 2.. WDP2, WDP, WDP: 看 门 狗 定 时 器 预 分 频 器 2,, 和 WDP2 WDP 和 WDP 决 定 看 门 狗 定 时 器 的 预 分 频 器, 其 预 分 频 值 及 相 应 的 溢 出 周 期 如 Table 7 所 示 Table 7. 看 门 狗 定 时 器 预 分 频 器 选 项 WDP2 WDP WDP WDT 振 荡 器 周 期 V CC = 3.V 时 典 型 的 溢 出 周 期 V CC = 5.V 时 典 型 的 溢 出 周 期 6K (6,384) 7. ms 6.3 ms 32K (32,768) 34.3 ms 32.5 ms 64K (65,536) 68.5 ms 65 ms 28K (3,72).4 s.3 s 256K (262,44).27 s.26 s 52K (524,288).55 s.52 s,24k (,48,576). s. s 2,48K (2,97,52) 2.2 s 2. s 下 面 的 例 子 分 别 用 汇 编 和 C 实 现 了 关 闭 WDT 的 操 作 在 此 假 定 中 断 处 于 用 户 控 制 之 下 ( 比 如 禁 止 全 局 中 断 ), 因 而 在 执 行 下 面 程 序 时 中 断 不 会 发 生 4
改 变 看 门 狗 定 时 器 配 置 的 时 间 序 列 改 变 配 置 的 序 列 根 据 不 同 的 安 全 级 别 略 有 不 同 下 面 将 逐 一 说 明 汇 编 代 码 例 程 WDT_off: ; 复 位 WDT wdr ; 置 位 WDCE 和 WDE in r6, WDTCR ori r6, (<<WDCE) (<<WDE) out WDTCR, r6 ; 关 闭 WDT ldi r6, (<<WDE) out WDTCR, r6 ret C 代 码 例 程 void WDT_off(void) { /* 复 位 WDT */ _WDR() /* 置 位 WDCE 和 WDE */ WDTCR = (<<WDCE) (<<WDE); /* 关 闭 WDT */ WDTCR = x; } 安 全 级 别 (WDTON 熔 丝 位 未 编 程 ) 安 全 级 别 2(WDTON 熔 丝 位 已 编 程 ) 在 这 个 模 式 下, 看 门 狗 定 时 器 的 初 始 状 态 是 禁 止 的, 可 以 没 有 限 制 地 通 过 置 位 WDE 来 使 能 它 改 变 定 时 器 溢 出 周 期 及 禁 止 ( 已 经 使 能 的 ) 看 门 狗 定 时 器 时 需 要 执 行 一 个 特 定 的 时 间 序 列 :. 在 同 一 个 指 令 内 对 WDCE 和 WDE 写 ", 即 使 WDE 已 经 为 " 2. 在 紧 接 的 4 个 时 钟 周 期 之 内 同 时 对 WDE 及 WDP 写 入 合 适 的 数 据, 而 WDCE 则 写 " 在 这 个 模 式 下, 看 门 狗 定 时 器 总 是 使 能 的, WDE 的 读 返 回 值 为 " 改 变 定 时 器 溢 出 周 期 需 要 执 行 一 个 特 定 的 时 间 序 列 :. 在 同 一 个 指 令 内 对 WDCE 和 WDE 写 " 虽 然 WDE 总 是 为 置 位 状 态, 也 必 须 写 " 以 启 动 时 序 在 紧 接 的 4 个 时 钟 周 期 之 内 同 时 对 WDCE 写 ", 以 及 为 WDP 写 入 合 适 的 数 据 WDE 的 数 值 可 以 任 意 42 ATmega8(L)
ATmega8(L) 中 断 本 节 说 明 ATmega8 的 中 断 处 理 更 一 般 的 AVR 中 断 处 理 请 参 见 P 2 复 位 与 中 断 处 理 ATmega8 的 中 断 向 量 Table 8. 复 位 和 中 断 向 量 向 量 号 程 序 (2) 地 址 中 断 源 中 断 定 义 x () RESET 外 部 引 脚, 上 电 复 位, 掉 电 检 测 复 位, 看 门 狗 复 位 2 x INT 外 部 中 断 请 求 3 x2 INT 外 部 中 断 请 求 4 x3 TIMER2 COMP 定 时 器 / 计 数 器 2 比 较 匹 配 5 x4 TIMER2 OVF 定 时 器 / 计 数 器 2 溢 出 6 x5 TIMER CAPT 定 时 器 / 计 数 器 捕 捉 事 件 7 x6 TIMER COMPA 定 时 器 / 计 数 器 比 较 匹 配 A 8 x7 TIMER COMPB 定 时 器 / 计 数 器 比 较 匹 配 B 9 x8 TIMER OVF 定 时 器 / 计 数 器 溢 出 x9 TIMER OVF 定 时 器 / 计 数 器 溢 出 xa SPI, STC SPI 串 行 传 输 结 束 2 xb USART, RXC USART, Rx 结 束 3 xc USART, UDRE USART 数 据 寄 存 器 空 4 xd USART, TXC USART, Tx 结 束 5 xe ADC ADC 转 换 结 束 6 xf EE_RDY EEPROM 就 绪 7 x ANA_COMP 模 拟 比 较 器 8 x TWI 两 线 串 行 接 口 9 x2 SPM_RDY 保 存 程 序 存 储 器 内 容 就 绪 Notes:. 熔 丝 位 BOOTRST 被 编 程 时,MCU 复 位 后 程 序 跳 转 到 Boot Loader 请 参 见 P 96 支 持 引 导 装 入 程 序 - 在 写 的 同 时 可 以 读 (RWW, Read-While-Write) 的 自 我 编 程 能 力 2. 当 寄 存 器 GICR 的 IVSEL 置 位 时, 中 断 向 量 转 移 到 Boot 区 的 起 始 地 址 此 时 各 个 中 断 向 量 的 实 际 地 址 为 表 中 地 址 与 Boot 区 起 始 地 址 之 和 Table 9 给 出 了 不 同 的 BOOTRST/IVSEL 设 置 下 的 复 位 和 中 断 向 量 的 位 置 如 果 程 序 永 远 不 使 能 中 断, 中 断 向 量 就 没 有 意 义 用 户 可 以 在 此 直 接 写 程 序 同 样, 如 果 复 位 向 量 位 于 应 用 区, 而 其 他 中 断 向 量 位 于 Boot 区, 则 复 位 向 量 之 后 可 以 直 接 写 程 序 反 过 来 亦 是 如 此 Table 9. 复 位 和 中 断 向 量 位 置 的 确 定 BOOTRST () IVSEL 复 位 地 址 中 断 向 量 起 始 地 址 x x x Boot 区 复 位 地 址 + x Boot 区 复 位 地 址 x Boot 区 复 位 地 址 Boot 区 复 位 地 址 + x 43
Note:. Boot 区 复 位 地 址 列 于 P 27Table 82 对 于 熔 丝 位 BOOTRST, 表 示 未 编 程, 表 示 已 编 程 ATmega8 典 型 的 复 位 和 中 断 设 置 如 下 : 地 址 符 号 代 码 说 明 x rjmp RESET ; 复 位 中 断 向 量 x rjmp EXT_INT ; IRQ 中 断 向 量 x2 rjmp EXT_INT ; IRQ 中 断 向 量 x3 rjmp TIM2_COMP ; Timer2 比 较 中 断 向 量 x4 rjmp TIM2_OVF ; Timer2 溢 出 中 断 向 量 x5 rjmp TIM_CAPT ; Timer 捕 捉 中 断 向 量 x6 rjmp TIM_COMPA ; Timer 比 较 A 中 断 向 量 x7 rjmp TIM_COMPB ; Timer 比 较 B 中 断 向 量 x8 rjmp TIM_OVF ; Timer 溢 出 中 断 向 量 x9 rjmp TIM_OVF ; Timer 溢 出 中 断 向 量 xa rjmp SPI_STC ; SPI 传 输 结 束 中 断 向 量 xb rjmp USART_RXC ; USART RX 结 束 中 断 向 量 xc rjmp USART_UDRE ; UDR 空 中 断 向 量 xd rjmp USART_TXC ; USART TX 结 束 中 断 向 量 xe rjmp ADC ; ADC 转 换 结 束 中 断 向 量 xf rjmp EE_RDY ; EEPROM 就 绪 中 断 向 量 x rjmp ANA_COMP ; 模 拟 比 较 器 中 断 向 量 x rjmp TWSI ; 两 线 串 行 接 口 中 断 向 量 x2 rjmp EXT_INT2 ; IRQ2 中 断 向 量 x3 rjmp TIM_COMP ; Timer 比 较 中 断 向 量 x4 rjmp SPM_RDY ; SPM 就 绪 中 断 向 量 ; x5 RESET: ldi r6,high(ramend) ; 主 程 序 x6 out SPH,r6 ; 设 置 堆 栈 指 针 为 RAM 的 顶 部 x7 ldi r6,low(ramend) x8 out SPL,r6 x9 sei ; 使 能 中 断 x2 <instr> xxx......... 44 ATmega8(L)
ATmega8(L) 当 熔 丝 位 BOOTRST 未 编 程,Boot 区 为 2K 字 节, 且 寄 存 器 GICR 的 IVSEL 置 位 时, 典 型 的 复 位 和 中 断 设 置 如 下 : 地 址 符 号 代 码 说 明 $ rjmp RESET ; 复 位 中 断 向 量 ; $ RESET:ldi r6,high(ramend); 主 程 序 $2 out SPH,r6 ; 设 置 堆 栈 指 针 为 RAM 的 顶 部 $3 ldi r6,low(ramend) $4 out SPL,r6 $5 sei ; 使 能 中 断 $6 <instr> xxx ;.org $c $c rjmp EXT_INT ; IRQ 中 断 向 量 $c2 rjmp EXT_INT ; IRQ 中 断 向 量......... ; $c2 rjmp SPM_RDY ; SPM 就 绪 中 断 向 量 当 熔 丝 位 BOOTRST 已 编 程, 且 Boot 区 为 2K 字 节 时, 典 型 的 复 位 和 中 断 设 置 如 下 : 丝 位 BOOTRST 已 编 程, 且 Boot 区 为 2K 字 节 时, 典 型 的 复 位 和 中 断 设 置 如 下 : 地 址 符 号 代 码 说 明.org x x rjmp EXT_INT ; IRQ 中 断 向 量 x2 rjmp EXT_INT ; IRQ 中 断 向 量......... ; x4 rjmp SPM_RDY ; SPM 就 绪 中 断 向 量 ;.org $c $c rjmp RESET ; 复 位 中 断 向 量 ; $c RESET:ldi r6,high(ramend); 主 程 序 $c2 out SPH,r6 ; 设 置 堆 栈 指 针 为 RAM 的 顶 部 $c3 ldi r6,low(ramend) $c4 out SPL,r6 $c5 sei ; 使 能 中 断 $c6 <instr> xxx 45
当 熔 丝 位 BOOTRST 已 编 程,Boot 区 为 2K 字 节, 且 寄 存 器 GICR 的 IVSEL 置 位 时, 典 型 的 复 位 和 中 断 设 置 如 下 : 地 址 符 号 代 码 说 明 ;.org $c $c rjmp RESET ; Reset 中 断 向 量 $c rjmp EXT_INT ; IRQ 中 断 向 量 $c2 rjmp EXT_INT ; IRQ 中 断 向 量......... ; $c2 rjmp SPM_RDY ; SPM 就 绪 中 断 向 量 $c3 RESET: ldi r6,high(ramend); 主 程 序 $c4 out SPH,r6 ; 设 置 堆 栈 指 针 为 RAM 的 顶 部 $c5 ldi r6,low(ramend) $c6 out SPL,r6 $c7 sei ; 使 能 中 断 $c8 <instr> xxx 在 应 用 区 和 Boot 区 之 间 移 动 中 断 通 用 中 断 控 制 寄 存 器 - GICR 通 用 中 断 控 制 寄 存 器 决 定 中 断 向 量 表 的 放 置 地 址 Bit 7 6 5 4 3 2 INT INT IVSEL IVCE GICR 读 / 写 R/W R/W R R R R R/W R/W 初 始 值 Bit IVSEL: 中 断 向 量 选 择 当 IVSEL 为 " 时, 中 断 向 量 位 于 Flash 存 储 器 的 起 始 地 址 ; 当 IVSEL 为 " 时, 中 断 向 量 转 移 到 Boot 区 的 起 始 地 址 实 际 的 Boot 区 起 始 地 址 由 熔 丝 位 BOOTSZ 确 定 具 体 请 参 考 P 96 支 持 引 导 装 入 程 序 - 在 写 的 同 时 可 以 读 (RWW, Read-While-Write) 的 自 我 编 程 能 力 为 了 防 止 无 意 识 地 改 变 中 断 向 量 表, 修 改 IVSEL 时 需 要 遵 照 如 下 过 程 :. 置 位 中 断 向 量 修 改 使 能 位 IVCE 2. 在 紧 接 的 4 个 时 钟 周 期 里 将 需 要 的 数 据 写 入 IVSEL, 同 时 对 IVCE 写 执 行 上 述 序 列 时 中 断 自 动 被 禁 止 其 实, 在 置 位 IVCE 时 中 断 就 被 禁 止 了, 并 一 直 保 持 到 写 IVSEL 操 作 之 后 的 下 一 条 语 句 如 果 没 有 IVSEL 写 操 作, 则 中 断 在 置 位 IVCE 之 后 的 4 个 时 钟 周 期 保 持 禁 止 需 要 注 意 的 是, 虽 然 中 断 被 自 动 禁 止, 但 状 态 寄 存 器 的 位 I 的 值 并 不 受 此 操 作 的 影 响 注 意 : 若 中 断 向 量 位 于 Boot 区, 且 Boot 锁 定 位 BLB2 被 编 程, 则 执 行 应 用 区 的 程 序 时 中 断 被 禁 止 ; 若 中 断 向 量 位 于 应 用 区, 且 Boot 锁 定 位 BLB2 被 编 程, 则 执 行 Boot 区 的 程 序 时 中 断 被 禁 止 有 关 Boot 锁 定 位 的 细 节 请 参 见 P 96 支 持 引 导 装 入 程 序 - 在 写 的 同 时 可 以 读 (RWW, Read- While-Write) 的 自 我 编 程 能 力 46 ATmega8(L)
ATmega8(L) Bit IVCE: 中 断 向 量 修 改 使 能 改 变 IVSEL 时 IVCE 必 须 置 位 在 IVCE 或 IVSEL 写 操 作 之 后 4 个 时 钟 周 期, IVCE 被 硬 件 清 零 如 前 面 所 述, 置 位 IVCE 将 禁 止 中 断 代 码 如 下 : 汇 编 代 码 例 程 : Move_interrupts: ; 使 能 中 断 向 量 的 修 改 ldi r6, (<<IVCE) out GICR, r6 ; 将 中 断 向 量 转 移 到 boot Flash 区 ldi r6, (<<IVSEL) out GICR, r6 ret C 代 码 例 程 void Move_interrupts(void) { /* 使 能 中 断 向 量 的 修 改 */ GICR = (<<IVCE); /* 将 中 断 向 量 转 移 到 boot Flash 区 */ GICR = (<<IVSEL); } 47
I/O 端 口 介 绍 作 为 通 用 数 字 I/O 使 用 时, 所 有 AVR I/O 端 口 都 具 有 真 正 的 读 - 修 改 - 写 功 能 这 意 味 着 用 SBI 或 CBI 指 令 改 变 某 些 管 脚 的 方 向 ( 或 者 是 端 口 电 平 禁 止 / 使 能 上 拉 电 阻 ) 时 不 会 无 意 地 改 变 其 他 管 脚 的 方 向 ( 或 者 是 端 口 电 平 禁 止 / 使 能 上 拉 电 阻 ) 输 出 缓 冲 器 具 有 对 称 的 驱 动 能 力, 可 以 输 出 或 吸 收 大 电 流, 直 接 驱 动 LED 所 有 的 端 口 引 脚 都 具 有 与 电 压 无 关 的 上 拉 电 阻 并 有 保 护 二 极 管 与 V CC 和 地 相 连, 如 Figure 2 所 示 请 参 见 P 226 电 气 特 性 以 了 解 完 整 的 参 数 列 表 Figure 2. I/O 引 脚 等 效 原 理 图 R pu Pxn Logic C pin See Figure "General Digital I/O" for Details 本 节 所 有 的 寄 存 器 和 位 以 通 用 格 式 表 示 : 小 写 的 x 表 示 端 口 的 序 号, 而 小 写 的 n 代 表 位 的 序 号 但 是 在 程 序 里 要 写 完 整 例 如, PORTB3 表 示 端 口 B 的 第 3 位, 而 本 节 的 通 用 格 式 为 PORTxn 物 理 I/O 寄 存 器 和 位 定 义 列 于 P 6 I/O 端 口 寄 存 器 的 说 明 每 个 端 口 都 有 三 个 I/O 存 储 器 地 址 : 数 据 寄 存 器 PORTx 数 据 方 向 寄 存 器 DDRx 和 端 口 输 入 引 脚 PINx 数 据 寄 存 器 和 数 据 方 向 寄 存 器 为 读 / 写 寄 存 器, 而 端 口 输 入 引 脚 为 只 读 寄 存 器 但 是 需 要 特 别 注 意 的 是, 对 PINx 寄 存 器 某 一 位 写 入 逻 辑 " 将 造 成 数 据 寄 存 器 相 应 位 的 数 据 发 生 " 与 的 交 替 变 化 当 寄 存 器 SFIOR 的 上 拉 禁 止 位 PUD 置 位 时 所 有 端 口 引 脚 的 上 拉 电 阻 都 被 禁 止 作 为 通 用 数 字 I/O 时 的 端 口 请 参 见 P 48 作 为 通 用 数 字 I/O 的 端 口 多 数 端 口 引 脚 是 与 第 二 功 能 复 用 的, 如 P 53 端 口 的 第 二 功 能 所 示 请 参 见 各 个 模 块 的 具 体 说 明 以 了 解 引 脚 的 第 二 功 能 使 能 某 些 引 脚 的 第 二 功 能 不 会 影 响 其 他 属 于 同 一 端 口 的 引 脚 用 于 通 用 数 字 I/O 目 的 作 为 通 用 数 字 I/O 的 端 口 端 口 为 具 有 可 选 上 拉 电 阻 的 双 向 I/O 端 口 Figure 22 为 一 个 I/O 端 口 引 脚 的 说 明 48 ATmega8(L)
ATmega8(L) Figure 22. 通 用 数 字 I/O () PUD Q D DDxn Q CLR RESET WDx RDx Pxn Q D PORTxn Q CLR RESET WPx DATA BUS SLEEP RRx SYNCHRONIZER RPx D L Q Q D Q PINxn Q clk I/O PUD: SLEEP: clk I/O : PULLUP DISABLE SLEEP CONTROL I/O CLOCK WDx: RDx: WPx: RRx: RPx: WRITE DDRx READ DDRx WRITE PORTx READ PORTx REGISTER READ PORTx PIN Note:. WPx, WDx, RRx, RPx 和 RDx 对 于 同 一 端 口 的 所 有 引 脚 都 是 一 样 的 clk I/O, SLEEP 和 PUD 则 对 所 有 的 端 口 都 是 一 样 的 配 置 引 脚 每 个 端 口 引 脚 都 具 有 三 个 寄 存 器 位 : DDxn PORTxn 和 PINxn, 如 P 6 I/O 端 口 寄 存 器 的 说 明 所 示 DDxn 位 于 DDRx 寄 存 器, PORTxn 位 于 PORTx 寄 存 器, PINxn 位 于 PINx 寄 存 器 DDxn 用 来 选 择 引 脚 的 方 向 DDxn 为 " 时, Pxn 配 置 为 输 出, 否 则 配 置 为 输 入 引 脚 配 置 为 输 入 时, 若 PORTxn 为 ", 上 拉 电 阻 将 使 能 如 果 需 要 关 闭 这 个 上 拉 电 阻, 可 以 将 PORTxn 清 零, 或 者 将 这 个 引 脚 配 置 为 输 出 复 位 时 各 引 脚 为 高 阻 态, 即 使 此 时 并 没 有 时 钟 在 运 行 当 引 脚 配 置 为 输 出 时, 若 PORTxn 为 ", 引 脚 输 出 高 电 平 (" ), 否 则 输 出 低 电 平 ( ) 在 ( 高 阻 态 ) 三 态 ({DDxn, PORTxn} = b) 输 出 高 电 平 ({DDxn, PORTxn} = b) 两 种 状 态 之 间 进 行 切 换 时, 上 拉 电 阻 使 能 ({DDxn, PORTxn} = b) 或 输 出 低 电 平 ({DDxn, PORTxn} = b) 这 两 种 模 式 必 然 会 有 一 个 发 生 通 常, 上 拉 电 阻 使 能 是 完 全 可 以 接 受 的, 因 为 高 阻 环 境 不 在 意 是 强 高 电 平 输 出 还 是 上 拉 输 出 如 果 使 用 情 况 不 是 这 样 子, 可 以 通 过 置 位 SFIOR 寄 存 器 的 PUD 来 禁 止 所 有 端 口 的 上 拉 电 阻 在 上 拉 输 入 和 输 出 低 电 平 之 间 切 换 也 有 同 样 的 问 题 用 户 必 须 选 择 高 阻 态 ({DDxn, PORTxn} = b) 或 输 出 高 电 平 ({DDxn, PORTxn} = b) 作 为 中 间 步 骤 49
Table 2 总 结 了 引 脚 的 控 制 信 号 Table 2. 端 口 引 脚 配 置 DDxn PORTxn PUD (SFIOR 中 ) 读 取 引 脚 上 的 数 据 不 论 如 何 配 置 DDxn, 都 可 以 通 过 读 取 PINxn 寄 存 器 来 获 得 引 脚 电 平 如 Figure 22 所 示, PINxn 寄 存 器 的 各 个 位 与 其 前 面 的 锁 存 器 组 成 了 一 个 同 步 器 这 样 就 可 以 避 免 在 内 部 时 钟 状 态 发 生 改 变 的 短 时 间 范 围 内 由 于 引 脚 电 平 变 化 而 造 成 的 信 号 不 稳 定 其 缺 点 是 引 入 了 延 迟 Figure 23 为 读 取 引 脚 电 平 时 同 步 器 的 时 序 图 最 大 和 最 小 传 输 延 迟 分 别 为 t pd,max 和 t pd,min Figure 23. 读 取 引 脚 数 据 时 的 同 步 I/O 上 拉 电 阻 说 明 X 输 入 No 高 阻 态 (Hi-Z) 输 入 Yes 被 外 部 电 路 拉 低 时 将 输 出 电 流 输 入 No 高 阻 态 (Hi-Z) X 输 出 No 输 出 低 电 平 ( 漏 电 流 ) X 输 出 No 输 出 高 电 平 ( 源 电 流 ) SYSTEM CLK INSTRUCTIONS XXX XXX in r7, PINx SYNC LATCH PINxn r7 x xff t pd, max t pd, min 下 面 考 虑 第 一 个 系 统 时 钟 下 降 沿 之 后 起 始 的 时 钟 周 期 当 时 钟 信 号 为 低 时 锁 存 器 是 关 闭 的 ; 而 时 钟 信 号 为 高 时 信 号 可 以 自 由 通 过, 如 图 中 SYNC LATCH 信 号 的 阴 影 区 所 示 时 钟 为 低 时 信 号 即 被 锁 存, 然 后 在 紧 接 着 的 系 统 时 钟 上 升 沿 锁 存 到 PINxn 寄 存 器 如 t pd,max 和 t pd,min 所 示, 引 脚 上 的 信 号 转 换 延 迟 界 于 ½ ~ ½ 个 系 统 时 钟 如 Figure 24 所 示, 读 取 软 件 赋 予 的 引 脚 电 平 时 需 要 在 赋 值 指 令 out 和 读 取 指 令 in 之 间 有 一 个 时 钟 周 期 的 间 隔, 如 nop 指 令 out 指 令 在 时 钟 的 上 升 沿 置 位 SYNC LATCH 信 号 此 时 同 步 器 的 延 迟 时 间 t pd 为 一 个 系 统 时 钟 5 ATmega8(L)
ATmega8(L) Figure 24. 读 取 软 件 赋 予 的 引 脚 电 平 的 同 步 SYSTEM CLK r6 INSTRUCTIONS xff out PORTx, r6 nop in r7, PINx SYNC LATCH PINxn r7 x xff t pd 5
下 面 的 例 子 演 示 了 如 何 置 位 端 口 B 的 引 脚 和, 清 零 引 脚 2 和 3, 以 及 将 引 脚 4 到 7 设 置 为 输 入, 并 且 为 引 脚 6 和 7 设 置 上 拉 电 阻 然 后 将 各 个 引 脚 的 数 据 读 回 来 如 前 面 讨 论 的 那 样, 我 们 在 输 出 和 输 入 语 句 之 间 插 入 了 一 个 nop 指 令 () 汇 编 代 码 例 程... ; 定 义 上 拉 电 阻 和 设 置 高 电 平 输 出 ; 为 端 口 引 脚 定 义 方 向 ldi r6,(<<pb7) (<<PB6) (<<PB) (<<PB) ldi r7,(<<ddb3) (<<DDB2) (<<DDB) (<<DDB) out PORTB,r6 out DDRB,r7 ; 为 了 同 步 插 入 nop 指 令 nop ; 读 取 端 口 引 脚 in r6,pinb... () C 代 码 例 程 unsigned char i;... /* 定 义 上 拉 电 阻 和 设 置 高 电 平 输 出 */ /* 为 端 口 引 脚 定 义 方 向 */ PORTB = (<<PB7) (<<PB6) (<<PB) (<<PB); DDRB = (<<DDB3) (<<DDB2) (<<DDB) (<<DDB); /* 为 了 同 步 插 入 nop 指 令 */ _NOP(); /* 读 取 端 口 引 脚 */ i = PINB;... Note:. 在 汇 编 程 序 里 使 用 了 两 个 暂 存 器 其 目 的 是 为 了 使 整 个 操 作 过 程 的 时 间 最 短 通 过 拉 高 引 脚 6 与 7, 直 到 方 向 位 设 置 正 确, 定 义 位 2 3 为 低, 且 重 新 定 义 为 与 为 强 驱 动 数 字 输 入 使 能 和 睡 眠 模 式 未 连 接 引 脚 的 处 理 如 Figure 22 所 示, 数 字 输 入 信 号 ( 施 密 特 触 发 器 的 输 入 ) 可 以 钳 位 到 地 图 中 的 SLEEP 信 号 由 MCU 休 眠 控 制 器 在 各 种 掉 电 模 式 省 电 模 式 以 及 Standby 模 式 下 设 置, 以 防 止 在 输 入 悬 空 或 模 拟 输 入 电 平 接 近 V CC /2 时 消 耗 太 多 的 电 流 引 脚 作 为 外 部 中 断 输 入 时 SLEEP 信 号 无 效 但 若 外 部 中 断 没 有 使 能, SLEEP 信 号 仍 然 有 效 引 脚 的 第 二 功 能 使 能 时 SLEEP 也 让 位 于 第 二 功 能, 如 P 53 端 口 的 第 二 功 能 里 描 述 的 那 样 如 果 逻 辑 高 电 平 ( ) 出 现 在 一 个 被 设 置 为 " 上 升 沿 下 降 沿 或 任 何 逻 辑 电 平 变 化 都 引 起 中 断 " 的 外 部 异 步 中 断 引 脚 上, 即 使 该 外 部 中 断 未 被 使 能, 但 从 上 述 休 眠 模 式 唤 醒 时, 相 应 的 外 部 中 断 标 志 位 仍 会 被 置 " 这 是 因 为 引 脚 电 平 在 休 眠 模 式 下 被 钳 位 到 " 电 平 唤 醒 过 程 造 成 了 引 脚 电 平 从 " 到 的 变 化 如 果 有 引 脚 未 被 使 用, 建 议 给 这 些 引 脚 赋 予 一 个 确 定 电 平 虽 然 如 上 文 所 述, 在 深 层 休 眠 模 式 下 大 多 数 数 字 输 入 被 禁 用, 但 还 是 需 要 避 免 因 引 脚 没 有 确 定 的 电 平 而 造 成 悬 空 引 脚 在 其 它 数 字 输 入 使 能 模 式 ( 复 位 工 作 模 式 空 闲 模 式 ) 消 耗 电 流 最 简 单 的 保 证 未 用 引 脚 具 有 确 定 电 平 的 方 法 是 使 能 内 部 上 拉 电 阻 但 要 注 意 的 是 复 位 时 上 拉 电 阻 将 被 禁 用 如 果 复 位 时 的 功 耗 也 有 严 格 要 求 则 建 议 使 用 外 部 上 拉 或 下 拉 电 阻 不 52 ATmega8(L)
ATmega8(L) 推 荐 直 接 将 未 用 引 脚 与 V CC 或 GND 连 接, 因 为 这 样 可 能 会 在 引 脚 偶 然 作 为 输 出 时 出 现 冲 击 电 流 端 口 的 第 二 功 能 除 了 通 用 数 字 I/O 功 能 之 外, 大 多 数 端 口 引 脚 都 具 有 第 二 功 能 Figure 25 说 明 了 由 Figure 22 简 化 得 出 的 端 口 引 脚 控 制 信 号 是 如 何 被 第 二 功 能 取 代 的 这 些 被 重 载 的 信 号 不 会 出 现 在 所 有 的 端 口 引 脚, 但 本 图 可 以 看 作 是 适 合 于 AVR 系 列 处 理 器 所 有 端 口 引 脚 的 一 般 说 明 () Figure 25. 端 口 的 第 二 功 能 PUOExn PUOVxn PUD DDOExn DDOVxn Q D DDxn PVOExn Q CLR RESET WDx PVOVxn RDx Pxn DIEOExn Q D PORTxn Q CLR WPx DATA BUS DIEOVxn SLEEP RESET RRx SYNCHRONIZER RPx SET D Q L CLR Q D Q PINxn CLR Q clk I/O DIxn AIOxn PUOExn: PUOVxn: DDOExn: DDOVxn: PVOExn: PVOVxn: DIEOExn: DIEOVxn: SLEEP: Pxn PULL-UP OVERRIDE ENABLE Pxn PULL-UP OVERRIDE VALUE Pxn DATA DIRECTION OVERRIDE ENABLE Pxn DATA DIRECTION OVERRIDE VALUE Pxn PORT VALUE OVERRIDE ENABLE Pxn PORT VALUE OVERRIDE VALUE Pxn DIGITAL INPUT-ENABLE OVERRIDE ENABLE Pxn DIGITAL INPUT-ENABLE OVERRIDE VALUE SLEEP CONTROL PUD: PULLUP DISABLE WDx: WRITE DDRx RDx: READ DDRx RRx: READ PORTx REGISTER WPx: WRITE PORTx RPx: READ PORTx PIN clk I/O : I/O CLOCK DIxn: DIGITAL INPUT PIN n ON PORTx AIOxn: ANALOG INPUT/OUTPUT PIN n ON PORTx Note:. WPx, WDx, RRx, RPx 和 RDx 对 于 同 一 个 端 口 的 所 有 引 脚 都 是 一 样 的 clk I/O, SLEEP 和 PUD 则 对 所 有 的 端 口 都 是 一 样 的 其 他 信 号 只 对 某 一 个 引 脚 有 效 Table 2 为 重 载 信 号 的 简 介 表 中 没 有 给 出 Figure 25 的 引 脚 和 端 口 索 引 这 些 重 载 信 号 是 由 第 二 功 能 模 块 产 生 的 53
Table 2. 第 二 功 能 重 载 信 号 的 一 般 说 明 信 号 名 称 全 称 说 明 PUOE PUOV DDOE DDOV PVOE PVOV DIEOE DIEOV 上 拉 电 阻 重 载 使 能 上 拉 电 阻 重 载 值 数 据 方 向 重 载 使 能 数 据 方 向 重 载 值 端 口 数 据 重 载 使 能 端 口 数 据 重 载 值 数 字 输 入 使 能 覆 盖 使 能 数 字 输 入 使 能 覆 盖 值 若 此 信 号 置 位, 上 拉 电 阻 使 能 将 受 控 于 PUOV ; 若 此 信 号 清 零, 则 {DDxn, PORTxn, PUD} = b 时 上 拉 电 阻 使 能 若 PUOE 置 位, 则 不 论 DDxn PORTxn 和 PUD 寄 存 器 各 个 位 如 何 配 置, PUOV 置 位 / 清 零 时 上 拉 电 阻 使 能 / 禁 止 如 果 此 信 号 置 位, 则 输 出 驱 动 使 能 由 DDOV 控 制 ; 若 此 信 号 清 零, 输 出 驱 动 使 能 由 DDxn 寄 存 器 控 制 若 DDOE 置 位, 则 DDOV 置 位 / 清 零 时 输 出 驱 动 使 能 / 禁 止, 而 不 管 DDxn 寄 存 器 的 设 置 如 何 如 果 这 个 信 号 置 位, 且 输 出 驱 动 使 能, 端 口 数 据 由 PVOV 控 制 ; 若 PVOE 清 零, 且 输 出 驱 动 使 能, 端 口 数 据 由 寄 存 器 PORTxn 控 制 若 PVOE 置 位, 端 口 值 设 置 为 PVOV, 而 不 管 寄 存 器 PORTxn 如 何 设 置 如 果 这 个 信 号 置 位, 数 字 输 入 使 能 由 DIEOV 控 制 ; 若 DIEOE 清 零, 数 字 输 入 使 能 由 MCU 的 状 态 确 定 ( 正 常 模 式, 睡 眠 模 式 ) 若 DIEOE 置 位, DIEOV 置 位 / 清 零 时 数 字 输 入 使 能 / 禁 止, 而 不 管 MCU 的 状 态 如 何 ( 正 常 模 式, 睡 眠 模 式 ) DI 数 字 输 入 此 信 号 为 第 二 功 能 的 数 字 输 入 在 图 中, 这 个 信 号 与 施 密 特 触 发 相 连, 并 且 在 同 步 器 之 前 除 非 数 字 输 入 用 作 时 钟 源, 否 则 第 二 功 能 模 块 将 使 用 自 己 的 同 步 器 AIO 模 拟 信 号 输 入 / 输 出 模 拟 输 入 / 输 出 信 号 直 接 与 引 脚 接 点 相 连, 而 且 可 以 用 作 双 向 端 口 下 面 的 几 小 节 将 简 单 地 说 明 每 个 端 口 的 第 二 功 能 以 及 相 关 的 信 号 具 体 请 参 考 有 关 第 二 功 能 的 说 明 54 ATmega8(L)
ATmega8(L) 特 殊 功 能 I/O 寄 存 器 - SFIOR Bit 7 6 5 4 3 2 ACME PUD PSR2 PSR SFIOR 读 / 写 R R R R R/W R/W R/W R/W 初 始 值 Bit 2 PUD: 禁 用 上 拉 电 阻 置 位 时, 即 使 将 寄 存 器 DDxn 和 PORTxn 配 置 为 使 能 上 拉 电 阻 ({DDxn, PORTxn} = b), I/O 端 口 的 上 拉 电 阻 也 被 禁 止 请 参 见 P 49 配 置 引 脚 端 口 B 的 第 二 功 能 端 口 B 的 第 二 功 能 列 于 Table 22 Table 22. 端 口 B 的 第 二 功 能 端 口 引 脚 PB7 PB6 第 二 功 能 XTAL2 ( 芯 片 时 钟 振 荡 器 引 脚 2) TOSC2 ( 定 时 振 荡 器 引 脚 2) XTAL ( 芯 片 时 钟 振 荡 器 引 脚 或 外 部 时 钟 输 入 ) TOSC ( 定 时 振 荡 器 引 脚 ) PB5 SCK (SPI 总 线 的 主 机 时 钟 输 入 ) PB4 MISO (SPI 总 线 的 主 机 输 入 / 从 机 输 出 信 号 ) PB3 PB2 MOSI (SPI 总 线 的 主 机 输 出 / 从 机 输 入 信 号 ) OC2 (T/C2 输 出 比 较 匹 配 输 出 ) SS (SPI 总 线 主 从 选 择 ) OCB (T/C 输 出 比 较 匹 配 B 输 出 ) PB OCA (T/C 输 出 比 较 匹 配 A 输 出 ) PB ICP (T/C 输 入 捕 获 引 脚 ) 引 脚 配 置 如 下 : XTAL2/TOSC2 端 口 B, Bit 7 XTAL2: 芯 片 时 钟 振 荡 器 引 脚 2 使 用 晶 振 或 低 频 晶 振 作 为 时 钟 时 的 引 脚 当 其 作 为 时 钟 引 脚 时, 不 能 作 为 I/O 引 脚 使 用 TOSC2: 定 时 振 荡 器 引 脚 2 当 片 内 标 定 RC 振 荡 器 作 为 芯 片 时 钟 源, 且 异 步 定 时 器 使 能 时, 作 为 时 钟 引 脚 当 ASSR 寄 存 器 的 AS2 位 置 " 使 能 T/C2 异 步 时 钟, PB7 不 与 端 口 连 接, 作 为 振 荡 放 大 器 反 向 输 出 使 用 在 该 模 式 下, 晶 振 与 该 引 脚 连 接, 且 该 引 脚 不 能 作 为 I/O 引 脚 使 用 若 PB7 作 为 时 钟 引 脚 使 用, DDB7 PORTB7 及 PINB7 的 读 出 值 为 XTAL/TOSC 端 口 B, Bit 6 XTAL: 芯 片 时 钟 振 荡 器 引 脚 适 用 于 所 有 芯 片 时 钟 源 ( 片 内 标 定 RC 振 荡 器 除 外 ) 当 其 作 为 时 钟 引 脚 时, 不 能 作 为 I/O 引 脚 使 用 TOSC: 定 时 振 荡 器 引 脚 当 片 内 标 定 RC 振 荡 器 作 为 芯 片 时 钟 源, 且 异 步 定 时 器 使 能 时, 作 为 时 钟 引 脚 当 ASSR 寄 存 器 的 AS2 位 置 " 使 能 T/C2 异 步 时 钟, PB6 不 与 端 口 连 接, 作 为 振 荡 放 大 器 反 向 输 出 使 用 在 该 模 式 下, 晶 振 与 该 引 脚 连 接, 且 该 引 脚 不 能 作 为 I/O 引 脚 使 用 若 PB6 作 为 时 钟 引 脚 使 用, DDB6 PORTB6 及 PINB6 的 读 出 值 为 SCK 端 口 B, Bit 5 55
SCK:SPI 通 道 的 主 机 时 钟 输 出, 从 机 时 钟 输 入 端 口 工 作 于 从 机 模 式 时, 不 论 DDB5 设 置 如 何, 这 个 引 脚 都 将 设 置 为 输 入 工 作 于 主 机 模 式 时, 这 个 引 脚 的 数 据 方 向 由 DDB5 控 制 设 置 为 输 入 后, 上 拉 电 阻 由 PORTB5 控 制 MISO 端 口 B, Bit 4 MISO:SPI 通 道 的 主 机 数 据 输 入, 从 机 数 据 输 出 端 口 工 作 于 主 机 模 式 时, 不 论 DDB4 设 置 如 何, 这 个 引 脚 都 将 设 置 为 输 入 工 作 于 从 机 模 式 时, 这 个 引 脚 的 数 据 方 向 由 DDB4 控 制 设 置 为 输 入 后, 上 拉 电 阻 由 PORTB4 控 制 MOSI/OC2 端 口 B, Bit 3 MOSI:SPI 通 道 的 主 机 数 据 输 出, 从 机 数 据 输 入 端 口 工 作 于 从 机 模 式 时, 不 论 DDB3 设 置 如 何, 这 个 引 脚 都 将 设 置 为 输 入 当 工 作 于 主 机 模 式 时, 这 个 引 脚 的 数 据 方 向 由 DDB3 控 制 设 置 为 输 入 后, 上 拉 电 阻 由 PORTB3 控 制 OC2, 输 出 比 较 匹 配 输 出 :PB3 引 脚 作 为 T/C2 比 较 匹 配 的 外 部 输 出 此 时,PB3 引 脚 将 设 置 为 输 出 OC2 引 脚 在 PWM 模 式 定 时 器 功 能 时 作 为 输 出 引 脚 SS/OCB 端 口 B, Bit 2 SS: 从 机 选 择 输 入 工 作 于 从 机 模 式 时, 不 论 DDB2 设 置 如 何, 这 个 引 脚 都 将 设 置 为 输 入 当 此 引 脚 为 低 时 SPI 被 激 活 工 作 于 主 机 模 式 时, 这 个 引 脚 的 数 据 方 向 由 DDB2 控 制 设 置 为 输 入 后, 上 拉 电 阻 由 PORTB2 控 制 OCB, 输 出 比 较 匹 配 输 出 :PB2 引 脚 作 为 T/C 比 较 匹 配 的 外 部 输 出 此 时,PB2 引 脚 将 设 置 为 输 出 OCB 引 脚 在 PWM 模 式 定 时 器 功 能 时 作 为 输 出 引 脚 OCA 端 口 B, Bit OCA, 输 出 比 较 匹 配 输 出 :PB 引 脚 作 为 T/C 比 较 匹 配 A 的 外 部 输 出 此 时,PB 引 脚 将 设 置 为 输 出 OCA 引 脚 在 PWM 模 式 定 时 器 功 能 时 作 为 输 出 引 脚 ICP 端 口 B, Bit ICP 输 入 捕 获 引 脚 :PB 引 脚 作 为 T/C 的 输 入 捕 获 引 脚 Table 23 与 Table 24 给 出 了 端 口 B 第 二 功 能 与 P 53Figure 25 重 载 信 号 的 对 应 关 系 SPI MSTR INPUT 和 SPI SLAVE OUTPUT 构 成 了 MISO 信 号, 而 MOSI 可 以 分 解 为 SPI MSTR OUTPUT 和 SPI SLAVE INPUT Table 23. PB7..PB4 的 第 二 功 能 重 载 信 号 信 号 名 称 PB7/XTAL2/ TOSC2 ()(2) PB6/XTAL/ TOSC () PB5/SCK PB4/MISO PUOE EXT (INTRC + AS2) INTRC + AS2 SPE MSTR SPE MSTR PUO PORTB5 PUD PORTB4 PUD DDOE EXT (INTRC + AS2) INTRC + AS2 SPE MSTR SPE MSTR DDOV PVOE SPE MSTR SPE MSTR PVOV SCK 输 出 SPI 从 机 输 出 DIEOE EXT (INTRC + AS2) INTRC + AS2 DIEOV DI SCK 输 入 SPI 主 机 输 入 AIO 振 荡 器 输 出 振 荡 器 / 时 钟 输 入 56 ATmega8(L)
ATmega8(L) Notes:. INTRC 表 示 选 择 片 内 RC 振 荡 器 ( 通 过 设 置 CKSEL 熔 丝 位 ) 2. EXT 表 示 选 择 外 部 RC 振 荡 器 或 外 部 时 钟 ( 通 过 设 置 CKSEL 熔 丝 位 ) Table 24. PB3..PB 的 第 二 功 能 重 载 信 号 信 号 名 称 PB3/MOSI/OC2 PB2/SS/OCB PB/OCA PB/ICP PUOE SPE MSTR SPE MSTR PUO PORTB3 PUD PORTB2 PUD DDOE SPE MSTR SPE MSTR DDOV PVOE SPE MSTR + OC2 使 能 OCB 使 能 OCA 使 能 PVOV SPI 主 机 输 出 + OC2 OCB OCA DIEOE DIEOV DI SPI 从 机 输 入 SPI SS ICP 输 入 AIO 端 口 C 的 第 二 功 能 端 口 C 的 第 二 功 能 示 于 Table 25 Table 25. 端 口 C 的 第 二 功 能 端 口 引 脚 第 二 功 能 PC6 RESET ( 复 位 引 脚 ) PC5 PC4 ADC5 (ADC 输 入 通 道 5) SCL ( 两 线 串 行 总 线 时 钟 线 ) ADC4 (ADC 输 入 通 道 4) SDA ( 两 线 串 行 总 线 数 据 输 入 / 输 出 线 ) PC3 ADC3 (ADC 输 入 通 道 3) PC2 ADC2 (ADC 输 入 通 道 2) PC ADC (ADC 输 入 通 道 ) PC ADC (ADC 输 入 通 道 ) 第 二 功 能 配 置 如 下 : RESET 端 口 C, Bit 6 RESET, 复 位 引 脚 : 当 RSTDISBL 熔 丝 位 编 程, 该 引 脚 作 为 普 通 I/O 引 脚 使 用, 且 将 上 电 复 位 与 掉 电 检 测 复 位 作 为 其 复 位 源 若 RSTDISBL 熔 丝 位 未 编 程, 复 位 电 路 与 该 引 脚 连 接, 该 引 脚 不 能 作 为 普 通 I/O 引 脚 使 用 若 PC6 作 为 时 钟 引 脚 使 用, DDC6 PORTC6 及 PINC6 的 读 出 值 为 SCL/ADC5 端 口 C, Bit 5 SCL, 两 线 串 行 接 口 时 钟 : 当 TWCR 寄 存 器 的 TWEN 位 置 使 能 两 线 串 行 接 口, 引 脚 PC5 未 与 端 口 连 接, 成 为 两 线 串 行 接 口 的 串 行 时 钟 I/O 引 脚 在 该 模 式 下, 在 引 脚 处 使 用 窄 带 滤 波 器 抑 制 低 于 5 ns 的 输 入 信 号, 且 该 引 脚 由 斜 率 限 制 的 开 漏 驱 动 器 驱 动 PC5 还 可 用 作 ADC 输 入 通 道 5 注 意, ADC 输 入 通 道 5 为 数 字 电 源 SDA/ADC4 端 口 C, Bit 4 57
SDA, 两 线 串 行 接 口 数 据 : 当 寄 存 器 TWCR 的 TWEN 位 置 使 能 两 线 串 行 接 口, 引 脚 PC 不 与 端 口 相 联, 且 成 为 两 线 串 行 接 口 的 串 行 数 据 I/O 引 脚 在 该 模 式 下, 在 引 脚 处 使 用 窄 带 滤 波 器 抑 制 低 于 5 ns 的 输 入 信 号, 且 该 引 脚 由 斜 率 限 制 的 开 漏 驱 动 器 驱 动 PC4 还 可 用 作 ADC 输 入 通 道 4 注 意, ADC 输 入 通 道 4 为 数 字 电 源 ADC3 端 口 C, Bit 3 PC3 还 可 用 作 ADC 输 入 通 道 3 注 意, ADC 输 入 通 道 3 为 数 字 电 源 ADC2 端 口 C, Bit 2 PC2 还 可 用 作 ADC 输 入 通 道 2 注 意, ADC 输 入 通 道 2 为 数 字 电 源 ADC 端 口 C, Bit PC 还 可 用 作 ADC 输 入 通 道 注 意, ADC 输 入 通 道 为 数 字 电 源 ADC 端 口 C, Bit PC 还 可 用 作 ADC 输 入 通 道 注 意, ADC 输 入 通 道 为 数 字 电 源 Table 26 和 Table 27 给 出 了 端 口 C 第 二 功 能 与 P 53Figure 25 重 载 信 号 的 对 应 关 系 Table 26. PC6..PC4 的 第 二 功 能 重 载 信 号 信 号 名 称 PC6/RESET PC5/SCL/ADC5 PC4/SDA/ADC4 PUOE RSTDISBL TWEN TWEN PUOV PORTC5 PUD PORTC4 PUD DDOE RSTDISBL TWEN TWEN DDOV SCL_OUT SDA_OUT PVOE TWEN TWEN PVOV DIEOE RSTDISBL DIEOV DI AIO 复 位 输 入 ADC5 输 入 / SCL 输 入 ADC4 输 入 / SDA 输 入 () Table 27. PC3..PC 的 第 二 功 能 重 载 信 号 信 号 名 称 PC3/ADC3 PC2/ADC2 PC/ADC PC/ADC PUOE PUOV DDOE DDOV PVOE PVOV DIEOE DIEOV DI AIO ADC3 输 入 ADC2 输 入 ADC 输 入 ADC 输 入 58 ATmega8(L)
ATmega8(L) Note:. 使 能 后, 两 线 串 行 接 口 使 能 输 出 引 脚 PC4 与 PC5 的 斜 率 控 制 这 在 图 中 并 未 示 出 另 外, 窄 带 滤 波 器 连 在 图 中 给 出 的 AIO 输 出 端 口 与 TWI 的 数 字 逻 辑 模 块 之 间 端 口 D 的 第 二 功 能 端 口 D 的 第 二 功 能 列 于 Table 28 Table 28. 端 口 D 的 第 二 功 能 端 口 引 脚 第 二 功 能 PD7 AIN ( 模 拟 比 较 器 负 输 入 ) PD6 AIN ( 模 拟 比 较 器 正 输 入 ) PD5 T (T/C 外 部 计 数 器 输 入 ) PD4 XCK (USART 外 部 时 钟 输 入 / 输 出 ) T (T/C 外 部 计 数 器 输 入 ) PD3 INT ( 外 部 中 断 输 入 ) PD2 INT ( 外 部 中 断 输 入 ) PD TXD (USART 输 出 引 脚 ) PD RXD (USART 输 入 引 脚 ) 第 二 功 能 配 置 如 下 : AIN 端 口 D, Bit 7 AIN, 模 拟 比 较 器 负 输 入 配 置 为 输 入 端 口 引 脚 时 关 闭 内 部 上 拉 电 阻, 以 避 免 模 拟 比 较 器 干 扰 数 字 端 口 功 能 AIN 端 口 D, Bit 6 AIN, 模 拟 比 较 器 正 输 入 配 置 为 输 入 端 口 引 脚 时 关 闭 内 部 上 拉 电 阻, 以 避 免 模 拟 比 较 器 干 扰 数 字 端 口 功 能 T 端 口 D, Bit 5 T, T/C 计 数 器 源 XCK/T 端 口 D, Bit 4 XCK, USART 外 部 时 钟 T, T/C 计 数 器 源 INT 端 口 D, Bit 3 INT, 外 部 中 断 源 :PD3 引 脚 作 为 外 部 中 断 源 INT 端 口 D, Bit 2 INT, 外 部 中 断 源 :PD2 引 脚 作 为 外 部 中 断 源 TXD 端 口 D, Bit TXD 是 USART 的 数 据 发 送 引 脚 当 使 能 了 USART 的 发 送 器 后, 这 个 引 脚 被 强 制 设 置 为 输 出, 此 时 DDD 不 起 作 用 RXD 端 口 D, Bit RXD 是 USART 的 数 据 接 收 引 脚 当 使 能 了 USART 的 接 收 器 后, 这 个 引 脚 被 强 制 设 置 为 输 出, 此 时 DDD 不 起 作 用 但 是 PORTD 仍 然 控 制 上 拉 电 阻 Table 29 和 Table 3 将 端 口 D 的 第 二 功 能 与 P 53Figure 25 的 重 载 信 号 关 联 在 了 一 起 59
Table 29. PD7..PD4 的 第 二 功 能 信 号 名 称 PD7/AIN PD6/AIN PD5/T PD4/XCK/T PUOE PUO OOE OO PVOE UMSEL PVO XCK 输 出 DIEOE DIEO DI T 输 入 XCK 输 入 / T 输 入 AIO AIN 输 入 AIN 输 入 Table 3. PD3..PD 的 第 二 功 能 信 号 名 称 PD3/INT PD2/INT PD/TXD PD/RXD PUOE TXEN RXEN PUO PORTD PUD OOE TXEN RXEN OO PVOE TXEN PVO TXD DIEOE INT 使 能 INT 使 能 DIEO DI INT 输 入 INT 输 入 RXD AIO 6 ATmega8(L)
ATmega8(L) I/O 端 口 寄 存 器 的 说 明 端 口 B 数 据 寄 存 器 - PORTB 端 口 B 数 据 方 向 寄 存 器 - DDRB 端 口 B 输 入 引 脚 地 址 - PINB 端 口 C 数 据 寄 存 器 - PORTC 端 口 C 数 据 方 向 寄 存 器 - DDRC 端 口 C 输 入 引 脚 地 址 - PINC 端 口 D 数 据 寄 存 器 - PORTD 端 口 D 数 据 方 向 寄 存 器 - DDRD 端 口 D 输 入 引 脚 地 址 - PIND Bit 7 6 5 4 3 2 PORTB7 PORTB6 PORTB5 PORTB4 PORTB3 PORTB2 PORTB PORTB PORTB 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 Bit 7 6 5 4 3 2 DDB7 DDB6 DDB5 DDB4 DDB3 DDB2 DDB DDB DDRB 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 Bit 7 6 5 4 3 2 PINB7 PINB6 PINB5 PINB4 PINB3 PINB2 PINB PINB PINB 读 / 写 R R R R R R R R 初 始 值 N/A N/A N/A N/A N/A N/A N/A N/A Bit 7 6 5 4 3 2 PORTC6 PORTC5 PORTC4 PORTC3 PORTC2 PORTC PORTC PORTC 读 / 写 R R/W R/W R/W R/W R/W R/W R/W 初 始 值 Bit 7 6 5 4 3 2 DDC6 DDC5 DDC4 DDC3 DDC2 DDC DDC DDRC 读 / 写 R R/W R/W R/W R/W R/W R/W R/W 初 始 值 Bit 7 6 5 4 3 2 PINC6 PINC5 PINC4 PINC3 PINC2 PINC PINC PINC 读 / 写 R R R R R R R R 初 始 值 N/A N/A N/A N/A N/A N/A N/A Bit 7 6 5 4 3 2 PORTD7 PORTD6 PORTD5 PORTD4 PORTD3 PORTD2 PORTD PORTD PORTD 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 Bit 7 6 5 4 3 2 DDD7 DDD6 DDD5 DDD4 DDD3 DDD2 DDD DDD DDRD 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 Bit 7 6 5 4 3 2 PIND7 PIND6 PIND5 PIND4 PIND3 PIND2 PIND PIND PIND 读 / 写 R R R R R R R R 初 始 值 N/A N/A N/A N/A N/A N/A N/A N/A 6
外 部 中 断 外 部 中 断 通 过 引 脚 INT INT 触 发 只 要 使 能 了 中 断, 即 使 引 脚 INT.. 配 置 为 输 出, 只 要 电 平 发 生 了 合 适 的 变 化, 中 断 也 会 触 发 这 个 特 点 可 以 用 来 产 生 软 件 中 断 通 过 设 置 MCU 控 制 寄 存 器 MCUCR, 中 断 可 以 由 下 降 沿 上 升 沿, 或 者 是 低 电 平 触 发 当 外 部 中 断 使 能 并 且 配 置 为 电 平 触 发 ( INT/INT), 只 要 引 脚 电 平 为 低, 中 断 就 会 产 生 若 要 求 INT 与 INT 在 信 号 下 降 沿 或 上 升 沿 触 发,I/O 时 钟 必 须 工 作, 如 P 22 时 钟 系 统 及 其 分 布 说 明 的 那 样 INT/INT 的 低 电 平 中 断 检 测 是 异 步 的 也 就 是 说, 这 些 中 断 可 以 用 来 将 器 件 从 睡 眠 模 式 唤 醒 在 睡 眠 过 程 ( 除 了 空 闲 模 式 ) 中 I/O 时 钟 是 停 止 的 通 过 电 平 方 式 触 发 中 断, 从 而 将 MCU 从 掉 电 模 式 唤 醒 时, 要 保 证 电 平 保 持 一 定 的 时 间, 以 降 低 MCU 对 噪 声 的 敏 感 程 度 电 平 以 看 门 狗 的 频 率 检 测 两 次 在 5.V 25 C 的 条 件 下, 看 门 狗 的 标 称 时 钟 周 期 为 µs 看 门 狗 时 钟 受 电 压 的 影 响, 具 体 请 参 考 P 226 电 气 特 性 只 要 在 采 样 过 程 中 出 现 了 合 适 的 电 平, 或 是 信 号 持 续 到 启 动 过 程 的 末 尾, MCU 就 会 唤 醒 启 动 过 程 由 熔 丝 位 SUT 决 定, 如 P 22 系 统 时 钟 及 时 钟 选 项 所 示 若 信 号 出 现 于 两 次 采 样 过 程, 但 在 启 动 过 程 结 束 之 前 就 消 失 了, MCU 仍 将 唤 醒, 但 不 再 会 引 发 中 断 了 要 求 的 电 平 必 须 保 持 足 够 长 的 时 间 以 使 MCU 结 束 唤 醒 过 程, 然 后 触 发 电 平 中 断 MCU 控 制 寄 存 器 - MCUCR MCU 控 制 寄 存 器 包 含 中 断 触 发 控 制 位 与 通 用 MCU 功 能 Bit 7 6 5 4 3 2 SE SM2 SM SM ISC ISC ISC ISC MCUCR 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 Bit 3, 2 ISC, ISC: 中 断 触 发 方 式 控 制 Bit 与 Bit 如 果 SREG 寄 存 器 的 I 标 志 位 和 相 应 的 中 断 屏 蔽 位 置 位 的 话, 外 部 中 断 由 引 脚 INT 激 发 触 发 方 式 如 Table 3 所 示 在 检 测 边 沿 前 MCU 首 先 采 样 INT 引 脚 上 的 电 平 如 果 选 择 了 边 沿 触 发 方 式 或 电 平 变 化 触 发 方 式, 那 么 持 续 时 间 大 于 一 个 时 钟 周 期 的 脉 冲 将 触 发 中 断, 过 短 的 脉 冲 则 不 能 保 证 触 发 中 断 如 果 选 择 低 电 平 触 发 方 式, 那 么 低 电 平 必 须 保 持 到 当 前 指 令 执 行 完 成 Table 3. 中 断 触 发 方 式 控 制 ISC ISC 说 明 INT 为 低 电 平 时 产 生 中 断 请 求 INT 引 脚 上 任 意 的 逻 辑 电 平 变 化 都 将 引 发 中 断 INT 的 下 降 沿 产 生 中 断 请 求 INT 的 上 升 沿 产 生 中 断 请 求 62 ATmega8(L)
ATmega8(L) Bit, ISC, ISC: 中 断 触 发 方 式 控 制 Bit 与 Bit 如 果 SREG 寄 存 器 的 I 标 志 位 和 相 应 的 中 断 屏 蔽 位 置 位 的 话 触 发 方 式 如 Table 32 所 示, 外 部 中 断 由 引 脚 INT 激 发 在 检 测 边 沿 前 MCU 首 先 采 样 INT 引 脚 上 的 电 平 如 果 选 择 了 边 沿 触 发 方 式 或 电 平 变 化 触 发 方 式, 那 么 持 续 时 间 大 于 一 个 时 钟 周 期 的 脉 冲 将 触 发 中 断, 过 短 的 脉 冲 则 不 能 保 证 触 发 中 断 如 果 选 择 低 电 平 触 发 方 式, 那 么 低 电 平 必 须 保 持 到 当 前 指 令 执 行 完 成 Table 32. 中 断 触 发 方 式 控 制 ISC ISC 说 明 INT 为 低 电 平 时 产 生 中 断 请 求 INT 引 脚 上 任 意 的 逻 辑 电 平 变 化 都 将 引 发 中 断 INT 的 下 降 沿 产 生 中 断 请 求 INT 的 上 升 沿 产 生 中 断 请 求 通 用 中 断 控 制 寄 存 器 - GICR Bit 7 6 5 4 3 2 INT INT IVSEL IVCE GICR 读 / 写 R/W R/W R R R R R/W R/W 初 始 值 Bit 7 INT: 外 部 中 断 请 求 使 能 当 INT 为 ', 而 且 状 态 寄 存 器 SREG 的 I 标 志 置 位, 相 应 的 外 部 引 脚 中 断 就 使 能 了 MCU 通 用 控 制 寄 存 器 MCUCR 的 中 断 敏 感 电 平 控 制 位 / (ISC 与 ISC) 决 定 中 断 是 由 上 升 沿 下 降 沿, 还 是 INT 电 平 触 发 的 只 要 使 能, 即 使 INT 引 脚 被 配 置 为 输 出, 只 要 引 脚 电 平 发 生 了 相 应 的 变 化, 中 断 将 产 生 Bit 6 INT: 外 部 中 断 请 求 使 能 当 INT 为 ', 而 且 状 态 寄 存 器 SREG 的 I 标 志 置 位, 相 应 的 外 部 引 脚 中 断 就 使 能 了 MCU 通 用 控 制 寄 存 器 MCUCR 的 中 断 敏 感 电 平 控 制 位 / (ISC 与 ISC) 决 定 中 断 是 由 上 升 沿 下 降 沿, 还 是 INT 电 平 触 发 的 只 要 使 能, 即 使 INT 引 脚 被 配 置 为 输 出, 只 要 引 脚 电 平 发 生 了 相 应 的 变 化, 中 断 将 产 生 63
通 用 中 断 标 志 寄 存 器 - GIFR Bit 7 6 5 4 3 2 INTF INTF GIFR 读 / 写 R/W R/W R R R R R R 初 始 值 Bit 7 INTF: 外 部 中 断 标 志 INT 引 脚 电 平 发 生 跳 变 时 触 发 中 断 请 求, 并 置 位 相 应 的 中 断 标 志 INTF 如 果 SREG 的 位 I 以 及 GICR 寄 存 器 相 应 的 中 断 使 能 位 INT 为,MCU 即 跳 转 到 相 应 的 中 断 向 量 进 入 中 断 服 务 程 序 之 后 该 标 志 自 动 清 零 此 外, 标 志 位 也 可 以 通 过 写 入 来 清 零 Bit 6 INTF: 外 部 中 断 标 志 INT 引 脚 电 平 发 生 跳 变 时 触 发 中 断 请 求, 并 置 位 相 应 的 中 断 标 志 INTF 如 果 SREG 的 位 I 以 及 GICR 寄 存 器 相 应 的 中 断 使 能 位 INT 为,MCU 即 跳 转 到 相 应 的 中 断 向 量 进 入 中 断 服 务 程 序 之 后 该 标 志 自 动 清 零 此 外, 标 志 位 也 可 以 通 过 写 入 来 清 零 当 INT 配 置 为 电 平 中 断 时, 该 标 志 会 被 清 零 64 ATmega8(L)
ATmega8(L) 8 位 定 时 器 / 计 时 器 T/C 是 一 个 通 用 的 单 通 道 8 位 定 时 器 / 计 数 器 模 块 其 主 要 特 点 如 下 : 单 通 道 计 数 器 频 率 发 生 器 外 部 事 件 计 数 器 位 的 时 钟 预 分 频 器 综 述 Figure 26 为 8 位 定 时 器 / 计 数 器 的 简 化 框 图 实 际 引 脚 排 列 请 参 考 P 2 引 脚 配 置 CPU 可 以 访 问 的 I/O 寄 存 器, 包 括 位 和 引 脚, 以 粗 体 显 示 I/O 寄 存 器 和 位 的 位 置 列 于 P 68 8 位 定 时 器 / 计 数 器 寄 存 器 的 说 明 Figure 26. 8 位 T/C 方 框 图 TCCRn DATA BUS count Control Logic clk Tn Clock Select Edge Detector TOVn (Int.Req.) Tn Timer/Counter TCNTn = xff ( From Prescaler ) 寄 存 器 定 义 T/C(TCNT) 和 输 出 比 较 寄 存 器 (OCR) 为 8 位 寄 存 器 中 断 请 求 ( 图 中 简 写 为 Int.Req. ) 信 号 在 定 时 器 中 断 标 志 寄 存 器 TIFR 都 有 反 映 所 有 中 断 都 可 以 通 过 定 时 器 中 断 屏 蔽 寄 存 器 TIMSK 单 独 进 行 屏 蔽 由 于 TIFR 和 TIMSK 寄 存 器 是 与 其 他 定 时 器 单 元 共 享, 因 此 图 中 没 有 给 出 T/C 可 以 通 过 预 分 频 器 由 内 部 时 钟 源 驱 动, 或 者 是 通 过 T 引 脚 的 外 部 时 钟 源 来 驱 动 时 钟 选 择 逻 辑 模 块 控 制 使 用 哪 一 个 时 钟 源 与 什 么 边 沿 来 增 加 ( 或 降 低 )T/C 的 数 值 如 果 没 有 选 择 时 钟 源 T/C 就 不 工 作 时 钟 选 择 模 块 的 输 出 定 义 为 定 时 器 时 钟 clk T 本 文 的 许 多 寄 存 器 及 其 各 个 位 以 通 用 的 格 式 表 示 小 写 的 n 取 代 了 T/C 的 序 号, 在 此 即 为 但 是 在 写 程 序 时 要 使 用 精 确 的 格 式, 例 如 使 用 TCNT 来 访 问 T/C 计 数 器 值, 等 等 Table 33 的 定 义 适 用 于 全 文 Table 33. 定 义 BOTTOM 计 数 器 计 到 x 时 即 达 到 BOTTOM MAX 计 数 器 计 到 xff ( 十 进 制 的 255) 时 即 达 到 MAX T/C 的 时 钟 源 T/C 可 以 由 内 部 同 步 时 钟 或 外 部 异 步 时 钟 驱 动 时 钟 源 是 由 时 钟 选 择 逻 辑 决 定 的, 而 时 钟 选 择 逻 辑 是 由 位 于 T/C 控 制 寄 存 器 TCCR 的 时 钟 选 择 位 CS2: 控 制 的 P 7 T/C 与 T/C 的 预 分 频 器 对 时 钟 源 与 预 分 频 有 详 尽 的 描 述 计 数 器 单 元 8 位 T/C 的 主 要 部 分 为 可 编 程 的 双 向 计 数 单 元 Figure 27 即 为 计 数 器 和 周 边 电 路 的 框 图 65
Figure 27. 计 数 器 单 元 方 框 图 DATA BUS TOVn (Int. Req.) Clock Select TCNTn count Control Logic clk Tn Edge Detector Tn max ( From Prescaler ) 信 号 说 明 ( 内 部 信 号 ): count 使 TCNT 加 clk Tn T/C 的 时 钟, clk T max 表 示 TCNT 已 经 达 到 了 最 大 值 计 数 器 针 对 每 一 个 clk T 实 现 加 一 操 作 clk T 可 以 由 内 部 或 外 部 时 钟 源 产 生, 具 体 由 时 钟 选 择 位 CS2: 确 定 没 有 选 择 时 钟 源 时 (CS2: = ) 定 时 器 即 停 止 但 是 不 管 有 没 有 clk T,CPU 都 可 以 访 问 TCNT CPU 写 操 作 比 计 数 器 其 他 操 作 ( 如 清 零 加 减 操 作 ) 的 优 先 级 高 操 作 计 数 方 向 始 终 向 上 ( 增 加 ), 且 没 有 计 数 器 清 除 操 作 当 计 数 器 值 超 过 最 大 8 位 值 (MAX = xff) 时, 重 新 由 x 开 始 计 数 在 正 常 工 作 时, 当 TCNT 变 为 " 时, T/C 溢 出 标 志 (TOV) 置 位 此 时 TOV 象 第 九 位, 只 会 置 位, 不 会 清 零 TOV 标 志 可 用 定 时 器 溢 出 中 断 清 零, 同 时 定 时 器 的 分 辨 率 可 通 过 软 件 提 高 可 随 时 写 入 新 的 计 数 器 值 66 ATmega8(L)
ATmega8(L) T/C 时 序 图 T/C 是 同 步 电 路, 因 此 其 时 钟 clk T 可 以 表 示 为 时 钟 使 能 信 号, 如 下 图 所 示 图 中 还 说 明 了 中 断 标 志 设 置 的 时 间 Figure 28 给 出 了 基 本 的 T/C 工 作 时 序, 以 及 接 近 MAX 时 的 记 数 序 列 Figure 28. T/C 时 序 图, 无 预 分 频 器 clk I/O clk Tn (clk I/O /) TCNTn MAX - MAX BOTTOM BOTTOM + TOVn Figure 29 所 示 为 相 同 的 计 时 数 据, 但 有 预 分 频 Figure 29. T/C 时 序 图, 预 分 频 器 为 f clk_i/o /8 clk I/O clk Tn (clk I/O /8) TCNTn MAX - MAX BOTTOM BOTTOM + TOVn 67
8 位 定 时 器 / 计 数 器 寄 存 器 的 说 明 T/C 控 制 寄 存 器 - TCCR Bit 7 6 5 4 3 2 CS2 CS CS TCCR 读 / 写 R R R R R R/W R/W R/W 初 始 值 Bit 2: CS2:: 时 钟 选 择 用 于 选 择 T/C 的 时 钟 源 Table 34. 时 钟 选 择 位 说 明 CS2 CS CS 说 明 无 时 钟, T/C 不 工 作 clk I/O / ( 没 有 预 分 频 ) clk I/O /8 ( 来 自 预 分 频 器 ) clk I/O /64 ( 来 自 预 分 频 器 ) clk I/O /256 ( 来 自 预 分 频 器 ) clk I/O /24 ( 来 自 预 分 频 器 ) 时 钟 由 T 引 脚 输 入, 下 降 沿 触 发 时 钟 由 T 引 脚 输 入, 上 升 沿 触 发 如 果 T/C 使 用 外 部 时 钟, 即 使 T 被 配 置 为 输 出, 其 上 的 电 平 变 化 仍 然 会 驱 动 记 数 器 利 用 这 一 特 性 可 通 过 软 件 控 制 记 数 T/C 寄 存 器 - TCNT Bit 7 6 5 4 3 2 TCNT[7:] 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 通 过 T/C 寄 存 器 可 以 直 接 对 计 数 器 的 8 位 数 据 进 行 读 写 访 问 TCNT T/C 中 断 屏 蔽 寄 存 器 - TIMSK Bit 7 6 5 4 3 2 OCIE2 TOIE2 TICIE OCIEA OCIEB TOIE TOIE TIMSK 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 Bit TOIE: T/C 溢 出 中 断 使 能 当 TOIE 和 状 态 寄 存 器 的 全 局 中 断 使 能 位 I 都 为 时,T/C 的 溢 出 中 断 使 能 当 T/C 发 生 溢 出, 即 TIFR 中 的 TOV 位 置 位 时, 中 断 服 务 程 序 得 以 执 行 68 ATmega8(L)
ATmega8(L) T/C 中 断 标 志 寄 存 器 - TIFR Bit 7 6 5 4 3 2 OCF2 TOV2 ICF OCFA OCFB TOV TOV TIFR 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 Bit TOV:T/C 溢 出 标 志 当 T/C 溢 出 时, TOV 置 位 执 行 相 应 的 中 断 服 务 程 序 时 此 位 硬 件 清 零 此 外, TOV 也 可 以 通 过 写 来 清 零 当 SREG 中 的 位 I TOIE(T/C 溢 出 中 断 使 能 ) 和 TOV 都 置 位 时, 执 行 中 断 服 务 程 序 69
T/C 与 T/C 的 预 分 频 器 内 部 时 钟 源 分 频 器 复 位 外 部 时 钟 源 T/C 与 T/C 共 用 一 个 预 分 频 模 块, 但 它 们 可 以 有 不 同 的 分 频 设 置 下 述 内 容 适 用 于 T/C 与 T/C 当 CSn2: = 时, 系 统 内 部 时 钟 直 接 作 为 T/C 的 时 钟 源, 这 也 是 T/C 最 高 频 率 的 时 钟 源 f CLK_I/O, 与 系 统 时 钟 频 率 相 同 预 分 频 器 可 以 输 出 4 个 不 同 的 时 钟 信 号 f CLK_I/O /8 f CLK_I/O /64 f CLK_I/O /256 或 f CLK_I/O /24 预 分 频 器 是 独 立 运 行 的 也 就 是 说, 其 操 作 独 立 于 T/C 的 时 钟 选 择 逻 辑, 且 它 由 T/C 与 T/C 共 享 由 于 预 分 频 器 不 受 T/C 时 钟 选 择 的 影 响, 预 分 频 器 的 状 态 需 要 包 含 预 分 频 时 钟 被 用 到 何 处 这 样 的 信 息 一 个 典 型 的 例 子 发 生 在 定 时 器 使 能 并 由 预 分 频 器 驱 动 (6 > CSn2: > ) 的 时 候 : 从 计 时 器 使 能 到 第 一 次 开 始 计 数 可 能 花 费 到 N+ 个 系 统 时 钟 周 期, 其 中 N 等 于 预 分 频 因 子 (8 64 256 或 24) 通 过 复 位 预 分 频 器 来 同 步 T/C 与 程 序 运 行 是 可 能 的 但 是 必 须 注 意 另 一 个 T/C 是 否 也 在 使 用 这 一 预 分 频 器, 因 为 预 分 频 器 复 位 将 会 影 响 所 有 与 其 连 接 的 T/C 由 T/T 引 脚 提 供 的 外 部 时 钟 源 可 以 用 作 T/C 时 钟 clk T /clk T 引 脚 同 步 逻 辑 在 每 个 系 统 时 钟 周 期 对 引 脚 T/T 进 行 采 样 然 后 将 同 步 ( 采 样 ) 信 号 送 到 边 沿 检 测 器 Figure 3 给 出 了 T/T 同 步 采 样 与 边 沿 检 测 逻 辑 的 功 能 等 效 方 框 图 寄 存 器 由 内 部 系 统 时 钟 clk I/O 的 上 跳 沿 驱 动 当 内 部 时 钟 为 高 时, 锁 存 器 可 以 看 作 时 透 明 的 CSn2: = 7 时 边 沿 检 测 器 检 测 到 一 个 正 跳 变 产 生 一 个 clk T 脉 冲 ; CSn2: = 6 时 一 个 负 跳 变 就 产 生 一 个 clk T 脉 冲 Figure 3. T/T 引 脚 采 样 Tn D LE Q D Q D Q Tn_sync (To Clock Select Logic) clk I/O Synchronization Edge Detector 由 于 引 脚 上 同 步 与 边 沿 监 测 电 路 的 存 在, 引 脚 T/T 上 的 电 平 变 化 需 要 延 时 2.5 到 3.5 个 系 统 时 钟 周 期 才 能 使 计 数 器 进 行 更 新 禁 止 或 使 能 时 钟 输 入 必 须 在 T/T 保 持 稳 定 至 少 一 个 系 统 时 钟 周 期 后 才 能 进 行, 否 则 有 产 生 错 误 T/C 时 钟 脉 冲 的 危 险 为 保 证 正 确 的 采 样, 外 部 时 钟 脉 冲 宽 度 必 须 大 于 一 个 系 统 时 钟 周 期 在 占 空 比 为 5% 时 外 部 时 钟 频 率 必 须 小 于 系 统 时 钟 频 率 的 一 半 (f ExtClk < f clk_i/o /2) 由 于 边 沿 检 测 器 使 用 的 是 采 样 这 一 方 法, 它 能 检 测 到 的 外 部 时 钟 最 多 是 其 采 样 频 率 的 一 半 (Nyquist 采 样 定 理 ) 然 而, 由 于 振 荡 器 ( 晶 体 谐 振 器 与 电 容 ) 本 身 误 差 带 来 的 系 统 时 钟 频 率 及 占 空 比 的 差 异, 建 议 外 部 时 钟 的 最 高 频 率 不 要 大 于 f clk_i/o /2.5 外 部 时 钟 源 不 送 入 预 分 频 器 7 ATmega8(L)
ATmega8(L) () Figure 3. T/C 与 T/C 预 分 频 器 clk I/O Clear PSR T T Synchronization Synchronization clk T clk T Note:. 输 入 引 脚 (T/T) 的 同 步 逻 辑 见 Figure 3 特 殊 功 能 IO 寄 存 器 - SFIOR Bit 7 6 5 4 3 2 ACME PUD PSR2 PSR SFIOR 读 / 写 R R R R R/W R/W R/W R/W 初 始 值 Bit PSR:T/C 与 T/C 预 分 频 器 复 位 置 位 时 T/C 与 T/C 的 预 分 频 器 复 位 操 作 完 成 后 这 一 位 由 硬 件 自 动 清 零 写 入 零 时 无 效 T/C 与 T/C 共 用 同 一 预 分 频 器, 且 预 分 频 器 复 位 对 两 个 定 时 器 均 有 影 响 该 位 总 是 读 为 7
6 位 定 时 器 / 计 数 器 6 位 的 T/C 可 以 实 现 精 确 的 程 序 定 时 ( 事 件 管 理 ) 波 形 产 生 和 信 号 测 量 其 主 要 特 点 如 下 真 正 的 6 位 设 计 ( 即 允 许 6 位 的 PWM) 2 个 独 立 的 输 出 比 较 单 元 双 缓 冲 的 输 出 比 较 寄 存 器 一 个 输 入 捕 捉 单 元 输 入 捕 捉 噪 声 抑 制 器 比 较 匹 配 发 生 时 清 除 寄 存 器 ( 自 动 重 载 ) 无 干 扰 脉 冲, 相 位 正 确 的 PWM 可 变 的 PWM 周 期 频 率 发 生 器 外 部 事 件 计 数 器 4 个 独 立 的 中 断 源 (TOV OCFA OCFB 与 ICF) 综 述 本 节 大 多 数 的 寄 存 器 和 位 定 义 以 通 用 的 方 式 表 示 小 写 n 表 示 T/C 序 号, 小 写 x 表 示 输 出 比 较 通 道 号 但 是 在 写 程 序 时 要 用 完 整 的 精 确 的 名 称 如 用 TCNT 表 示 访 问 T/C 计 数 器 值 等 6 位 T/C 的 简 化 框 图 示 于 Figure 32 I/O 引 脚 的 实 际 位 置 请 参 见 P 2 引 脚 配 置 CPU 可 访 问 的 I/O 寄 存 器, 包 括 I/O 位 和 I/O 引 脚 以 粗 体 表 示 器 件 具 体 I/O 寄 存 器 与 位 定 位 见 P 89 6 位 定 时 器 / 计 数 器 寄 存 器 的 说 明 () Figure 32. 6 位 T/C 框 图 Count Clear Direction Control Logic clk Tn TOVn (Int. Req.) Clock Select Edge Detector Tn TOP BOTTOM Timer/Counter TCNTn = = ( From Prescaler ) OCFnA (Int. Req.) = Waveform Generation OCnA OCRnA DATA BUS = OCRnB Fixed TOP Values ICFn (Int.Req.) OCFnB (Int.Req.) Waveform Generation OCnB ( From Analog Comparator Ouput ) ICRn Edge Detector Noise Canceler ICPn TCCRnA TCCRnB Note:. 请 参 考 P 2 引 脚 配 置,P 55Table 22 及 P 59Table 28 T/C 中 的 引 脚 定 义 72 ATmega8(L)
ATmega8(L) 寄 存 器 定 时 器 / 计 数 器 TCNT 输 出 比 较 寄 存 器 OCRA/B 与 输 入 捕 捉 寄 存 器 ICR 均 为 6 位 寄 存 器 访 问 6 位 寄 存 器 必 须 通 过 特 殊 的 步 骤, 详 见 P 74 访 问 6 位 寄 存 器 T/C 控 制 寄 存 器 TCCRA/B 为 8 位 寄 存 器, 没 有 CPU 访 问 的 限 制 中 断 请 求 ( 图 中 简 写 为 Int.Req.) 信 号 在 中 断 标 志 寄 存 器 TIFR 都 有 反 映 所 有 中 断 都 可 以 由 中 断 屏 蔽 寄 存 器 TIMSK 单 独 控 制 图 中 未 给 出 TIFR 与 TIMSK T/C 可 由 内 部 时 钟 通 过 预 分 频 器 或 通 过 由 T 引 脚 输 入 的 外 部 时 钟 驱 动 引 发 T/C 数 值 增 加 ( 或 减 少 ) 的 时 钟 源 及 其 有 效 沿 由 时 钟 选 择 逻 辑 模 块 控 制 没 有 选 择 时 钟 源 时 T/C 处 于 停 止 状 态 时 钟 选 择 逻 辑 模 块 的 输 出 称 为 clk T 双 缓 冲 输 出 比 较 寄 存 器 OCRA/B 一 直 与 T/C 的 值 做 比 较 波 形 发 生 器 用 比 较 结 果 产 生 PWM 或 在 输 出 比 较 引 脚 OCA/B 输 出 可 变 频 率 的 信 号 参 见 P 79 输 出 比 较 单 元 比 较 匹 配 结 果 还 可 置 位 比 较 匹 配 标 志 OCFA/B, 用 来 产 生 输 出 比 较 中 断 请 求 当 输 入 捕 捉 引 脚 ICP 或 模 拟 比 较 器 输 入 引 脚 ( 见 P 8 模 拟 比 较 器 ) 有 输 入 捕 捉 事 件 产 生 ( 边 沿 触 发 ) 时, 当 时 的 T/C 值 被 传 输 到 输 入 捕 捉 寄 存 器 保 存 起 来 输 入 捕 捉 单 元 包 括 一 个 数 字 滤 波 单 元 ( 噪 声 消 除 器 ) 以 降 低 噪 声 干 扰 在 某 些 操 作 模 式 下, TOP 值 或 T/C 的 最 大 值 可 由 OCRA 寄 存 器 ICR 寄 存 器, 或 一 些 固 定 数 据 来 定 义 在 PWM 模 式 下 用 OCRA 作 为 TOP 值 时, OCRA 寄 存 器 不 能 用 作 PWM 输 出 但 此 时 OCRA 是 双 向 缓 冲 的, TOP 值 可 在 运 行 过 程 中 得 到 改 变 当 需 要 一 个 固 定 的 TOP 值 时 可 以 使 用 ICR 寄 存 器, 从 而 释 放 OCRA 来 用 作 PWM 的 输 出 定 义 以 下 定 义 适 用 于 本 节 : Table 35. 定 义 BOTTOM 计 数 器 计 到 x 时 即 达 到 BOTTOM MAX TOP 计 数 器 计 到 xffff ( 十 进 制 的 65535) 时 即 达 到 MAX 计 数 器 计 到 计 数 序 列 的 最 大 值 时 即 达 到 TOP TOP 值 可 以 为 固 定 值 xff xff 或 x3ff, 或 是 存 储 于 寄 存 器 OCRA 或 ICR 里 的 数 值, 具 体 有 赖 于 工 作 模 式 兼 容 性 6 位 T/C 是 从 以 前 版 本 的 6 位 AVRT/C 改 进 和 升 级 得 来 的 它 在 如 下 方 面 与 以 前 的 版 本 完 全 兼 容 : 包 括 定 时 器 中 断 寄 存 器 在 内 的 所 有 6 位 T/C 相 关 的 I/O 寄 存 器 的 地 址 包 括 定 时 器 中 断 寄 存 器 在 内 的 所 有 6 位 T/C 相 关 的 寄 存 器 位 定 位 中 断 向 量 下 列 控 制 位 名 称 已 改, 但 具 有 相 同 的 功 能 与 寄 存 器 单 元 : PWM 改 为 WGM PWM 改 为 WGM CTC 改 为 WGM2 6 位 T/C 控 制 寄 存 器 中 添 加 了 下 列 位 : TCCRA 中 加 入 FOCA 与 FOCB TCCRB 中 加 入 WGM3 6 位 T/C 的 一 些 改 进 在 某 些 特 殊 情 况 下 将 影 响 兼 容 性 73
访 问 6 位 寄 存 器 TCNT OCRA/B 与 ICR 是 AVR CPU 通 过 8 位 数 据 总 线 可 以 访 问 的 6 位 寄 存 器 读 写 6 位 寄 存 器 需 要 两 次 操 作 每 个 6 位 计 时 器 都 有 一 个 8 位 临 时 寄 存 器 用 来 存 放 其 高 8 位 数 据 每 个 6 位 定 时 器 所 属 的 6 位 寄 存 器 共 用 相 同 的 临 时 寄 存 器 访 问 低 字 节 会 触 发 6 位 读 或 写 操 作 当 CPU 写 入 数 据 到 6 位 寄 存 器 的 低 字 节 时, 写 入 的 8 位 数 据 与 存 放 在 临 时 寄 存 器 中 的 高 8 位 数 据 组 成 一 个 6 位 数 据, 同 步 写 入 到 6 位 寄 存 器 中 当 CPU 读 取 6 位 寄 存 器 的 低 字 节 时, 高 字 节 内 容 在 读 低 字 节 操 作 的 同 时 被 放 置 于 临 时 辅 助 寄 存 器 中 并 非 所 有 的 6 位 访 问 都 涉 及 临 时 寄 存 器 对 OCRA/B 寄 存 器 的 读 操 作 就 不 涉 及 临 时 寄 存 器 写 6 位 寄 存 器 时, 应 先 写 入 该 寄 存 器 的 高 位 字 节 而 读 6 位 寄 存 器 时 应 先 读 取 该 寄 存 器 的 低 位 字 节 下 面 的 例 程 说 明 了 如 何 访 问 6 位 定 时 器 寄 存 器 前 提 是 假 设 不 会 发 生 更 新 临 时 寄 存 器 内 容 的 中 断 同 样 的 原 则 也 适 用 于 对 OCRA/B 与 ICR 寄 存 器 的 访 问 使 用 C 语 言 时, 编 译 器 会 自 动 处 理 6 位 操 作 () 汇 编 代 码 例 程... ; 设 置 TCNT 为 xff ldi r7,x ldi r6,xff out TCNTH,r7 out TCNTL,r6 ; 将 TCNT 读 入 r7:r6 in r6,tcntl in r7,tcnth... C 代 码 例 程 () unsigned int i;... /* 设 置 TCNT 为 xff */ TCNT = xff; /* 将 TCNT 读 入 i */ i = TCNT;... Note:. 本 代 码 假 定 已 经 包 含 了 合 适 的 头 文 件 汇 编 代 码 例 程 中 TCNT 的 返 回 值 在 r7:r6 寄 存 器 对 中 注 意 到 6 位 寄 存 器 的 访 问 是 一 个 基 本 操 作 是 非 常 重 要 的 在 对 6 位 寄 存 器 操 作 时, 最 好 首 先 屏 蔽 中 断 响 应, 防 止 在 主 程 序 读 写 6 位 寄 存 器 的 两 条 指 令 之 间 发 生 这 样 的 中 断 : 它 也 访 问 同 样 的 寄 存 器 或 其 他 的 6 位 寄 存 器, 从 而 更 改 了 临 时 寄 存 器 如 果 这 种 情 况 发 生, 那 么 中 断 返 回 后 临 时 寄 存 器 中 的 内 容 已 经 改 变, 造 成 主 程 序 对 6 位 寄 存 器 的 读 写 错 误 74 ATmega8(L)
ATmega8(L) 下 面 的 例 程 给 出 了 读 取 TCNT 寄 存 器 内 容 的 基 本 操 作 对 OCRA/B 或 ICR 的 读 操 作 可 以 使 用 相 同 的 方 法 () 汇 编 代 码 例 程 TIM6_ReadTCNT: ; 保 存 全 局 中 断 标 志 in r8,sreg ; 禁 用 中 断 cli ; 将 TCNT 读 入 r7:r6 in r6,tcntl in r7,tcnth ; 恢 复 全 局 中 断 标 志 out SREG,r8 ret () C 代 码 例 程 unsigned int TIM6_ReadTCNT( void ) { unsigned char sreg; unsigned int i; /* 保 存 全 局 中 断 标 志 */ sreg = SREG; /* 禁 用 中 断 */ _CLI(); /* 将 TCNT 读 入 i */ i = TCNT; /* 恢 复 全 局 中 断 标 志 */ SREG = sreg; return i; } Note:. 本 代 码 假 定 已 经 包 含 了 合 适 的 头 文 件 汇 编 代 码 例 程 中 TCNT 的 返 回 值 在 r7:r6 寄 存 器 对 中 75
下 面 的 例 程 给 出 了 写 TCNT 寄 存 器 的 基 本 操 作 对 OCRA/B 或 ICR 的 写 操 作 可 以 使 用 相 同 的 方 法 () 汇 编 代 码 例 程 TIM6_WriteTCNT: ; 保 存 全 局 中 断 标 志 in r8,sreg ; 禁 用 中 断 cli ; 设 置 TCNT 到 r7:r6 out TCNTH,r7 out TCNTL,r6 ; 恢 复 全 局 中 断 标 志 out SREG,r8 ret () C 代 码 例 程 void TIM6_WriteTCNT ( unsigned int i ) { unsigned char sreg; unsigned int i; /* 保 存 全 局 中 断 标 志 */ sreg = SREG; /* 禁 用 中 断 */ _CLI(); /* 设 置 TCNT 到 i */ TCNT = i; /* 恢 复 全 局 中 断 标 志 */ SREG = sreg; } Note:. 本 代 码 假 定 已 经 包 含 了 合 适 的 头 文 件 汇 编 代 码 例 程 中 r7:r6 寄 存 器 对 保 存 的 是 TCNT 的 写 入 数 据 临 时 高 字 节 寄 存 器 的 重 用 如 果 对 不 只 一 个 6 位 寄 存 器 写 入 数 据 而 且 所 有 的 寄 存 器 高 字 节 相 同, 则 只 需 写 一 次 高 字 节 前 面 讲 到 的 基 本 操 作 在 这 种 情 况 下 同 样 适 用 76 ATmega8(L)
ATmega8(L) T/C 时 钟 源 计 数 器 单 元 T/C 时 钟 源 可 以 来 自 内 部, 也 可 来 自 外 部, 由 位 于 T/C 控 制 寄 存 器 B(TCCRB) 的 时 钟 选 择 位 (CS2:) 决 定 时 钟 源 与 预 分 频 器 的 描 述 见 P 7 T/C 与 T/C 的 预 分 频 器 6 位 T/C 的 主 要 部 分 是 可 编 程 的 6 位 双 向 计 数 器 单 元 Figure 33 给 出 了 计 数 器 与 其 外 围 电 路 方 框 图 Figure 33. 计 数 器 单 元 方 框 图 DATA BUS (8-bit) TOVn (Int. Req.) TEMP (8-bit) Clock Select TCNTnH (8-bit) TCNTnL (8-bit) TCNTn (6-bit Counter) count clear direction Control Logic clk Tn Edge Detector Tn ( From Prescaler ) TOP BOTTOM 信 号 描 述 ( 内 部 信 号 ): Count TCNT 加 或 减 Direction 确 定 是 加 操 作 还 是 减 操 作 Clear TCNT 清 零 clk T 定 时 器 / 计 数 器 时 钟 信 号 TOP 表 示 TCNT 计 数 器 到 达 最 大 值 BOTTOM 表 示 TCNT 计 数 器 到 达 最 小 值 () 6 位 计 数 器 映 射 到 两 个 8 位 I/O 存 储 器 位 置 :TCNTH 为 高 8 位,TCNTL 为 低 8 位 CPU 只 能 间 接 访 问 TCNTH 寄 存 器 CPU 访 问 TCNTH 时, 实 际 访 问 的 是 临 时 寄 存 器 (TEMP) 读 取 TCNTL 时, 临 时 寄 存 器 的 内 容 更 新 为 TCNTH 的 数 值 ; 而 对 TCNTL 执 行 写 操 作 时,TCNTH 被 临 时 寄 存 器 的 内 容 所 更 新 这 就 使 CPU 可 以 在 一 个 时 钟 周 期 里 通 过 8 位 数 据 总 线 完 成 对 6 位 计 数 器 的 读 写 操 作 此 外 还 需 要 注 意 计 数 器 在 运 行 时 的 一 些 特 殊 情 况 在 这 些 特 殊 情 况 下 对 TCNT 写 入 数 据 会 带 来 未 知 的 结 果 在 合 适 的 章 节 会 对 这 些 特 殊 情 况 进 行 具 体 描 述 根 据 工 作 模 式 的 不 同, 在 每 一 个 clk T 时 钟 到 来 时, 计 数 器 进 行 清 零 加 或 减 操 作 clk T 由 时 钟 选 择 位 CS2: 设 定 当 CS2:= 时, 计 数 器 停 止 计 数 不 过 CPU 对 TCNT 的 读 取 与 clk T 是 否 存 在 无 关 CPU 写 操 作 比 计 数 器 清 零 和 其 他 操 作 的 优 先 级 都 高 计 数 器 的 计 数 序 列 取 决 于 寄 存 器 TCCRA 和 TCCRB 中 标 志 位 WGM3: 的 设 置 计 数 器 的 运 行 ( 计 数 ) 方 式 与 通 过 OCx 输 出 的 波 形 发 生 方 式 有 很 紧 密 的 关 系 计 数 序 列 与 波 形 产 生 的 详 细 描 述 请 参 见 P 82 工 作 模 式 通 过 WGM3: 确 定 了 计 数 器 的 工 作 模 式 之 后,TOV 的 置 位 方 式 也 就 确 定 了 TOV 可 以 用 来 产 生 CPU 中 断 输 入 捕 捉 单 元 T/C 的 输 入 捕 捉 单 元 可 用 来 捕 获 外 部 事 件, 并 为 其 赋 予 时 间 标 记 以 说 明 此 时 间 的 发 生 时 刻 外 部 事 件 发 生 的 触 发 信 号 由 引 脚 ICP 输 入, 也 可 通 过 模 拟 比 较 器 单 元 来 实 现 时 间 标 记 可 用 来 计 算 频 率 占 空 比 及 信 号 的 其 它 特 征, 以 及 为 事 件 创 建 日 志 77
输 入 捕 捉 单 元 方 框 图 见 Figure 34 图 中 不 直 接 属 于 输 入 捕 捉 单 元 的 部 分 用 阴 影 表 示 寄 存 器 与 位 中 的 小 写 n 表 示 定 时 器 / 计 数 器 编 号 Figure 34. 输 入 捕 捉 单 元 方 框 图 DATA BUS (8-bit) TEMP (8-bit) ICRnH (8-bit) ICRnL (8-bit) TCNTnH (8-bit) TCNTnL (8-bit) WRITE ICRn (6-bit Register) TCNTn (6-bit Counter) ACO* ACIC* ICNC ICES ICPn Analog Comparator Noise Canceler Edge Detector ICFn (Int. Req.) 当 引 脚 ICP 上 的 逻 辑 电 平 ( 事 件 ) 发 生 了 变 化, 或 模 拟 比 较 器 输 出 ACO 电 平 发 生 了 变 化, 并 且 这 个 电 平 变 化 为 边 沿 检 测 器 所 证 实, 输 入 捕 捉 即 被 激 发 :6 位 的 TCNT 数 据 被 拷 贝 到 输 入 捕 捉 寄 存 器 ICR, 同 时 输 入 捕 捉 标 志 位 ICF 置 位 如 果 此 时 ICIE =, 输 入 捕 捉 标 志 将 产 生 输 入 捕 捉 中 断 中 断 执 行 时 ICF 自 动 清 零, 或 者 也 可 通 过 软 件 在 其 对 应 的 I/O 位 置 写 入 逻 辑 " 清 零 读 取 ICR 时 要 先 读 低 字 节 ICRL, 然 后 再 读 高 字 节 ICRH 读 低 字 节 时, 高 字 节 被 复 制 到 高 字 节 临 时 寄 存 器 TEMP CPU 读 取 ICRH 时 将 访 问 TEMP 寄 存 器 对 ICR 寄 存 器 的 写 访 问 只 存 在 于 波 形 产 生 模 式 此 时 ICR 被 用 作 计 数 器 的 TOP 值 写 ICR 之 前 首 先 要 设 置 WGM3: 以 允 许 这 个 操 作 对 ICR 寄 存 器 进 行 写 操 作 时 必 须 先 将 高 字 节 写 入 ICRH I/O 位 置, 然 后 再 将 低 字 节 写 入 ICRL 请 参 见 P 74 访 问 6 位 寄 存 器 以 了 解 更 多 的 关 于 如 何 访 问 6 位 寄 存 器 的 信 息 输 入 捕 捉 触 发 源 噪 声 抑 制 器 输 入 捕 捉 单 元 的 主 要 触 发 源 是 ICP T/C 还 可 用 模 拟 比 较 输 出 作 为 输 入 捕 捉 单 元 的 触 发 源 用 户 必 须 通 过 设 置 模 拟 比 较 控 制 与 状 态 寄 存 器 ACSR 的 模 拟 比 较 输 入 捕 捉 位 ACIC 来 做 到 这 一 点 要 注 意 的 是, 改 变 触 发 源 有 可 能 造 成 一 次 输 入 捕 捉 因 此 在 改 变 触 发 源 后 必 须 对 输 入 捕 捉 标 志 执 行 一 次 清 零 操 作 以 避 免 出 现 错 误 的 结 果 ICP 与 ACO 的 采 样 方 式 与 T 引 脚 是 相 同 的 (P 7Figure 3 ), 使 用 的 边 沿 检 测 器 也 一 样 但 是 使 能 噪 声 抑 制 器 后, 在 边 沿 检 测 器 前 会 加 入 额 外 的 逻 辑 电 路 并 引 入 4 个 系 统 时 钟 周 期 的 延 迟 要 注 意 的 是, 除 去 使 用 ICR 定 义 TOP 的 波 形 产 生 模 式 外, T/C 中 的 噪 声 抑 制 器 与 边 沿 检 测 器 总 是 使 能 的 输 入 捕 捉 也 可 以 通 过 软 件 控 制 引 脚 ICP 的 方 式 来 触 发 噪 声 抑 制 器 通 过 一 个 简 单 的 数 字 滤 波 方 案 提 高 系 统 抗 噪 性 它 对 输 入 触 发 信 号 进 行 4 次 采 样 只 有 当 4 次 采 样 值 相 等 时 其 输 出 才 会 送 入 边 沿 检 测 器 78 ATmega8(L)
ATmega8(L) 置 位 TCCRB 的 ICNC 将 使 能 噪 声 抑 制 器 使 能 噪 声 抑 制 器 后, 在 输 入 发 生 变 化 到 ICR 得 到 更 新 之 间 将 会 有 额 外 的 4 个 系 统 时 钟 周 期 的 延 时 噪 声 抑 制 器 使 用 的 是 系 统 时 钟, 因 而 不 受 预 分 频 器 的 影 响 输 入 捕 捉 单 元 的 使 用 输 出 比 较 单 元 使 用 输 入 捕 捉 单 元 的 最 大 问 题 就 是 分 配 足 够 的 处 理 器 资 源 来 处 理 输 入 事 件 事 件 的 时 间 间 隔 是 关 键 如 果 处 理 器 在 下 一 次 事 件 出 现 之 前 没 有 读 取 ICR 的 数 据, ICR 就 会 被 新 值 覆 盖, 从 而 无 法 得 到 正 确 的 捕 捉 结 果 使 用 输 入 捕 捉 中 断 时, 中 断 程 序 应 尽 可 能 早 的 读 取 ICR 寄 存 器 尽 管 输 入 捕 捉 中 断 优 先 级 相 对 较 高, 但 最 大 中 断 响 应 时 间 与 其 它 正 在 运 行 的 中 断 程 序 所 需 的 时 间 相 关 在 任 何 输 入 捕 捉 工 作 模 式 下 都 不 推 荐 在 操 作 过 程 中 改 变 TOP 值 测 量 外 部 信 号 的 占 空 比 时 要 求 每 次 捕 捉 后 都 要 改 变 触 发 沿 因 此 读 取 ICR 后 必 须 尽 快 改 变 敏 感 的 信 号 边 沿 改 变 边 沿 后,ICF 必 须 由 软 件 清 零 ( 在 对 应 的 I/O 位 置 写 " ) 若 仅 需 测 量 频 率, 且 使 用 了 中 断 发 生, 则 不 需 对 ICF 进 行 软 件 清 零 6 位 比 较 器 持 续 比 较 TCNT 与 OCRx 的 内 容, 一 旦 发 现 它 们 相 等, 比 较 器 立 即 产 生 一 个 匹 配 信 号 然 后 OCFx 在 下 一 个 定 时 器 时 钟 置 位 如 果 此 时 OCIEx =, OCFx 置 位 将 引 发 输 出 比 较 中 断 中 断 执 行 时 OCFx 标 志 自 动 清 零, 或 者 通 过 软 件 在 其 相 应 的 I/O 位 置 写 入 逻 辑 " 也 可 以 清 零 根 据 WGM3: 与 COMx: 的 不 同 设 置, 波 形 发 生 器 用 匹 配 信 号 生 成 不 同 的 波 形 波 形 发 生 器 利 用 TOP 和 BOTTOM 信 号 处 理 在 某 些 模 式 下 对 极 值 的 操 作 (P 82 工 作 模 式 ) 输 出 比 较 单 元 A 的 一 个 特 质 是 定 义 T/C 的 TOP 值 ( 即 计 数 器 的 分 辨 率 ) 此 外, TOP 值 还 用 来 定 义 通 过 波 形 发 生 器 产 生 的 波 形 的 周 期 Figure 35 给 出 输 出 比 较 单 元 的 方 框 图 寄 存 器 与 位 上 的 小 写 n 表 示 器 件 编 号 (n = 表 示 T/C), x 表 示 输 出 比 较 单 元 (A/B) 框 图 中 非 输 出 比 较 单 元 部 分 用 阴 影 表 示 Figure 35. 输 出 比 较 单 元 方 框 图 DATA BUS (8-bit) TEMP (8-bit) OCRnxH Buf. (8-bit) OCRnxL Buf. (8-bit) TCNTnH (8-bit) TCNTnL (8-bit) OCRnx Buffer (6-bit Register) TCNTn (6-bit Counter) OCRnxH (8-bit) OCRnxL (8-bit) OCRnx (6-bit Register) = (6-bit Comparator ) OCFnx (Int.Req.) TOP BOTTOM Waveform Generator OCnx WGMn3: COMnx: 79
当 T/C 工 作 在 2 种 PWM 模 式 种 的 任 意 一 种 时, OCRx 寄 存 器 为 双 缓 冲 寄 存 器 ; 而 在 正 常 工 作 模 式 和 匹 配 时 清 零 模 式 (CTC) 双 缓 冲 功 能 是 禁 止 的 双 缓 冲 可 以 实 现 OCRx 寄 存 器 对 TOP 或 BOTTOM 的 同 步 更 新, 防 止 产 生 不 对 称 的 PWM 波 形, 消 除 毛 刺 访 问 OCRx 寄 存 器 看 起 来 很 复 杂, 其 实 不 然 使 能 双 缓 冲 功 能 时,CPU 访 问 的 是 OCRx 缓 冲 寄 存 器 ; 禁 止 双 缓 冲 功 能 时 CPU 访 问 的 则 是 OCRx 本 身 OCRx( 缓 冲 或 比 较 ) 寄 存 器 的 内 容 只 有 写 操 作 才 能 将 其 改 变 (T/C 不 会 自 动 将 此 寄 存 器 更 新 为 TCNT 或 ICR 的 内 容 ), 所 以 OCRx 不 用 通 过 TEMP 读 取 但 是 象 其 他 6 位 寄 存 器 一 样 首 先 读 取 低 字 节 是 一 个 好 习 惯 由 于 比 较 是 连 续 进 行 的, 因 此 在 写 OCRx 时 必 须 通 过 TEMP 寄 存 器 来 实 现 首 先 需 要 写 入 的 是 高 字 节 OCRxH 当 CPU 将 数 据 写 入 高 字 节 的 I/O 地 址 时, TEMP 寄 存 器 的 内 容 即 得 到 更 新 接 下 来 写 低 字 节 OCRxL 在 此 同 时, 位 于 TEMP 寄 存 器 的 高 字 节 数 据 被 拷 贝 到 OCRx 缓 冲 器, 或 是 OCRx 比 较 寄 存 器 请 参 见 P 74 访 问 6 位 寄 存 器 以 了 解 更 多 的 关 于 如 何 访 问 6 位 寄 存 器 的 信 息 强 制 输 出 比 较 写 TCNT 操 作 阻 止 比 较 匹 配 使 用 输 出 比 较 单 元 工 作 于 非 PWM 模 式 时, 可 以 通 过 对 强 制 输 出 比 较 位 FOCx 写 的 方 式 来 产 生 比 较 匹 配 强 制 比 较 匹 配 不 会 置 位 OCFx 标 志, 也 不 会 重 载 / 清 零 定 时 器, 但 是 OCx 引 脚 将 被 更 新, 好 象 真 的 发 生 了 比 较 匹 配 一 样 (COMx: 决 定 OCx 是 置 位 清 零, 还 是 交 替 变 化 ) CPU 对 TCNT 寄 存 器 的 写 操 作 会 阻 止 比 较 匹 配 的 发 生 这 个 特 性 可 以 用 来 将 OCRx 初 始 化 为 与 TCNT 相 同 的 数 值 而 不 触 发 中 断 由 于 在 任 意 模 式 下 写 TCNT 都 将 在 下 一 个 定 时 器 时 钟 周 期 里 阻 止 比 较 匹 配, 在 使 用 输 出 比 较 时 改 变 TCNT 就 会 有 风 险, 不 管 T/C 是 否 在 运 行 若 写 入 TCNT 的 数 值 等 于 OCRx, 比 较 匹 配 就 被 忽 略 了, 造 成 不 正 确 的 波 形 发 生 结 果 在 PWM 模 式 下, 当 TOP 为 可 变 数 值 时, 不 要 赋 予 TCNT 和 TOP 相 等 的 数 值 否 则 会 丢 失 一 次 比 较 匹 配, 计 数 器 也 将 计 到 xffff 类 似 地, 在 计 数 器 进 行 降 序 计 数 时 不 要 对 TCNT 写 入 等 于 BOTTOM 的 数 据 OCx 的 设 置 应 该 在 设 置 数 据 方 向 寄 存 器 之 前 完 成 最 简 单 的 设 置 OCx 的 方 法 是 在 普 通 模 式 下 利 用 强 制 输 出 比 较 FOCx 即 使 在 改 变 波 形 发 生 模 式 时 OCx 寄 存 器 也 会 一 直 保 持 它 的 数 值 COMx: 和 比 较 数 据 都 不 是 双 缓 冲 的 COMx: 的 改 变 将 立 即 生 效 8 ATmega8(L)
ATmega8(L) 比 较 匹 配 输 出 单 元 比 较 匹 配 模 式 控 制 位 COMx: 具 有 双 重 功 能 波 形 发 生 器 利 用 COMx: 来 确 定 下 一 次 比 较 匹 配 发 生 时 的 输 出 比 较 OCx 状 态 ; COMx: 还 控 制 OCx 引 脚 输 出 的 来 源 Figure 36 为 受 COMx: 设 置 影 响 的 逻 辑 的 简 化 原 理 图 I/O 寄 存 器 I/O 位 和 I/O 引 脚 以 粗 体 表 示 图 中 只 给 出 了 受 COMx: 影 响 的 通 用 I/O 端 口 控 制 寄 存 器 (DDR 和 PORT) 谈 及 OCx 状 态 时 指 的 是 内 部 OCx 寄 存 器, 而 不 是 OCx 引 脚 的 状 态 系 统 复 位 时 OCx 寄 存 器 复 位 为 " Figure 36. 比 较 匹 配 输 出 单 元 原 理 图 COMnx COMnx FOCnx Waveform Generator D Q OCnx OCnx Pin D Q DATABUS PORT D Q DDR clk I/O 只 要 COMx: 不 全 为 零, 波 形 发 生 器 的 输 出 比 较 功 能 就 会 重 载 OCx 的 通 用 I/O 口 功 能 但 是 OCx 引 脚 的 方 向 仍 旧 受 控 于 数 据 方 向 寄 存 器 (DDR) 从 OCx 引 脚 输 出 有 效 信 号 之 前 必 须 通 过 数 据 方 向 寄 存 器 的 DDR_OCx 将 此 引 脚 设 置 为 输 出 一 般 情 况 下 功 能 重 载 与 波 形 发 生 器 的 工 作 模 式 无 关, 但 也 由 一 些 例 外, 详 见 Table 36 Table 37 与 Table 38 输 出 比 较 逻 辑 的 设 计 允 许 OCx 在 输 出 之 前 首 先 进 行 初 始 化 要 注 意 某 些 COMx: 设 置 在 某 些 特 定 的 工 作 模 式 下 是 保 留 的, 如 P 89 6 位 定 时 器 / 计 数 器 寄 存 器 的 说 明 COMx: 不 影 响 输 入 捕 捉 单 元 8
比 较 输 出 模 式 和 波 形 产 生 工 作 模 式 普 通 模 式 CTC( 比 较 匹 配 时 清 零 定 时 器 ) 模 式 波 形 发 生 器 利 用 COMx: 的 方 法 在 普 通 模 式 CTC 模 式 和 PWM 模 式 下 有 所 区 别 对 于 所 有 的 模 式, 设 置 COMx: = 表 明 比 较 匹 配 发 生 时 波 形 发 生 器 不 会 操 作 OCx 寄 存 器 非 PWM 模 式 的 比 较 输 出 请 参 见 P 89Table 36 ; 快 速 PWM 的 比 较 输 出 于 P 9Table 37 ; 相 位 修 正 PWM 的 比 较 输 出 于 to P 9Table 38 改 变 COMx: 将 影 响 写 入 数 据 后 的 第 一 次 比 较 匹 配 对 于 非 PWM 模 式, 可 以 通 过 使 用 FOCx 来 立 即 产 生 效 果 工 作 模 式 - T/C 和 输 出 比 较 引 脚 的 行 为 - 由 波 形 发 生 模 式 (WGM3:) 及 比 较 输 出 模 式 (COMx:) 的 控 制 位 决 定 比 较 输 出 模 式 对 计 数 序 列 没 有 影 响, 而 波 形 产 生 模 式 对 计 数 序 列 则 有 影 响 COMx: 控 制 PWM 输 出 是 否 为 反 极 性 非 PWM 模 式 时 COMx: 控 制 输 出 是 否 应 该 在 比 较 匹 配 发 生 时 置 位 清 零, 或 是 电 平 取 反 P 8 比 较 匹 配 输 出 单 元 具 体 的 时 序 信 息 请 参 考 P 87 定 时 器 / 计 数 器 时 序 图 普 通 模 式 (WGM3: = ) 为 最 简 单 的 工 作 模 式 在 此 模 式 下 计 数 器 不 停 地 累 加 计 到 最 大 值 后 (TOP = xffff) 由 于 数 值 溢 出 计 数 器 简 单 地 返 回 到 最 小 值 x 重 新 开 始 在 TCNT 为 零 的 同 一 个 定 时 器 时 钟 里 T/C 溢 出 标 志 TOV 置 位 此 时 TOV 有 点 象 第 7 位, 只 是 只 能 置 位, 不 会 清 零 但 由 于 定 时 器 中 断 服 务 程 序 能 够 自 动 清 零 TOV, 因 此 可 以 通 过 软 件 提 高 定 时 器 的 分 辨 率 在 普 通 模 式 下 没 有 什 么 需 要 特 殊 考 虑 的, 用 户 可 以 随 时 写 入 新 的 计 数 器 数 值 在 普 通 模 式 下 输 入 捕 捉 单 元 很 容 易 使 用 要 注 意 的 是 外 部 事 件 的 最 大 时 间 间 隔 不 能 超 过 计 数 器 的 分 辨 率 如 果 事 件 间 隔 太 长, 必 须 使 用 定 时 器 溢 出 中 断 或 预 分 频 器 来 扩 展 输 入 捕 捉 单 元 的 分 辨 率 输 出 比 较 单 元 可 以 用 来 产 生 中 断 但 是 不 推 荐 在 普 通 模 式 下 利 用 输 出 比 较 来 产 生 波 形, 因 为 会 占 用 太 多 的 CPU 时 间 在 CTC 模 式 (WGM3: = 4 或 2) 里 OCRA 或 ICR 寄 存 器 用 于 调 节 计 数 器 的 分 辨 率 当 计 数 器 的 数 值 TCNT 等 于 OCRA(WGM3: = 4) 或 等 于 ICR (WGM3: = 2) 时 计 数 器 清 零 OCRA 或 ICR 定 义 了 计 数 器 的 TOP 值, 亦 即 计 数 器 的 分 辨 率 这 个 模 式 使 得 用 户 可 以 很 容 易 地 控 制 比 较 匹 配 输 出 的 频 率, 也 简 化 了 外 部 事 件 计 数 的 操 作 CTC 模 式 的 时 序 图 为 Figure 37 计 数 器 数 值 TCNT 一 直 累 加 到 TCNT 与 OCRA 或 ICR 匹 配, 然 后 TCNT 清 零 Figure 37. CTC 模 式 的 时 序 图 OCnA Interrupt Flag Set or ICFn Interrupt Flag Set (Interrupt on TOP) TCNTn OCnA (Toggle) (COMnA: = ) Period 2 3 4 82 ATmega8(L)
ATmega8(L) 利 用 OCFA 或 ICF 标 志 可 以 在 计 数 器 数 值 达 到 TOP 时 产 生 中 断 在 中 断 服 务 程 序 里 可 以 更 新 TOP 的 数 值 由 于 CTC 模 式 没 有 双 缓 冲 功 能, 在 计 数 器 以 无 预 分 频 器 或 很 低 的 预 分 频 器 工 作 的 时 候 将 TOP 更 改 为 接 近 BOTTOM 的 数 值 时 要 小 心 如 果 写 入 的 OCRA 或 ICR 的 数 值 小 于 当 前 TCNT 的 数 值, 计 数 器 将 丢 失 一 次 比 较 匹 配 在 下 一 次 比 较 匹 配 发 生 之 前, 计 数 器 不 得 不 先 计 数 到 最 大 值 xffff, 然 后 再 从 x 开 始 计 数 到 OCRA 或 ICR 在 许 多 情 况 下, 这 一 特 性 并 非 我 们 所 希 望 的 替 代 的 方 法 是 使 用 快 速 PWM 模 式, 该 模 式 使 用 OCRA 定 义 TOP 值 (WGM3: = 5), 因 为 此 时 OCRA 为 双 缓 冲 为 了 在 CTC 模 式 下 得 到 波 形 输 出, 可 以 设 置 OCA 在 每 次 比 较 匹 配 发 生 时 改 变 逻 辑 电 平 这 可 以 通 过 设 置 COMA: = 来 完 成 在 期 望 获 得 OCA 输 出 之 前, 首 先 要 将 其 端 口 设 置 为 输 出 (DDR_OCA = ) 波 形 发 生 器 能 够 产 生 的 最 大 频 率 为 f OCA = f clk_i/o /2 (OCRA = x) 频 率 由 如 下 公 式 确 定 : f clk_i/o f OCnA = ---------------------------------------------------- 2 N ( + OCRnA) 变 量 N 代 表 预 分 频 因 子 ( 8 64 256 或 24) 在 普 通 模 式 下,TOV 标 志 的 置 位 发 生 在 计 数 器 从 MAX 变 为 x 的 定 时 器 时 钟 周 期 快 速 PWM 模 式 快 速 PWM 模 式 (WGM3: = 5 6 7 4 或 5) 可 用 来 产 生 高 频 的 PWM 波 形 快 速 PWM 模 式 与 其 他 PWM 模 式 的 不 同 之 处 是 其 单 边 斜 坡 工 作 方 式 计 数 器 从 BOTTOM 计 到 TOP, 然 后 立 即 回 到 BOTTOM 重 新 开 始 对 于 普 通 的 比 较 输 出 模 式, 输 出 比 较 引 脚 OCx 在 TCNT 与 OCRx 匹 配 时 置 位, 在 TOP 时 清 零 ; 对 于 反 向 比 较 输 出 模 式, OCRx 的 动 作 正 好 相 反 由 于 使 用 了 单 边 斜 坡 模 式, 快 速 PWM 模 式 的 工 作 频 率 比 使 用 双 斜 坡 的 相 位 修 正 PWM 模 式 高 一 倍 此 高 频 操 作 特 性 使 得 快 速 PWM 模 式 十 分 适 合 于 功 率 调 节, 整 流 和 DAC 应 用 高 频 可 以 减 小 外 部 元 器 件 ( 电 感, 电 容 ) 的 物 理 尺 寸, 从 而 降 低 系 统 成 本 工 作 于 快 速 PWM 模 式 时,PWM 分 辨 率 可 固 定 为 8 9 或 位, 也 可 由 ICR 或 OCRA 定 义 最 小 分 辨 率 为 2 比 特 (ICR 或 OCRA 设 为 x3), 最 大 分 辨 率 为 6 位 (ICR 或 OCRA 设 为 MAX) PWM 分 辨 率 位 数 可 用 下 式 计 算 : log( TOP + ) R FPWM = ----------------------------------- log( 2) 工 作 于 快 速 PWM 模 式 时, 计 数 器 的 数 值 一 直 累 加 到 固 定 数 值 xff xff x3ff (WGM3: = 5 6 或 7) ICR (WGM3: = 4) 或 OCRA (WGM3: = 5), 然 后 在 后 面 的 一 个 时 钟 周 期 清 零 具 体 的 时 序 图 为 Figure 38 图 中 给 出 了 当 使 用 OCRA 或 ICR 来 定 义 TOP 值 时 的 快 速 PWM 模 式 图 中 柱 状 的 TCNT 表 示 这 是 单 边 斜 坡 操 作 方 框 图 同 时 包 含 了 普 通 的 PWM 输 出 以 及 反 向 PWM 输 出 TCNT 斜 坡 上 的 短 水 平 线 表 示 OCRx 和 TCNT 的 匹 配 比 较 比 较 匹 配 后 OCx 中 断 标 志 置 位 Figure 38. 快 速 PWM 模 式 时 序 图 OCRnx / TOP Update and TOVn Interrupt Flag Set and OCnA Interrupt Flag Set or ICFn Interrupt Flag Set (Interrupt on TOP) TCNTn OCnx (COMnx: = 2) OCnx (COMnx: = 3) Period 2 3 4 5 6 7 8 83
计 时 器 数 值 达 到 TOP 时 T/C 溢 出 标 志 TOV 置 位 另 外 若 TOP 值 是 由 OCRA 或 ICR 定 义 的, 则 OCA 或 ICF 标 志 将 与 TOV 在 同 一 个 时 钟 周 期 置 位 如 果 中 断 使 能, 可 以 在 中 断 服 务 程 序 里 来 更 新 TOP 以 及 比 较 数 据 改 变 TOP 值 时 必 须 保 证 新 的 TOP 值 不 小 于 所 有 比 较 寄 存 器 的 数 值 否 则 TCNT 与 OCRx 不 会 出 现 比 较 匹 配 使 用 固 定 的 TOP 值 时, 向 任 意 OCRx 寄 存 器 写 入 数 据 时 未 使 用 的 位 将 屏 蔽 为 " 定 义 TOP 值 时 更 新 ICR 与 OCRA 的 步 骤 时 不 同 的 ICR 寄 存 器 不 是 双 缓 冲 寄 存 器 这 意 味 着 当 计 数 器 以 无 预 分 频 器 或 很 低 的 预 分 频 工 作 的 时 候, 给 ICR 赋 予 一 个 小 的 数 值 时 存 在 着 新 写 入 的 ICR 数 值 比 TCNT 当 前 值 小 的 危 险 结 果 是 计 数 器 将 丢 失 一 次 比 较 匹 配 在 下 一 次 比 较 匹 配 发 生 之 前, 计 数 器 不 得 不 先 计 数 到 最 大 值 xffff, 然 后 再 从 x 开 始 计 数, 直 到 比 较 匹 配 出 现 而 OCRA 寄 存 器 则 是 双 缓 冲 寄 存 器 这 一 特 性 决 定 OCRA 可 以 随 时 写 入 写 入 的 数 据 被 放 入 OCRA 缓 冲 寄 存 器 在 TCNT 与 TOP 匹 配 后 的 下 一 个 时 钟 周 期,OCRA 比 较 寄 存 器 的 内 容 被 缓 冲 寄 存 器 的 数 据 所 更 新 在 同 一 个 时 钟 周 期 TCNT 被 清 零, 而 TOV 标 志 被 设 置 使 用 固 定 TOP 值 时 最 好 使 用 ICR 寄 存 器 定 义 TOP 这 样 OCRA 就 可 以 用 于 在 OCA 输 出 PWM 波 但 是, 如 果 PWM 基 频 不 断 变 化 ( 通 过 改 变 TOP 值 ),OCRA 的 双 缓 冲 特 性 使 其 更 适 合 于 这 个 应 用 工 作 于 快 速 PWM 模 式 时, 比 较 单 元 可 以 在 OCx 引 脚 上 输 出 PWM 波 形 设 置 COMx: 为 2 可 以 产 生 普 通 的 PWM 信 号 ; 为 3 则 可 以 产 生 反 向 PWM 波 形 ( 参 见 P 9Table 37 ) 此 外, 要 真 正 从 物 理 引 脚 上 输 出 信 号 还 必 须 将 OCx 的 数 据 方 向 DDR_OCx 设 置 为 输 出 产 生 PWM 波 形 的 机 理 是 OCx 寄 存 器 在 OCRx 与 TCNT 匹 配 时 置 位 ( 或 清 零 ), 以 及 在 计 数 器 清 零 ( 从 TOP 变 为 BOTTOM) 的 那 一 个 定 时 器 时 钟 周 期 清 零 ( 或 置 位 ) 输 出 的 PWM 频 率 可 以 通 过 如 下 公 式 计 算 得 到 : f clk_i/o f OCnxPWM = ----------------------------------- N ( + TOP) 变 量 N 代 表 分 频 因 子 ( 8 64 256 或 24) OCRx 寄 存 器 为 极 限 值 时 说 明 了 快 速 PWM 模 式 的 一 些 特 殊 情 况 若 OCRx 等 于 BOTTOM(x), 输 出 为 出 现 在 第 TOP+ 个 定 时 器 时 钟 周 期 的 窄 脉 冲 ;OCRx 为 TOP 时, 根 据 COMx: 的 设 定, 输 出 恒 为 高 电 平 或 低 电 平 通 过 设 定 OCA 在 比 较 匹 配 时 进 行 逻 辑 电 平 取 反 (COMA: = ), 可 以 得 到 占 空 比 为 5% 的 周 期 信 号 这 只 适 用 于 OCRA 用 来 定 义 TOP 值 的 情 况 (WGM3: = 5) OCRA 为 (x) 时 信 号 有 最 高 频 率 f OCA = f clk_i/o /2 这 个 特 性 类 似 于 CTC 模 式 下 的 OCA 取 反 操 作, 不 同 之 处 在 于 快 速 PWM 模 式 具 有 双 缓 冲 相 位 修 正 PWM 模 式 相 位 修 正 PWM 模 式 (WGM3: = 2 3 或 ) 为 用 户 提 供 了 一 个 获 得 高 精 度 的 相 位 准 确 的 PWM 波 形 的 方 法 与 相 位 和 频 率 修 正 模 式 类 似, 此 模 式 基 于 双 斜 坡 操 作 计 时 器 重 复 地 从 BOTTOM 计 到 TOP, 然 后 又 从 TOP 倒 退 回 到 BOTTOM 在 一 般 的 比 较 输 出 模 式 下, 当 计 时 器 往 TOP 计 数 时 若 TCNT 与 OCRx 匹 配,OCx 将 清 零 为 低 电 平 ; 而 在 计 时 器 往 BOTTOM 计 数 时 若 TCNT 与 OCRx 匹 配, OCx 将 置 位 为 高 电 平 工 作 于 反 向 比 较 输 出 时 则 正 好 相 反 与 单 斜 坡 操 作 相 比, 双 斜 坡 操 作 可 获 得 的 最 大 频 率 要 小 但 其 对 称 特 性 十 分 适 合 于 电 机 控 制 相 位 修 正 PWM 模 式 的 PWM 分 辨 率 固 定 为 8 9 或 位, 或 由 ICR 或 OCRA 定 义 最 小 分 辨 率 为 2 比 特 (ICR 或 OCRA 设 为 x3), 最 大 分 辨 率 为 6 位 (ICR 或 OCRA 设 为 MAX) PWM 分 辨 率 位 数 可 用 下 式 计 算 : log( TOP + ) R PCPWM = ----------------------------------- log( 2) 工 作 于 相 位 修 正 PWM 模 式 时, 计 数 器 的 数 值 一 直 累 加 到 固 定 值 xff xff x3ff (WGM3: = 2 或 3) ICR (WGM3: = ) 或 OCRA (WGM3: = ), 然 84 ATmega8(L)
ATmega8(L) 后 改 变 计 数 方 向 在 一 个 定 时 器 时 钟 里 TCNT 值 等 于 TOP 值 具 体 的 时 序 图 为 Figure 39 图 中 给 出 了 当 使 用 OCRA 或 ICR 来 定 义 TOP 值 时 的 相 位 修 正 PWM 模 式 图 中 柱 状 的 TCNT 表 示 这 是 双 边 斜 坡 操 作 方 框 图 同 时 包 含 了 普 通 的 PWM 输 出 以 及 反 向 PWM 输 出 TCNT 斜 坡 上 的 短 水 平 线 表 示 OCRx 和 TCNT 的 匹 配 比 较 比 较 匹 配 后 OCx 中 断 标 志 置 位 Figure 39. 相 位 修 正 PWM 模 式 的 时 序 图 OCRnx / TOP Update and OCnA Interrupt Flag Set or ICFn Interrupt Flag Set (Interrupt on TOP) TOVn Interrupt Flag Set (Interrupt on Bottom) TCNTn OCnx (COMnx: = 2) OCnx (COMnx: = 3) Period 2 3 4 计 时 器 数 值 达 到 BOTTOM 时 T/C 溢 出 标 志 TOV 置 位 若 TOP 由 OCRA 或 ICR 定 义, 在 OCRx 寄 存 器 通 过 双 缓 冲 方 式 得 到 更 新 的 同 一 个 时 钟 周 期 里 OCA 或 ICF 标 志 置 位 标 志 置 位 后 即 可 产 生 中 断 改 变 TOP 值 时 必 须 保 证 新 的 TOP 值 不 小 于 所 有 比 较 寄 存 器 的 数 值 否 则 TCNT 与 OCRx 不 会 出 现 比 较 匹 配 使 用 固 定 的 TOP 值 时, 向 任 意 OCRx 寄 存 器 写 入 数 据 时 未 使 用 的 位 将 屏 蔽 为 " 在 Figure 39 给 出 的 第 三 个 周 期 中, 在 T/C 运 行 于 相 位 修 正 模 式 时 改 变 TOP 值 导 致 了 不 对 称 输 出 其 原 因 在 于 OCRx 寄 存 器 的 更 新 时 间 由 于 OCRx 的 更 新 时 刻 为 定 时 器 / 计 数 器 达 到 TOP 之 时, 因 此 PWM 的 循 环 周 期 起 始 于 此, 也 终 止 于 此 就 是 说, 下 降 斜 坡 的 长 度 取 决 于 上 一 个 TOP 值, 而 上 升 斜 坡 的 长 度 取 决 于 新 的 TOP 值 若 这 两 个 值 不 同, 一 个 周 期 内 两 个 斜 坡 长 度 不 同, 输 出 也 就 不 对 称 了 若 要 在 T/C 运 行 时 改 变 TOP 值, 最 好 用 相 位 与 频 率 修 正 模 式 代 替 相 位 修 正 模 式 若 TOP 保 持 不 变, 那 么 这 两 种 工 作 模 式 实 际 没 有 区 别 工 作 于 相 位 修 正 PWM 模 式 时, 比 较 单 元 可 以 在 OCx 引 脚 输 出 PWM 波 形 设 置 COMx: 为 2 可 以 产 生 普 通 的 PWM, 设 置 COMx: 为 3 可 以 产 生 反 向 PWM ( 参 见 P 9Table 38 ) 要 真 正 从 物 理 引 脚 上 输 出 信 号 还 必 须 将 OCx 的 数 据 方 向 DDR_OCx 设 置 为 输 出 OCRx 和 TCNT 比 较 匹 配 发 生 时 OCx 寄 存 器 将 产 生 相 应 的 清 零 或 置 位 操 作, 从 而 产 生 PWM 波 形 工 作 于 相 位 修 正 模 式 时 PWM 频 率 可 由 如 下 公 式 获 得 : f clk_i/o f OCnxPCPWM = ---------------------------- 2 N TOP 变 量 N 表 示 预 分 频 因 子 ( 8 64 256 或 24) OCRx 寄 存 器 处 于 极 值 时 表 明 了 相 位 修 正 PWM 模 式 的 一 些 特 殊 情 况 在 普 通 PWM 模 式 下, 若 OCRx 等 于 BOTTOM, 输 出 一 直 保 持 为 低 电 平 ; 若 OCRx 等 于 TOP, 输 出 则 保 持 为 高 电 平 反 向 PWM 模 式 正 好 相 反 85
如 果 OCRA 用 来 定 义 TOP 值 (WGM3: = ) 且 COMA: =, OCA 输 出 占 空 比 为 5% 的 周 期 信 号 相 位 与 频 率 修 正 PWM 模 式 相 位 与 频 率 修 正 PWM 模 式 (WGM3: = 8 或 9) - 以 下 简 称 相 频 修 正 PWM 模 式 - 可 以 产 生 高 精 度 的 相 位 与 频 率 都 准 确 的 PWM 波 形 与 相 位 修 正 模 式 类 似, 相 频 修 正 PWM 模 式 基 于 双 斜 坡 操 作 计 时 器 重 复 地 从 BOTTOM 计 到 TOP, 然 后 又 从 TOP 倒 退 回 到 BOTTOM 在 一 般 的 比 较 输 出 模 式 下, 当 计 时 器 往 TOP 计 数 时 若 TCNT 与 OCRx 匹 配 OCx 将 清 零 为 低 电 平 ; 而 在 计 时 器 往 BOTTOM 计 数 时 TCNT 与 OCRx 匹 配,OCx 将 置 位 为 高 电 平 工 作 于 反 向 输 出 比 较 时 则 正 好 相 反 与 单 斜 坡 操 作 相 比, 双 斜 坡 操 作 可 获 得 的 最 大 频 率 要 小 但 其 对 称 特 性 十 分 适 合 于 电 机 控 制 相 频 修 正 修 正 PWM 模 式 与 相 位 修 正 PWM 模 式 的 主 要 区 别 在 于 OCRx 寄 存 器 的 更 新 时 间, 详 见 Figure 39 与 Figure 4 相 频 修 正 修 正 PWM 模 式 的 PWM 分 辨 率 可 由 ICR 或 OCRA 定 义 最 小 分 辨 率 为 2 比 特 (ICR 或 OCRA 设 为 x3), 最 大 分 辨 率 为 6 位 (ICR 或 OCRA 设 为 MAX) PWM 分 辨 率 位 数 可 用 下 式 计 算 : log( TOP + ) R PFCPWM = ----------------------------------- log( 2) 工 作 于 相 频 修 正 PWM 模 式 时, 计 数 器 的 数 值 一 直 累 加 到 ICR (WGM3: = 8) 或 OCRA (WGM3: = 9), 然 后 改 变 计 数 方 向 在 一 个 定 时 器 时 钟 里 TCNT 值 等 于 TOP 值 具 体 的 时 序 图 为 Figure 4 图 中 给 出 了 当 使 用 OCRA 或 ICR 来 定 义 TOP 值 时 的 相 频 修 正 PWM 模 式 图 中 柱 状 的 TCNT 表 示 这 是 双 边 斜 坡 操 作 方 框 图 同 时 包 含 了 普 通 的 PWM 输 出 以 及 反 向 PWM 输 出 TCNT 斜 坡 上 的 短 水 平 线 表 示 OCRx 和 TCNT 的 匹 配 比 较 比 较 匹 配 发 生 时, OCx 中 断 标 志 将 被 置 位 Figure 4. 相 位 与 频 率 修 正 PWM 模 式 的 时 序 图 OCnA Interrupt Flag Set or ICFn Interrupt Flag Set (Interrupt on TOP) OCRnx / TOP Update and TOVn Interrupt Flag Set (Interrupt on Bottom) TCNTn OCnx (COMnx: = 2) OCnx (COMnx: = 3) Period 2 3 4 在 OCRx 寄 存 器 通 过 双 缓 冲 方 式 得 到 更 新 的 同 一 个 时 钟 周 期 里 T/C 溢 出 标 志 TOV 置 位 若 TOP 由 OCRA 或 ICR 定 义, 则 当 TCNT 达 到 TOP 值 时 OCA 或 CF 置 位 这 些 中 断 标 志 位 可 用 来 在 每 次 计 数 器 达 到 TOP 或 BOTTOM 时 产 生 中 断 改 变 TOP 值 时 必 须 保 证 新 的 TOP 值 不 小 于 所 有 比 较 寄 存 器 的 数 值 否 则 TCNT 与 OCRx 不 会 产 生 比 较 匹 配 86 ATmega8(L)
ATmega8(L) 如 Figure 4 所 示, 与 相 位 修 正 模 式 形 成 对 照 的 是, 相 频 修 正 PWM 模 式 生 成 的 输 出 在 所 有 的 周 期 中 均 为 对 称 信 号 这 是 由 于 OCRx 在 BOTTOM 得 到 更 新, 上 升 与 下 降 斜 坡 长 度 始 终 相 等 因 此 输 出 脉 冲 为 对 称 的, 确 保 了 频 率 是 正 确 的 使 用 固 定 TOP 值 时 最 好 使 用 ICR 寄 存 器 定 义 TOP 这 样 OCRA 就 可 以 用 于 在 OCA 输 出 PWM 波 但 是, 如 果 PWM 基 频 不 断 变 化 ( 通 过 改 变 TOP 值 ),OCRA 的 双 缓 冲 特 性 使 其 更 适 合 于 这 个 应 用 工 作 于 相 频 修 正 PWM 模 式 时, 比 较 单 元 可 以 在 OCx 引 脚 上 输 出 PWM 波 形 设 置 COMx: 为 2 可 以 产 生 普 通 的 PWM 信 号 ; 为 3 则 可 以 产 生 反 向 PWM 波 形 ( 参 见 P 9Table 38 ) 要 想 真 正 输 出 信 号 还 必 须 将 OCx 的 数 据 方 向 设 置 为 输 出 产 生 PWM 波 形 的 机 理 是 OCx 寄 存 器 在 OCRx 与 升 序 记 数 的 TCNT 匹 配 时 置 位 ( 或 清 零 ), 与 降 序 记 数 的 TCNT 匹 配 时 清 零 ( 或 置 位 ) 输 出 的 PWM 频 率 可 以 通 过 如 下 公 式 计 算 得 到 : f clk_i/o f OCnxPFCPWM = ---------------------------- 2 N TOP 变 量 N 代 表 分 频 因 子 ( 8 64 256 或 24) OCRx 寄 存 器 处 于 极 值 时 说 明 了 相 频 修 正 PWM 模 式 的 一 些 特 殊 情 况 在 普 通 PWM 模 式 下, 若 OCRx 等 于 BOTTOM, 输 出 一 直 保 持 为 低 电 平 ; 若 OCRx 等 于 TOP, 则 输 出 保 持 为 高 电 平 反 向 PWM 模 式 则 正 好 相 反 如 果 OCRA 用 来 定 义 TOP 值 (WGM3: = 9) 且 COMA: =,OCA 输 出 占 空 比 为 5% 的 周 期 信 号 定 时 器 / 计 数 器 时 序 图 定 时 器 / 计 数 器 为 同 步 电 路, 因 而 时 钟 clk T 表 示 为 时 钟 使 能 信 号 图 中 说 明 了 何 时 设 置 中 断 标 志 及 何 时 使 用 OCRx 缓 冲 器 中 的 数 据 更 新 OCRx 寄 存 器 ( 工 作 于 双 缓 冲 器 模 式 时 ) Figure 4 给 出 了 置 位 OCFx 的 时 序 图 Figure 4. T/C 时 序 图, OCFx 置 位, 无 预 分 频 器 clk I/O clk Tn (clk I/O /) TCNTn OCRnx - OCRnx OCRnx + OCRnx + 2 OCRnx OCRnx Value OCFnx Figure 42 给 出 相 同 的 计 时 数 据, 但 预 分 频 使 能 87
Figure 42. T/C 时 序 图, 置 位 OCFx, 预 分 频 器 为 f clk_i/o /8 clk I/O clk Tn (clk I/O /8) TCNTn OCRnx - OCRnx OCRnx + OCRnx + 2 OCRnx OCRnx Value OCFnx Figure 43 给 出 工 作 在 不 同 模 式 下 接 近 TOP 值 时 的 计 数 序 列 工 作 于 相 频 修 正 PWM 模 式 时, OCRx 寄 存 器 在 BOTTOM 被 更 新 时 序 图 相 同, 但 TOP 需 要 用 BOTTOM 代 替, BOTTOM+ 代 替 TOP-, 等 等 同 样 的 命 名 规 则 也 适 用 于 那 些 在 BOTTOM 置 位 TOV 标 志 的 工 作 模 式 Figure 43. T/C 时 序 图, 无 预 分 频 器 clk I/O clk Tn (clk I/O /) TCNTn (CTC and FPWM) TOP - TOP BOTTOM BOTTOM + TCNTn (PC and PFC PWM) TOP - TOP TOP - TOP - 2 TOVn (FPWM) and ICFn (if used as TOP) OCRnx (Update at TOP) Old OCRnx Value New OCRnx Value Figure 44 给 出 相 同 的 计 时 数 据, 但 预 分 频 使 能 88 ATmega8(L)
ATmega8(L) Figure 44. T/C 时 序 图, 预 分 频 器 为 f clk_i/o /8 clk I/O clk Tn (clk I/O /8) TCNTn (CTC and FPWM) TOP - TOP BOTTOM BOTTOM + TCNTn (PC and PFC PWM) TOP - TOP TOP - TOP - 2 TOVn (FPWM) and ICFn (if used as TOP) OCRnx (Update at TOP) Old OCRnx Value New OCRnx Value 6 位 定 时 器 / 计 数 器 寄 存 器 的 说 明 T/C 控 制 寄 存 器 A - TCCRA Bit 7 6 5 4 3 2 COMA COMA COMB COMB FOCA FOCB WGM WGM TCCRA 读 / 写 R/W R/W R/W R/W W W R/W R/W 初 始 值 Bit 7:6 COMA:: 通 道 A 的 比 较 输 出 模 式 Bit 5:4 COMB:: 通 道 B 的 比 较 输 出 模 式 COMA: 与 COMB: 分 别 控 制 OCA 与 OCB 状 态 如 果 COMA:(COMB:) 的 一 位 或 两 位 被 写 入 ",OCA(OCB) 输 出 功 能 将 取 代 I/O 端 口 功 能 此 时 OCA(OCB) 相 应 的 输 出 引 脚 数 据 方 向 控 制 必 须 置 位 以 使 能 输 出 驱 动 器 OCA(OCB) 与 物 理 引 脚 相 连 时,COMx: 的 功 能 由 WGM3: 的 设 置 决 定 Table 36 给 出 当 WGM3: 设 置 为 普 通 模 式 与 CTC 模 式 ( 非 PWM) 时 COMx: 的 功 能 定 义 Table 36. 比 较 输 出 模 式, 非 PWM COMA/ COMB COMA/ COMB 说 明 普 通 端 口 操 作, OCA/OCB 未 连 接 比 较 匹 配 时 OCA/OCB 电 平 取 反 比 较 匹 配 时 清 零 OCA/OCB( 输 出 低 电 平 ) 比 较 匹 配 时 置 位 OCA/OCB ( 输 出 高 电 平 ) 89
Table 37 给 出 WGM3: 设 置 为 快 速 PWM 模 式 时 COMx: 的 功 能 定 义 Table 37. 比 较 输 出 模 式, 快 速 PWM () COMA/ COMB COMA/ COMB 说 明 普 通 端 口 操 作, OCA/OCB 未 连 接 WGM3: = 5: 比 较 匹 配 时 OCA 取 反, OCB 未 连 接 WGM3: 为 其 它 值 时 为 普 通 端 口 操 作, OCA/OCB 未 连 接 比 较 匹 配 时 清 零 OCA/OCB, OCA/OCB 在 TOP 时 置 位 比 较 匹 配 时 置 位 OCA/OCB, OCA/OCB 在 TOP 时 清 零 Note:. 当 OCRA/OCRB 等 于 TOP 且 COMA/COMB 置 位 时, 比 较 匹 配 被 忽 略, 但 OCA/OCB 的 置 位 / 清 零 操 作 有 效 详 见 P 83 快 速 PWM 模 式 Table 38 给 出 当 WGM3: 设 置 为 相 位 修 正 PWM 模 式 或 相 频 修 正 PWM 模 式 时 COMx: 的 功 能 定 义 Table 38. 比 较 输 出 模 式, 相 位 修 正 及 相 频 修 正 PWM 模 式 () COMA/ COMB COMA/ COMB 说 明 普 通 端 口 操 作, OCA/OCB 未 连 接 WGM3: = 9 或 4: 比 较 匹 配 时 OCA 取 反, OCB 未 连 接 WGM3: 为 其 它 值 时 为 普 通 端 口 操 作, OCA/OCB 未 连 接 升 序 记 数 时 比 较 匹 配 将 清 零 OCA/OCB, 降 序 记 数 时 比 较 匹 配 将 置 位 OCA/OCB 升 序 记 数 时 比 较 匹 配 将 置 位 OCA/OCB, 降 序 记 数 时 比 较 匹 配 将 清 零 OCA/OCB Note:. OCRA/OCRB 等 于 TOP 且 COMA/COMB 置 位 是 一 个 特 殊 情 况 详 细 信 息 请 参 见 P 84 相 位 修 正 PWM 模 式 Bit 3 FOCA: 通 道 A 强 制 输 出 比 较 Bit 2 FOCB: 通 道 B 强 制 输 出 比 较 FOCA/FOCB 只 有 当 WGM3: 指 定 为 非 PWM 模 式 时 被 激 活 为 与 未 来 器 件 兼 容, 工 作 在 PWM 模 式 下 对 TCCRA 写 入 时, 这 两 位 必 须 清 零 当 FOCA/FOCB 位 置, 立 即 强 制 波 形 产 生 单 元 进 行 比 较 匹 配 COMx: 的 设 置 改 变 OCA/OCB 的 输 出 注 意 FOCA/FOCB 位 作 为 选 通 信 号 COMx: 位 的 值 决 定 强 制 比 较 的 效 果 在 CTC 模 式 下 使 用 OCRA 作 为 TOP 值, FOCA/FOCB 选 通 即 不 会 产 生 中 断 也 不 会 清 除 定 时 器 FOCA/FOCB 位 总 是 读 为 Bit : WGM:: 波 形 发 生 模 式 这 两 位 与 位 于 TCCRB 寄 存 器 的 WGM3:2 相 结 合, 用 于 控 制 计 数 器 的 计 数 序 列 计 数 器 计 数 的 上 限 值 和 确 定 波 形 发 生 器 的 工 作 模 式 见 Table 39 T/C 支 持 的 工 作 模 式 有 : 普 通 模 式 ( 计 数 器 ), 比 较 匹 配 时 清 零 定 时 器 (CTC) 模 式, 及 三 种 脉 宽 调 制 (PWM) 模 式, 见 P 82 工 作 模 式 9 ATmega8(L)
ATmega8(L) Table 39. 波 形 产 生 模 式 的 位 描 述 模 式 WGM3 WGM2 (CTC) WGM (PWM) WGM (PWM) () 定 时 器 / 计 数 器 工 作 模 式 Note:. CTC 和 PWM: 的 定 义 已 经 不 再 使 用 了, 要 使 用 WGM2: 但 是 两 个 版 本 的 功 能 和 位 置 是 兼 容 的 TOP OCRx 更 新 时 刻 普 通 模 式 xffff 立 即 更 新 MAX TOV 置 位 时 刻 8 位 相 位 修 正 PWM xff TOP BOTTOM 2 9 位 相 位 修 正 PWM xff TOP BOTTOM 3 位 相 位 修 正 PWM x3ff TOP BOTTOM 4 CTC OCRA 立 即 更 新 MAX 5 8 位 快 速 PWM xff TOP TOP 6 9 位 快 速 PWM xff TOP TOP 7 位 快 速 PWM x3ff TOP TOP 8 相 位 与 频 率 修 正 PWM ICR BOTTOM BOTTOM 9 相 位 与 频 率 修 正 PWM OCRA BOTTOM BOTTOM 相 位 修 正 PWM ICR TOP BOTTOM 相 位 修 正 PWM OCRA TOP BOTTOM 2 CTC ICR 立 即 更 新 MAX 3 保 留 4 快 速 PWM ICR TOP TOP 5 快 速 PWM OCRA TOP TOP 9
T/C 控 制 寄 存 器 B - TCCRB Bit 7 6 5 4 3 2 ICNC ICES WGM3 WGM2 CS2 CS CS TCCRB 读 / 写 R/W R/W R R/W R/W R/W R/W R/W 初 始 值 Bit 7 ICNC: 输 入 捕 捉 噪 声 抑 制 器 置 位 ICNC 将 使 能 输 入 捕 捉 噪 声 抑 制 功 能 此 时 外 部 引 脚 ICP 的 输 入 被 滤 波 其 作 用 是 从 ICP 引 脚 连 续 进 行 4 次 采 样 如 果 4 个 采 样 值 都 相 等, 那 么 信 号 送 入 边 沿 检 测 器 因 此 使 能 该 功 能 使 得 输 入 捕 捉 被 延 迟 了 4 个 时 钟 周 期 Bit 6 ICES: 输 入 捕 捉 触 发 沿 选 择 该 位 选 择 使 用 ICP 上 的 哪 个 边 沿 触 发 捕 获 事 件 ICES 为 " 选 择 的 是 下 降 沿 触 发 输 入 捕 捉 ; ICES 为 " 选 择 的 是 逻 辑 电 平 的 上 升 沿 触 发 输 入 捕 捉 按 照 ICES 的 设 置 捕 获 到 一 个 事 件 后, 计 数 器 的 数 值 被 复 制 到 ICR 寄 存 器 捕 获 事 件 还 会 置 为 ICF 如 果 此 时 中 断 使 能, 输 入 捕 捉 事 件 即 被 触 发 当 ICR 用 作 TOP 值 ( 见 TCCRA 与 TCCRB 寄 存 器 中 WGM3: 位 的 描 述 ) 时,ICP 与 输 入 捕 捉 功 能 脱 开, 从 而 输 入 捕 捉 功 能 被 禁 用 Bit 5 保 留 位 该 位 保 留 为 保 证 与 将 来 器 件 的 兼 容 性, 写 TCCRB 时, 该 位 必 须 写 入 " Bit 4:3 WGM3:2: 波 形 发 生 模 式 见 TCCRA 寄 存 器 中 的 描 述 Bit 2: CS2:: 时 钟 选 择 这 3 位 用 于 选 择 T/C 的 时 钟 源, 见 Figure 4 与 Figure 42 Table 4. 时 钟 选 择 位 描 述 CS2 CS CS 说 明 无 时 钟 源 (T/C 停 止 ) clk I/O / ( 无 预 分 频 ) clk I/O /8 ( 来 自 预 分 频 器 ) clk I/O /64 ( 来 自 预 分 频 器 ) clk I/O /256 ( 来 自 预 分 频 器 ) clk I/O /24 ( 来 自 预 分 频 器 ) 外 部 T 引 脚, 下 降 沿 驱 动 外 部 T 引 脚, 上 升 沿 驱 动 选 择 使 用 外 部 时 钟 源 后, 即 使 T 引 脚 被 定 义 为 输 出, 引 脚 上 的 逻 辑 信 号 电 平 变 化 仍 然 会 驱 动 T/C 计 数, 这 个 特 性 允 许 用 户 通 过 软 件 来 控 制 计 数 T/C - TCNTH 与 TCNTL Bit 7 6 5 4 3 2 TCNT[5:8] TCNT[7:] 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 TCNTH TCNTL TCNTH 与 TCNTL 组 成 了 T/C 的 数 据 寄 存 器 TCNT 通 过 它 们 可 以 直 接 对 定 时 器 / 计 数 器 单 元 的 6 位 计 数 器 进 行 读 写 访 问 为 保 证 CPU 对 高 字 节 与 低 字 节 的 同 时 读 写, 必 须 92 ATmega8(L)
ATmega8(L) 使 用 一 个 8 位 临 时 高 字 节 寄 存 器 TEMP TEMP 是 所 有 的 6 位 寄 存 器 共 用 的, 详 见 P 74 访 问 6 位 寄 存 器 在 计 数 器 运 行 期 间 修 改 TCNT 的 内 容 有 可 能 丢 失 一 次 TCNT 与 OCRx 的 比 较 匹 配 操 作 写 TCNT 寄 存 器 将 在 下 一 个 定 时 器 周 期 阻 塞 比 较 匹 配 输 出 比 较 寄 存 器 A - OCRAH 与 OCRAL 输 出 比 较 寄 存 器 B - OCRBH 与 OCRBL Bit 7 6 5 4 3 2 OCRA[5:8] OCRA[7:] 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 Bit 7 6 5 4 3 2 OCRB[5:8] OCRB[7:] 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 OCRAH OCRAL OCRBH OCRBL 该 寄 存 器 中 的 6 位 数 据 与 TCNT 寄 存 器 中 的 计 数 值 进 行 连 续 的 比 较, 一 旦 数 据 匹 配, 将 产 生 一 个 输 出 比 较 中 断, 或 改 变 OCx 的 输 出 逻 辑 电 平 输 出 比 较 寄 存 器 长 度 为 6 位 为 保 证 CPU 对 高 字 节 与 低 字 节 的 同 时 读 写, 必 须 使 用 一 个 8 位 临 时 高 字 节 寄 存 器 TEMP TEMP 是 所 有 的 6 位 寄 存 器 共 用 的, 详 见 P 74 访 问 6 位 寄 存 器 93
输 入 捕 捉 寄 存 器 - ICRH 与 ICRL Bit 7 6 5 4 3 2 ICR[5:8] ICR[7:] 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 ICRH ICRL 当 外 部 引 脚 ICP( 或 T/C 的 模 拟 比 较 器 ) 有 输 入 捕 捉 触 发 信 号 产 生 时, 计 数 器 TCNT 中 的 值 写 入 ICR 中 ICR 的 设 定 值 可 作 为 计 数 器 的 TOP 值 输 入 捕 捉 寄 存 器 长 度 为 6 位 为 保 证 CPU 对 高 字 节 与 低 字 节 的 同 时 读, 必 须 使 用 一 个 8 位 临 时 高 字 节 寄 存 器 TEMP TEMP 是 所 有 的 6 位 寄 存 器 共 用 的, 详 见 P 74 访 问 6 位 寄 存 器 T/C 中 断 屏 蔽 寄 存 器 - TIMSK () Bit 7 6 5 4 3 2 OCIE2 TOIE2 TICIE OCIEA OCIEB TOIE TOIE TIMSK 读 / 写 R/W R/W R/W R/W R/W R/W R R/W 初 始 值 Note:. 该 寄 存 器 包 含 几 个 T/C 的 中 断 控 制 位, 但 本 节 中 只 对 T 位 进 行 说 明, 其 余 位 将 在 各 自 的 小 节 中 加 以 说 明 Bit 5 TICIE: T/C 输 入 捕 捉 中 断 使 能 当 该 位 被 设 为 ", 且 状 态 寄 存 器 中 的 I 位 被 设 为 " 时, T/C 的 输 入 捕 捉 中 断 使 能 一 旦 TIFR 的 ICF 置 位,CPU 即 开 始 执 行 T/C 输 入 捕 捉 中 断 服 务 程 序 ( 见 P 43 中 断 ) Bit 4 OCIEA:T/C 输 出 比 较 A 匹 配 中 断 使 能 当 该 位 被 设 为 ", 且 状 态 寄 存 器 中 的 I 位 被 设 为 " 时, T/C 的 输 出 比 较 A 匹 配 中 断 使 能 一 旦 TIFR 上 的 OCFA 置 位,CPU 即 开 始 执 行 T/C 输 出 比 较 A 匹 配 中 断 服 务 程 序 ( 见 P 43 中 断 ) Bit 3 OCIEB:T/C 输 出 比 较 B 匹 配 中 断 使 能 当 该 位 被 设 为 ", 且 状 态 寄 存 器 中 的 I 位 被 设 为 " 时, 使 能 T/C 的 输 出 比 较 B 匹 配 中 断 使 能 一 旦 TIFR 上 的 OCFB 置 位,CPU 即 开 始 执 行 T/C 输 出 比 较 B 匹 配 中 断 服 务 程 序 ( 见 P 43 中 断 ) Bit 2 TOIE:T/C 溢 出 中 断 使 能 当 该 位 被 设 为 ", 且 状 态 寄 存 器 中 的 I 位 被 设 为 时, T/C 的 溢 出 中 断 使 能 一 旦 TIFR 上 的 TOV 置 位, CPU 即 开 始 执 行 T/C 溢 出 中 断 服 务 程 序 ( 见 P 43 中 断 ) T/C 中 断 标 志 寄 存 器 - TIFR () Bit 7 6 5 4 3 2 OCF2 TOV2 ICF OCFA OCFB TOV TOV TIFR 读 / 写 R/W R/W R/W R/W R/W R/W R R/W 初 始 值 Note:. 该 寄 存 器 包 含 几 个 T/C 的 标 志 位, 但 本 节 中 只 对 T 位 进 行 说 明, 其 余 位 将 在 各 自 的 小 节 中 加 以 说 明 Bit 5 ICF: T/C 输 入 捕 捉 标 志 外 部 引 脚 ICP 出 现 捕 捉 事 件 时 ICF 置 位 此 外, 当 ICR 作 为 计 数 器 的 TOP 值 时, 一 旦 计 数 器 值 达 到 TOP, ICF 也 置 位 执 行 输 入 捕 捉 中 断 服 务 程 序 时 ICF 自 动 清 零 也 可 以 对 其 写 入 逻 辑 " 来 清 除 该 标 志 位 Bit 4 OCFA: T/C 输 出 比 较 A 匹 配 标 志 当 TCNT 与 OCRA 匹 配 成 功 时, 该 位 被 设 为 " 94 ATmega8(L)
ATmega8(L) 强 制 输 出 比 较 (FOCA) 不 会 置 位 OCFA 执 行 强 制 输 出 比 较 匹 配 A 中 断 服 务 程 序 时 OCFA 自 动 清 零 也 可 以 对 其 写 入 逻 辑 " 来 清 除 该 标 志 位 Bit 3 OCFB: T/C 输 出 比 较 B 匹 配 标 志 当 TCNT 与 OCRB 匹 配 成 功 时, 该 位 被 设 为 " 强 制 输 出 比 较 (FOCB) 不 会 置 位 OCFB 执 行 强 制 输 出 比 较 匹 配 B 中 断 服 务 程 序 时 OCFB 自 动 清 零 也 可 以 对 其 写 入 逻 辑 " 来 清 除 该 标 志 位 Bit 2 TOV: T/C 溢 出 标 志 该 位 的 设 置 与 T/C 的 工 作 方 式 有 关 工 作 于 普 通 模 式 和 CTC 模 式 时,T/C 溢 出 时 TOV 置 位 对 工 作 在 其 它 模 式 下 的 TOV 标 志 位 置 位, 见 P 9Table 39 执 行 溢 出 中 断 服 务 程 序 时 TOV 自 动 清 零 也 可 以 对 其 写 入 逻 辑 " 来 清 除 该 标 志 位 95
8 位 有 PWM 与 异 步 操 作 的 定 时 器 / 计 数 器 2 综 述 T/C2 是 一 个 通 用 单 通 道 8 位 定 时 / 计 数 器, 其 主 要 特 点 如 下 : 单 通 道 计 数 器 比 较 匹 配 时 清 零 定 时 器 ( 自 动 重 载 ) 无 干 扰 脉 冲, 相 位 正 确 的 脉 宽 调 制 器 (PWM) 频 率 发 生 器 位 时 钟 预 分 频 器 溢 出 与 比 较 匹 配 中 断 源 (TOV2 与 OCF2) 允 许 使 用 外 部 的 32 khz 手 表 晶 振 作 为 独 立 的 I/O 时 钟 源 Figure 45 为 8 位 T/C 的 方 框 图 实 际 的 引 脚 图 请 参 见 P 2 引 脚 配 置 CPU 可 访 问 的 I/O 寄 存 器, 包 括 I/O 位 和 I/O 引 脚 以 粗 体 表 示 器 件 具 体 I/O 寄 存 器 与 位 定 义 见 P 8 8 位 T/C 寄 存 器 说 明 Figure 45. 8 位 T/C 方 框 图 TCCRn count clear direction Control Logic clk Tn TOVn (Int. Req.) TOSC BOTTOM TOP Prescaler T/C Oscillator Timer/Counter TCNTn = = xff TOSC2 OCn (Int. Req.) clk I/O = Waveform Generation OCn OCRn DATA BUS Synchronized Status Flags Synchronization Unit clk I/O clk ASY Status Flags ASSRn asynchronous Mode Select (ASn) 寄 存 器 定 时 器 / 计 数 器 TCNT2 输 出 比 较 寄 存 器 OCR2 为 8 位 寄 存 器 中 断 请 求 ( 图 中 简 写 为 Int.Req.) 信 号 在 定 时 器 中 断 标 志 寄 存 器 TIFR 都 有 反 映 所 有 中 断 都 可 以 通 过 定 时 器 中 断 屏 蔽 寄 存 器 TIMSK 单 独 进 行 屏 蔽 图 中 未 给 出 TIFR 与 TIMSK 96 ATmega8(L)
ATmega8(L) T/C 的 时 钟 可 以 为 通 过 预 分 频 器 的 内 部 时 钟 或 通 过 由 TOSC/2 引 脚 接 入 的 异 步 时 钟, 详 见 本 节 后 续 部 分 异 步 操 作 由 异 步 状 态 寄 存 器 ASSR 控 制 时 钟 选 择 逻 辑 模 块 控 制 引 起 T/C 计 数 值 增 加 ( 或 减 少 ) 的 时 钟 源 没 有 选 择 时 钟 源 时 T/C 处 于 停 止 状 态 时 钟 选 择 逻 辑 模 块 的 输 出 称 为 clk T2 双 缓 冲 的 输 出 比 较 寄 存 器 OCR2 一 直 与 TCNT2 的 数 值 进 行 比 较 波 形 发 生 器 利 用 比 较 结 果 产 生 PWM 波 形 或 在 比 较 输 出 引 脚 OC2 输 出 可 变 频 率 的 信 号 参 见 P 99 输 出 比 较 单 元 比 较 匹 配 结 果 还 会 置 位 比 较 匹 配 标 志 OCF2, 用 来 产 生 输 出 比 较 中 断 请 求 定 义 本 文 的 许 多 寄 存 器 及 其 各 个 位 以 通 用 的 格 式 表 示 小 写 的 n 表 示 定 时 器 / 计 数 器 的 序 号, 在 此 即 为 2 但 是 在 写 程 序 时 要 使 用 精 确 的 格 式 ( 例 如 使 用 TCNT2 来 访 问 T/C2 计 数 器 值 ) Table 4 中 定 义 适 用 于 本 节 Table 4. 说 明 BOTTOM MAX TOP 计 数 器 计 到 x 时 即 达 到 BOTTOM 计 数 器 计 到 xff ( 十 进 制 的 255) 时 即 达 到 MAX 计 数 器 计 到 计 数 序 列 的 最 大 值 时 即 达 到 TOP TOP 值 可 以 为 固 定 值 xff (MAX), 或 是 存 储 于 寄 存 器 OCR2 里 的 数 值, 具 体 由 工 作 模 式 确 定 T/C 的 时 钟 源 T/C 可 以 由 内 部 同 步 时 钟 或 外 部 异 步 时 钟 驱 动 clk T2 的 缺 省 设 置 为 MCU 时 钟 clk I/O 当 ASSR 寄 存 器 的 AS2 置 位 时, 时 钟 源 来 自 于 TOSC 和 TOSC2 连 接 的 振 荡 器 详 细 的 异 步 操 作 可 以 参 考 P 异 步 状 态 寄 存 器 - ASSR ; 详 细 的 时 钟 源 与 预 分 频 器 的 内 容 请 参 考 P 3 定 时 器 / 计 数 器 预 分 频 器 97
计 数 器 单 元 8 位 T/C 的 主 要 部 分 为 可 编 程 的 双 向 计 数 单 元 Figure 46 即 为 计 数 器 和 它 周 边 电 路 的 方 框 图 Figure 46. 计 数 器 单 元 方 框 图 DATA BUS TOVn (Int. Req.) TCNTn count clear direction Control Logic clk Tn Prescaler T/C Oscillator TOSC TOSC2 BOTTOM TOP clk I/O 信 号 说 明 ( 内 部 信 号 ): count 使 TCNT2 加 或 减 direction 选 择 加 操 作 或 减 操 作 clear 清 零 TCNT2 ( 将 所 有 的 位 清 零 ) clk T2 T/C 的 时 钟 top 表 示 TCNT2 已 经 达 到 了 最 大 值 bottom 表 示 TCNT2 已 经 达 到 了 最 小 值 () 根 据 不 同 的 工 作 模 式, 计 数 器 针 对 每 一 个 clk T2 实 现 清 零 加 一 或 减 一 操 作 clk T2 可 以 由 内 部 时 钟 源 或 外 部 时 钟 源 产 生, 具 体 由 时 钟 选 择 位 CS22: 确 定 没 有 选 择 时 钟 源 时 (CS22: = ) 定 时 器 停 止 但 是 不 管 有 没 有 clk T2,CPU 都 可 以 访 问 TCNT2 CPU 写 操 作 比 计 数 器 其 他 操 作 ( 清 零 加 减 操 作 ) 的 优 先 级 高 计 数 序 列 由 T/C 控 制 寄 存 器 (TCCR2) 的 WGM2 和 WGM2 决 定 计 数 器 计 数 行 为 与 输 出 比 较 OC2 的 波 形 有 紧 密 的 关 系 有 关 计 数 序 列 和 波 形 产 生 的 详 细 信 息 请 参 考 P 2 工 作 模 式 T/C 溢 出 中 断 标 志 TOV2 根 据 WGM2: 设 定 的 工 作 模 式 来 设 置 TOV2 可 以 用 于 产 生 CPU 中 断 98 ATmega8(L)
ATmega8(L) 输 出 比 较 单 元 8 位 比 较 器 持 续 对 TCNT2 和 输 出 比 较 匹 配 寄 存 器 OCR2 进 行 比 较 一 旦 TCNT2 等 于 OCR2, 比 较 器 就 给 出 匹 配 信 号 在 匹 配 发 生 的 下 一 个 定 时 器 时 钟 周 期 里 输 出 比 较 标 志 OCF2 置 位 若 OCIE2 = 还 将 引 发 输 出 比 较 中 断 执 行 中 断 服 务 程 序 时 OCF2 将 自 动 清 零, 也 可 以 通 过 软 件 写 的 方 式 进 行 清 零 根 据 WGM2: 和 COM2: 设 定 的 不 同 工 作 模 式, 波 形 发 生 器 可 以 利 用 匹 配 信 号 产 生 不 同 的 波 形 同 时, 波 形 发 生 器 还 利 用 max 和 bottom 信 号 来 处 理 极 值 条 件 下 的 特 殊 情 况 ( 见 P 2 工 作 模 式 ) Figure 47 为 输 出 比 较 单 元 的 方 框 图 Figure 47. 输 出 比 较 单 元 方 框 图 DATA BUS OCRn TCNTn = (8-bit Comparator ) OCFn (Int. Req.) TOP BOTTOM FOCn Waveform Generator OCxy WGMn: COMn: 使 用 PWM 模 式 时 OCR2 寄 存 器 为 双 缓 冲 寄 存 器 ; 而 在 正 常 工 作 模 式 和 匹 配 时 清 零 模 式 双 缓 冲 功 能 是 禁 止 的 双 缓 冲 可 以 将 更 新 OCR2 寄 存 器 与 top 或 bottom 时 刻 同 步 起 来, 从 而 防 止 产 生 不 对 称 的 PWM 脉 冲, 消 除 毛 刺 访 问 OCR2 寄 存 器 看 起 来 很 复 杂, 其 实 不 然 使 能 双 缓 冲 功 能 时, CPU 访 问 的 是 OCR2 缓 冲 寄 存 器 ; 禁 止 双 缓 冲 功 能 时 CPU 访 问 的 则 是 OCR2 本 身 99
强 制 输 出 比 较 写 TCNT2 操 作 阻 止 比 较 匹 配 使 用 输 出 比 较 单 元 工 作 于 非 PWM 模 式 时, 可 以 对 强 制 输 出 比 较 位 FOC2 写 来 产 生 比 较 匹 配 强 制 比 较 匹 配 不 会 置 位 OCF2 标 志, 也 不 会 重 载 / 清 零 定 时 器, 但 是 OC2 引 脚 将 被 更 新, 好 象 真 的 发 生 了 比 较 匹 配 一 样 (COM2: 决 定 OC2 是 置 位 清 零, 还 是 交 替 变 化 ) CPU 对 TCNT2 寄 存 器 的 写 操 作 会 在 下 一 个 定 时 器 时 钟 周 期 阻 止 比 较 匹 配 的 发 生, 即 使 此 时 定 时 器 已 经 停 止 了 这 个 特 性 可 以 用 来 将 OCR2 初 始 化 为 与 TCNT2 相 同 的 数 值 而 不 触 发 中 断 由 于 在 任 意 模 式 下 写 TCNT2 都 将 在 下 一 个 定 时 器 时 钟 周 期 里 阻 止 比 较 匹 配, 在 使 用 输 出 比 较 时 改 变 TCNT2 就 会 有 风 险, 不 管 T/C 是 否 在 运 行 如 果 写 入 的 TCNT2 的 数 值 等 于 OCR2, 比 较 匹 配 就 被 忽 略 了, 造 成 不 正 确 的 波 形 发 生 结 果 类 似 地, 在 计 数 器 进 行 降 序 计 数 时 不 要 对 TCNT2 写 入 BOTTOM OC2 的 设 置 应 该 在 设 置 数 据 方 向 寄 存 器 之 前 完 成 最 简 单 的 设 置 OC2 的 方 法 是 在 普 通 模 式 下 利 用 强 制 输 出 比 较 FOC2 即 使 在 改 变 波 形 发 生 模 式 时 OC2 寄 存 器 也 会 一 直 保 持 它 的 数 值 注 意 COM2: 和 比 较 数 据 都 不 是 双 缓 冲 的 COM2: 的 改 变 将 立 即 生 效 ATmega8(L)
ATmega8(L) 比 较 匹 配 输 出 单 元 比 较 匹 配 模 式 控 制 位 COM2: 具 有 双 重 功 能 波 形 发 生 器 利 用 COM2: 来 确 定 下 一 次 比 较 匹 配 发 生 时 的 输 出 比 较 状 态 (OC2) ; COM2: 还 控 制 OC2 引 脚 输 出 信 号 的 来 源 Figure 48 为 受 COM2: 设 置 影 响 的 逻 辑 的 简 化 原 理 图 I/O 寄 存 器 I/O 位 和 I/O 引 脚 以 粗 体 表 示 图 中 只 给 出 了 受 COM2: 影 响 的 通 用 I/O 端 口 控 制 寄 存 器 (DDR 和 PORT) 谈 及 OC2 状 态 时 指 的 是 内 部 OC2 寄 存 器, 而 不 是 OC2 引 脚 Figure 48. 比 较 匹 配 输 出 单 元 原 理 图 COMn COMn FOCn Waveform Generator D Q OCn OCn Pin D Q DATABUS PORT D Q DDR clk I/O 只 要 COM2: 的 一 个 或 两 个 置 位, 波 形 发 生 器 的 输 出 比 较 功 能 OC2 就 会 取 代 通 用 I/O 口 功 能 但 是 OC2 引 脚 的 方 向 仍 然 受 控 于 数 据 方 向 寄 存 器 (DDR) 在 使 用 OC2 功 能 之 前 首 先 要 通 过 数 据 方 向 寄 存 器 的 DDR_OC2 位 将 此 引 脚 设 置 为 输 出 端 口 功 能 与 波 形 发 生 器 的 工 作 模 式 无 关 输 出 比 较 逻 辑 的 设 计 允 许 OC2 状 态 在 输 出 之 前 首 先 进 行 初 始 化 要 注 意 某 些 COM2: 设 置 保 留 给 了 其 他 操 作 类 型, 详 见 P 8 8 位 T/C 寄 存 器 说 明
比 较 输 出 模 式 和 波 形 产 生 工 作 模 式 波 形 发 生 器 利 用 COM2: 的 方 式 在 普 通 CTC 和 PWM 三 种 模 式 下 有 所 区 别 对 于 所 有 的 模 式,COM2: = 表 明 比 较 匹 配 发 生 时 波 形 发 生 器 不 会 操 作 OC2 寄 存 器 非 PWM 模 式 的 比 较 输 出 请 参 见 P 8Table 43 ; 快 速 PWM 的 比 较 输 出 于 P 9Table 44 ; 相 位 修 正 PWM 的 比 较 输 出 于 P 9Table 45 改 变 COM2: 将 影 响 写 入 数 据 后 的 第 一 次 比 较 匹 配 对 于 非 PWM 模 式, 可 以 通 过 使 用 FOC2 来 强 制 立 即 产 生 效 果 工 作 模 式 - T/C 和 输 出 比 较 引 脚 的 行 为 - 由 波 形 发 生 模 式 (WGM2:) 及 比 较 输 出 模 式 (COM2:) 的 控 制 位 决 定 比 较 输 出 模 式 对 计 数 序 列 没 有 影 响, 而 波 形 产 生 模 式 对 计 数 序 列 则 有 影 响 COM2: 控 制 PWM 输 出 是 否 反 极 性 非 PWM 模 式 时 COM2: 控 制 输 出 是 否 应 该 在 比 较 匹 配 发 生 时 置 位 清 零, 或 是 电 平 取 反 (P 比 较 匹 配 输 出 单 元 ) 具 体 的 时 序 信 息 请 参 考 P 6 T/C 时 序 图 普 通 模 式 普 通 模 式 (WGM2: = ) 为 最 简 单 的 工 作 模 式 在 此 模 式 下 计 数 器 不 停 地 累 加 计 到 8 比 特 的 最 大 值 后 (TOP = xff), 由 于 数 值 溢 出 计 数 器 简 单 地 返 回 到 最 小 值 x 重 新 开 始 在 TCNT 为 零 的 同 一 个 定 时 器 时 钟 里 T/C 溢 出 标 志 TOV2 置 位 此 时 TOV2 有 点 象 第 9 位, 只 是 只 能 置 位, 不 会 清 零 但 由 于 定 时 器 中 断 服 务 程 序 能 够 自 动 清 零 TOV2, 因 此 可 以 通 过 软 件 提 高 定 时 器 的 分 辨 率 在 普 通 模 式 下 没 有 什 么 需 要 特 殊 考 虑 的, 用 户 可 以 随 时 写 入 新 的 计 数 器 数 值 输 出 比 较 单 元 可 以 用 来 产 生 中 断 但 是 不 推 荐 在 普 通 模 式 下 利 用 输 出 比 较 产 生 波 形, 因 为 会 占 用 太 多 的 CPU 时 间 2 ATmega8(L)
ATmega8(L) CTC( 比 较 匹 配 时 清 除 定 时 器 ) 模 式 在 CTC 模 式 (WGM2: = 2) 里 OCR2 寄 存 器 用 于 调 节 计 数 器 的 分 辨 率 当 计 数 器 的 数 值 TCNT2 等 于 OCR2 时 计 数 器 清 零 OCR2 定 义 了 计 数 器 的 TOP 值, 亦 即 计 数 器 的 分 辨 率 这 个 模 式 使 得 用 户 可 以 很 容 易 地 控 制 比 较 匹 配 输 出 的 频 率, 也 简 化 了 外 部 事 件 计 数 的 操 作 CTC 模 式 的 时 序 图 为 Figure 49 计 数 器 数 值 TCNT2 一 直 累 加 到 TCNT2 与 OCR2 匹 配, 然 后 TCNT2 清 零 Figure 49. CTC 模 式 的 时 序 图 OCn Interrupt Flag Set TCNTn OCn (Toggle) (COMn: = ) Period 2 3 4 利 用 OCF2 标 志 可 以 在 计 数 器 数 值 达 到 TOP 即 产 生 中 断 在 中 断 服 务 程 序 里 可 以 更 新 TOP 的 数 值 由 于 CTC 模 式 没 有 双 缓 冲 功 能, 在 计 数 器 以 无 预 分 频 器 或 很 低 的 预 分 频 器 工 作 的 时 候 将 TOP 更 改 为 接 近 BOTTOM 的 数 值 时 要 小 心 如 果 写 入 OCR2 的 数 值 小 于 当 前 TCNT2 的 数 值, 计 数 器 将 丢 失 一 次 比 较 匹 配 在 下 一 次 比 较 匹 配 发 生 之 前, 计 数 器 不 得 不 先 计 数 到 最 大 值 xff, 然 后 再 从 x 开 始 计 数 到 OCR2 为 了 在 CTC 模 式 下 得 到 波 形 输 出, 可 以 设 置 OC2 在 每 次 比 较 匹 配 发 生 时 改 变 逻 辑 电 平 这 可 以 通 过 设 置 COM2: = 来 完 成 在 期 望 获 得 OC2 输 出 之 前, 首 先 要 将 其 端 口 设 置 为 输 出 波 形 发 生 器 能 够 产 生 的 最 大 频 率 为 f OC2 = f clk_i/o /2 (OCR2 = x) 频 率 由 如 下 公 式 确 定 : f clk_i/o f OCn = ------------------------------------------------ 2 N ( + OCRn) 变 量 N 代 表 预 分 频 因 子 ( 8 32 64 28 256 或 24) 在 普 通 模 式 下, TOV2 标 志 的 置 位 发 生 在 计 数 器 从 MAX 变 为 x 的 定 时 器 时 钟 周 期 3
快 速 PWM 模 式 快 速 PWM 模 式 (WGM2: = 3) 可 用 来 产 生 高 频 的 PWM 波 形 快 速 PWM 模 式 与 其 他 PWM 模 式 的 不 同 之 处 是 其 单 边 斜 坡 工 作 方 式 计 数 器 从 BOTTOM 计 到 MAX, 然 后 立 即 回 到 BOTTOM 重 新 开 始 对 于 普 通 的 比 较 输 出 模 式, 输 出 比 较 引 脚 OC2 在 TCNT2 与 OCR2 匹 配 时 清 零, 在 BOTTOM 时 置 位 ; 对 于 反 向 比 较 输 出 模 式, OC2 的 动 作 正 好 相 反 由 于 使 用 了 单 边 斜 坡 模 式, 快 速 PWM 模 式 的 工 作 频 率 比 使 用 双 斜 坡 的 相 位 修 正 PWM 模 式 高 一 倍 此 高 频 操 作 特 性 使 得 快 速 PWM 模 式 十 分 适 合 于 功 率 调 节, 整 流 和 DAC 应 用 高 频 可 以 减 小 外 部 元 器 件 ( 电 感, 电 容 ) 的 物 理 尺 寸, 从 而 降 低 系 统 成 本 工 作 于 快 速 PWM 模 式 时, 计 数 器 的 数 值 一 直 增 加 到 MAX, 然 后 在 后 面 的 一 个 时 钟 周 期 清 零 具 体 的 时 序 图 为 Figure 5 图 中 柱 状 的 TCNT 表 示 这 是 单 边 斜 坡 操 作 方 框 图 同 时 包 含 了 普 通 的 PWM 输 出 以 及 方 向 PWM 输 出 TCNT2 斜 坡 上 的 短 水 平 线 表 示 OCR2 和 TCNT2 的 比 较 匹 配 Figure 5. 快 速 PWM 模 式 时 序 图 OCRn Interrupt Flag Set OCRn Update and TOVn Interrupt Flag Set TCNTn OCn (COMn: = 2) OCn (COMn: = 3) Period 2 3 4 5 6 7 计 时 器 数 值 达 到 MAX 时 T/C 溢 出 标 志 TOV2 置 位 如 果 中 断 使 能, 在 中 断 服 务 程 序 中 断 服 务 程 序 可 以 更 新 比 较 值 工 作 于 快 速 PWM 模 式 时, 比 较 单 元 可 以 在 OC2 引 脚 上 输 出 PWM 波 形 设 置 COM2: 为 2 可 以 产 生 普 通 的 PWM 信 号 ; 为 3 则 可 以 产 生 反 向 PWM 波 形 ( 参 见 P 9Table 44 ) 要 想 在 引 脚 上 得 到 输 出 信 号 还 必 须 将 OC2 的 数 据 方 向 设 置 为 输 出 产 生 PWM 波 形 的 机 理 是 OC2 寄 存 器 在 OCR2 与 TCNT2 匹 配 时 置 位 ( 或 清 零 ), 以 及 在 计 数 器 清 零 ( 从 MAX 变 为 BOTTOM) 的 那 一 个 定 时 器 时 钟 周 期 清 零 ( 或 置 位 ) 输 出 的 PWM 频 率 可 以 通 过 如 下 公 式 计 算 得 到 : f clk_i/o f OCnPWM = ------------------ N 256 变 量 N 代 表 分 频 因 子 ( 8 32 64 28 256 或 24) OCR2 寄 存 器 为 极 限 值 时 表 示 快 速 PWM 模 式 的 一 些 特 殊 情 况 若 OCR2A 等 于 BOTTOM, 输 出 为 出 现 在 第 MAX+ 个 定 时 器 时 钟 周 期 的 窄 脉 冲 ; OCR2 为 MAX 时, 根 据 COM2: 的 设 定, 输 出 恒 为 高 电 平 或 低 电 平 4 ATmega8(L)
ATmega8(L) 通 过 设 定 OC2 在 比 较 匹 配 时 进 行 逻 辑 电 平 取 反 (COM2: = ), 可 以 得 到 占 空 比 为 5% 的 周 期 信 号 OCR2 为 时 信 号 有 最 高 频 率 f oc2 = f clk_i/o /2 这 个 特 性 类 似 于 CTC 模 式 下 的 OC2 取 反 操 作, 不 同 之 处 在 于 快 速 PWM 模 式 具 有 双 缓 冲 相 位 修 正 PWM 模 式 相 位 修 正 PWM 模 式 (WGM2: = ) 为 用 户 提 供 了 一 个 获 得 高 精 度 相 位 修 正 PWM 波 形 的 方 法 此 模 式 基 于 双 斜 坡 操 作 计 时 器 重 复 地 从 BOTTOM 计 到 MAX, 然 后 又 从 MAX 倒 退 回 到 BOTTOM 在 一 般 的 比 较 输 出 模 式 下, 当 计 时 器 往 MAX 计 数 时 若 发 生 了 TCNT2 于 OCR2 的 匹 配,OC2 将 清 零 为 低 电 平 ; 而 在 计 时 器 往 BOTTOM 计 数 时 若 发 生 了 TCNT2 于 OCR2 的 匹 配, OC2 将 置 位 为 高 电 平 工 作 于 反 向 输 出 比 较 时 则 正 好 相 反 与 单 斜 坡 操 作 相 比, 双 斜 坡 操 作 可 获 得 的 最 大 频 率 要 小 但 由 于 其 对 称 的 特 性, 十 分 适 合 于 电 机 控 制 相 位 修 正 PWM 模 式 的 PWM 精 度 固 定 为 8 比 特 计 时 器 不 断 地 累 加 直 到 MAX, 然 后 开 始 减 计 数 在 一 个 定 时 器 时 钟 周 期 里 TCNT2 的 值 等 于 MAX 时 序 图 可 参 见 Figure 5 图 中 TCNT2 的 数 值 用 柱 状 图 表 示, 以 说 明 双 斜 坡 操 作 本 图 同 时 说 明 了 普 通 PWM 的 输 出 和 反 向 PWM 的 输 出 TCNT2 斜 坡 上 的 小 横 条 表 示 OCR2 和 TCNT2 的 比 较 匹 配 Figure 5. 相 位 修 正 PWM 模 式 的 时 序 图 OCn Interrupt Flag Set OCRn Update TOVn Interrupt Flag Set TCNTn OCn (COMn: = 2) OCn (COMn: = 3) Period 2 3 当 计 时 器 达 到 BOTTOM 时 T/C 溢 出 标 志 位 TOV2 置 位 此 标 志 位 可 用 来 产 生 中 断 工 作 于 相 位 修 正 PWM 模 式 时, 比 较 单 元 可 以 在 OC2 引 脚 产 生 PWM 波 形 : 将 COM2: 设 置 为 2 产 生 普 通 相 位 的 PWM, 设 置 COM2: 为 3 产 生 反 向 PWM 信 号 ( 参 见 P 9Table 45 ) 要 想 在 引 脚 上 得 到 输 出 信 号 还 必 须 将 OC2 的 数 据 方 向 设 置 为 输 出 OCR2 和 TCNT2 比 较 匹 配 发 生 时 OC2 寄 存 器 将 产 生 相 应 的 清 零 或 置 位 操 作, 从 而 产 生 PWM 波 形 工 作 于 相 位 修 正 模 式 时 PWM 频 率 可 由 下 式 公 式 获 得 : f clk_i/o f OCnPCPWM = ------------------ N 5 变 量 N 表 示 预 分 频 因 子 ( 8 32 64 28 256 或 24) OCR2 寄 存 器 处 于 极 值 代 表 了 相 位 修 正 PWM 模 式 的 一 些 特 殊 情 况 在 普 通 PWM 模 式 下, 若 OCR2 等 于 BOTTOM, 输 出 一 直 保 持 为 低 电 平 ; 若 OCR2 等 于 MAX, 则 输 出 保 持 为 高 电 平 反 向 PWM 模 式 则 正 好 相 反 5
在 Figure 5 的 第 2 个 周 期, 虽 然 没 有 发 生 比 较 匹 配, OCn 也 出 现 了 一 个 从 高 到 低 的 跳 变 其 目 的 是 保 证 波 形 在 BOTTOM 两 侧 的 对 称 没 有 比 较 匹 配 时 有 两 种 情 况 会 出 现 跳 变 如 Figure 5 所 示,OCR2A 的 值 从 MAX 改 变 为 其 他 数 据 当 OCR2A 值 为 MAX 时, 引 脚 OCn 的 输 出 应 该 与 前 面 降 序 记 数 比 较 匹 配 的 结 果 相 同 为 保 证 波 形 在 BOTTOM 两 侧 的 对 称, 当 T/C 的 数 值 为 MAX 时, 引 脚 OCn 的 输 出 又 必 须 符 合 后 面 升 序 记 数 比 较 匹 配 的 结 果 此 时 就 出 现 了 虽 然 没 有 比 较 匹 配 发 生 OCn 却 仍 然 有 跳 变 的 现 象 定 时 器 从 一 个 比 OCR2A 大 的 值 开 始 记 数, 并 因 而 丢 失 了 一 次 比 较 匹 配 因 此 引 入 了 没 有 比 较 匹 配 发 生 OCn 却 仍 然 有 跳 变 的 现 象 T/C 时 序 图 下 面 图 中 给 出 的 T/C 为 同 步 电 路, 因 此 其 时 钟 clk T2 可 以 表 示 为 时 钟 使 能 信 号 在 异 步 模 式 下, clk I/O 由 T/C 振 荡 器 时 钟 所 取 代 图 中 还 说 明 了 中 断 标 志 设 置 的 时 间 Figure 52 包 含 了 T/C 的 基 本 时 序 图 中 给 出 了 除 相 位 修 正 PWM 模 式 的 接 近 MAX 值 的 计 数 序 列 Figure 52. T/C 时 序 图, 无 预 分 频 器 clk I/O clk Tn (clk I/O /) TCNTn MAX - MAX BOTTOM BOTTOM + TOVn Figure 53 给 出 相 同 的 计 时 数 据, 但 预 分 频 器 使 能 Figure 53. T/C 时 序 图, 预 分 频 器 为 f clk_i/o /8 clk I/O clk Tn (clk I/O /8) TCNTn MAX - MAX BOTTOM BOTTOM + TOVn Figure 54 给 出 了 各 种 模 式 下 ( 除 了 CTC 模 式 )OCF2 的 置 位 情 况 6 ATmega8(L)
ATmega8(L) Figure 54. T/C 时 序 图, OCF2 置 位, 预 分 频 器 为 f clk_i/o /8 clk I/O clk Tn (clk I/O /8) TCNTn OCRn - OCRn OCRn + OCRn + 2 OCRn OCRn Value OCFn Figure 55 给 出 了 CTC 模 式 下 OCF2 置 位 和 TCNT2 清 除 的 情 况 Figure 55. T/C 时 序 图, CTC 模 式, 预 分 频 器 为 f clk_i/o /8 clk I/O clk Tn (clk I/O /8) TCNTn (CTC) TOP - TOP BOTTOM BOTTOM + OCRn TOP OCFn 7
8 位 T/C 寄 存 器 说 明 T/C 控 制 寄 存 器 - TCCR2 Bit 7 6 5 4 3 2 FOC2 WGM2 COM2 COM2 WGM2 CS22 CS2 CS2 TCCR2 读 / 写 W R/W R/W R/W R/W R/W R/W R/W 初 始 值 Bit 7 FOC2: 强 制 输 出 比 较 FOC2 仅 在 WGM 指 明 非 PWM 模 式 时 才 有 效 但 是, 为 了 保 证 与 未 来 器 件 的 兼 容 性, 使 用 PWM 时, 写 TCCR2 要 对 其 清 零 写 后, 波 形 发 生 器 将 立 即 进 行 比 较 操 作 比 较 匹 配 输 出 引 脚 OC2 将 按 照 COM2: 的 设 置 输 出 相 应 的 电 平 要 注 意 FOC2 类 似 一 个 锁 存 信 号, 真 正 对 强 制 输 出 比 较 起 作 用 的 是 COM2: 的 设 置 FOC2 不 会 引 发 任 何 中 断, 也 不 会 在 使 用 OCR2 作 为 TOP 的 CTC 模 式 下 对 定 时 器 进 行 清 零 读 FOC2 的 返 回 值 永 远 为 Bit 6,3 WGM2:: 波 形 产 生 模 式 这 几 位 控 制 计 数 器 的 计 数 序 列, 计 数 器 最 大 值 TOP 的 来 源, 以 及 产 生 何 种 波 形 T/C 支 持 的 模 式 有 : 普 通 模 式, 比 较 匹 配 发 生 时 清 除 计 数 器 模 式 (CTC), 以 及 两 种 PWM 模 式, 详 见 Table 42 and P 2 工 作 模 式 Table 42. 波 形 产 生 模 式 的 位 定 义 模 式 WGM2 (CTC2) WGM2 (PWM2) T/C 的 工 作 模 式 TOP OCR2 的 更 新 时 间 TOV2 的 置 位 时 刻 普 通 xff 立 即 更 新 MAX 相 位 修 正 PWM xff TOP BOTTOM 2 CTC OCR2 立 即 更 新 MAX 3 快 速 PWM xff TOP MAX Note:. 位 定 义 CTC2 和 PWM2 已 经 不 再 使 用 了, 要 使 用 WGM2: 但 是 功 能 和 位 置 与 以 前 版 本 兼 容 Bit 5:4 COM2:: 比 较 匹 配 输 出 模 式 这 些 位 决 定 了 比 较 匹 配 发 生 时 输 出 引 脚 OC 的 电 平 如 果 COM: 中 的 一 位 或 全 部 都 置 位, OC 以 比 较 匹 配 输 出 的 方 式 进 行 工 作 同 时 其 方 向 控 制 位 要 设 置 为 以 使 能 输 出 驱 动 当 OC 连 接 到 物 理 引 脚 上 时, COM: 的 功 能 依 赖 于 WGM: 的 设 置 Table 43 给 出 了 当 WGM: 设 置 为 普 通 模 式 或 CTC 模 式 时 COM: 的 功 能 Table 43. 比 较 输 出 模 式, 非 PWM 模 式 COM2 COM2 说 明 正 常 的 端 口 操 作, OC2 未 连 接 比 较 匹 配 发 生 时 OC2 取 反 比 较 匹 配 发 生 时 OC2 清 零 比 较 匹 配 发 生 时 OC2 置 位 Table 44 给 出 了 当 WGM2: 设 置 为 快 速 PWM 模 式 时 COM2: 的 功 能 8 ATmega8(L)
ATmega8(L) Table 44. 比 较 输 出 模 式, 快 速 PWM 模 式 () COM2 COM2 说 明 正 常 的 端 口 操 作, OC2 未 连 接 保 留 比 较 匹 配 发 生 时 OC2 清 零, 计 数 到 TOP 时 OC 置 位 比 较 匹 配 发 生 时 OC2 置 位, 计 数 到 TOP 时 OC 清 零 Note:. 一 个 特 殊 情 况 是 OCR2 等 于 TOP, 且 COM2 置 位 此 时 比 较 匹 配 将 被 忽 略, 而 计 数 到 TOP 时 的 动 作 继 续 有 效 详 细 信 息 请 参 见 P 4 快 速 PWM 模 式 Table 45 给 出 了 当 WGM2: 设 置 为 相 位 修 正 PWM 模 式 时 COM2: 的 功 能 Table 45. 比 较 输 出 模 式, 相 位 修 正 PWM 模 式 () COM2 COM2 说 明 正 常 的 端 口 操 作, OC2 未 连 接 保 留 在 升 序 计 数 时 发 生 比 较 匹 配 将 清 零 OC2 ; 降 序 计 数 时 发 生 比 较 匹 配 将 置 位 OC2 在 升 序 计 数 时 发 生 比 较 匹 配 将 置 位 OC2 ; 降 序 计 数 时 发 生 比 较 匹 配 将 清 零 OC2 Note:. 一 个 特 殊 情 况 是 OCR2 等 于 TOP, 且 COM2 置 位 此 时 比 较 匹 配 将 被 忽 略, 而 计 数 到 TOP 时 的 动 作 继 续 有 效 详 细 信 息 请 参 见 P 5 相 位 修 正 PWM 模 式 9
Bit 2: CS22:: 时 钟 选 择 这 三 位 时 钟 选 择 位 用 于 选 择 T/C 的 时 钟 源, 见 Table 46 Table 46. 时 钟 选 择 位 说 明 CS22 CS2 CS2 说 明 无 时 钟, T/C 不 工 作 clk T2S /( 没 有 预 分 频 ) clk T2S /8 ( 来 自 预 分 频 器 ) clk T2S /32 ( 来 自 预 分 频 器 ) clk T2S /64 ( 来 自 预 分 频 器 ) clk T2S /28 ( 来 自 预 分 频 器 ) clk T2S /256 ( 来 自 预 分 频 器 ) clk T2S /24 ( 来 自 预 分 频 器 ) 定 时 器 / 计 数 器 寄 存 器 - TCNT2 Bit 7 6 5 4 3 2 TCNT2[7:] 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 TCNT2 通 过 T/C 寄 存 器 可 以 直 接 对 计 数 器 的 8 位 数 据 进 行 读 写 访 问 对 TCNT2 寄 存 器 的 写 访 问 将 在 下 一 个 时 钟 阻 止 比 较 匹 配 在 计 数 器 运 行 的 过 程 中 修 改 TCNT2 的 数 值 有 可 能 丢 失 一 次 TCNT2 和 OCR2 的 比 较 匹 配 输 出 比 较 寄 存 器 - OCR2 Bit 7 6 5 4 3 2 OCR2[7:] 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 OCR2 输 出 比 较 寄 存 器 包 含 一 个 8 位 的 数 据, 不 间 断 地 与 计 数 器 数 值 TCNT2 进 行 比 较 匹 配 事 件 可 以 用 来 产 生 输 出 比 较 中 断, 或 者 用 来 在 OC2 引 脚 上 产 生 波 形 定 时 器 / 计 数 器 的 异 步 操 作 异 步 状 态 寄 存 器 - ASSR Bit 7 6 5 4 3 2 AS2 TCN2UB OCR2UB TCR2UB ASSR 读 / 写 R R R R R/W R R R 初 始 值 ATmega8(L) Bit 3 AS2: 异 步 T/C2 AS2 为 " 时 T/C2 由 I/O 时 钟 clk I/O 驱 动 ;AS2 为 " 时 T/C2 由 连 接 到 TOSC 引 脚 的 晶 体 振 荡 器 驱 动 改 变 AS2 有 可 能 破 坏 TCNT2 OCR2 与 TCCR2 的 内 容 Bit 2 TCN2UB:T/C2 更 新 中 T/C2 工 作 于 异 步 模 式 时, 写 TCNT2 将 引 起 TCN2UB 置 位 当 TCNT2 从 暂 存 寄 存 器 更 新 完 毕 后 TCN2UB 由 硬 件 清 零 TCN2UB 为 表 明 TCNT2 可 以 写 入 新 值 了 Bit OCR2UB: 输 出 比 较 寄 存 器 2 更 新 中 T/C2 工 作 于 异 步 模 式 时, 写 OCR2 将 引 起 OCR2UB 置 位 当 OCR2 从 暂 存 寄 存 器 更 新 完 毕 后 OCR2UB 由 硬 件 清 零 OCR2UB 为 表 明 OCR2 可 以 写 入 新 值 了
ATmega8(L) Bit TCR2UB:T/C2 控 制 寄 存 器 更 新 中 T/C2 工 作 于 异 步 模 式 时, 写 TCCR2 将 引 起 TCR2UB 置 位 当 TCCR2 从 暂 存 寄 存 器 更 新 完 毕 后 TCR2UB 由 硬 件 清 零 TCR2UB 为 表 明 TCCR2 可 以 写 入 新 值 了 如 果 在 更 新 忙 标 志 置 位 的 时 候 写 上 述 任 何 一 个 寄 存 器 都 将 引 起 数 据 的 破 坏, 并 引 发 不 必 要 的 中 断 读 取 TCNT2 OCR2 和 TCCR2 的 机 制 是 不 同 的 读 取 TCNT2 得 到 的 是 实 际 的 值, 而 OCR2 和 TCCR2 则 是 从 暂 存 寄 存 器 中 读 取 的 定 时 器 / 计 数 器 2 的 异 步 操 作 T/C2 工 作 于 异 步 模 式 时 要 考 虑 如 下 几 点 : 警 告 : 在 同 步 和 异 步 模 式 之 间 的 转 换 有 可 能 造 成 TCNT2 OCR2 和 TCCR2 数 据 的 损 毁 安 全 的 步 骤 应 该 是 :. 清 零 OCIE2 和 TOIE2 以 关 闭 T/C2 的 中 断 2. 设 置 AS2 以 选 择 合 适 的 时 钟 源 3. 对 TCNT2 OCR2 和 TCCR2 写 入 新 的 数 据 4. 切 换 到 异 步 模 式 : 等 待 TCN2UB OCR2UB 和 TCR2UB 清 零 5. 清 除 T/C2 的 中 断 标 志 6. 需 要 的 话 使 能 中 断 振 荡 器 最 好 使 用 32.768 khz 手 表 晶 振 给 TOSC 提 供 外 部 时 钟, 可 能 会 造 成 T/C2 工 作 错 误 系 统 主 时 钟 必 须 比 晶 振 高 4 倍 以 上 写 TCNT2,OCR2 和 TCCR2 时 数 据 首 先 送 入 暂 存 器, 两 个 TOSC 时 钟 正 跳 变 后 才 锁 存 到 对 应 到 的 寄 存 器 在 数 据 从 暂 存 器 写 入 目 的 寄 存 器 之 前 不 能 执 行 新 的 数 据 写 入 操 作 3 个 寄 存 器 具 有 各 自 独 立 的 暂 存 器, 因 此 写 TCNT2 并 不 会 干 扰 OCR2 的 写 操 作 异 步 状 态 寄 存 器 ASSR 用 来 检 查 数 据 是 否 已 经 写 入 到 目 的 寄 存 器 如 果 要 用 T/C2 作 为 MCU 省 电 模 式 或 扩 展 Standby 模 式 的 唤 醒 条 件, 则 在 TCNT2, OCR2A 和 TCCR2A 更 新 结 束 之 前 不 能 进 入 这 些 休 眠 模 式, 否 则 MCU 可 能 会 在 T/C2 设 置 生 效 之 前 进 入 休 眠 模 式 这 对 于 用 T/C2 的 比 较 匹 配 中 断 唤 醒 MCU 尤 其 重 要, 因 为 在 更 新 OCR2 或 TCNT2 时 比 较 匹 配 是 禁 止 的 如 果 在 更 新 完 成 之 前 (OCR2UB 为 )MCU 就 进 入 了 休 眠 模 式, 那 么 比 较 匹 配 中 断 永 远 不 会 发 生, MCU 也 永 远 无 法 唤 醒 了 如 果 要 用 T/C2 作 为 省 电 模 式 或 扩 展 Standby 模 式 的 唤 醒 条 件, 必 须 注 意 重 新 进 入 这 些 休 眠 模 式 的 过 程 中 断 逻 辑 需 要 一 个 TOSC 周 期 进 行 复 位 如 果 从 唤 醒 到 重 新 进 入 休 眠 的 时 间 小 于 一 个 TOSC 周 期, 中 断 将 不 再 发 生, 器 件 也 无 法 唤 醒 如 果 用 户 怀 疑 自 己 程 序 是 否 满 足 这 一 条 件, 可 以 采 取 如 下 方 法 :. 对 TCCR2 TCNT2 或 OCR2 写 入 合 适 的 数 据 2. 等 待 ASSR 相 应 的 更 新 忙 标 志 清 零 3. 进 入 省 电 模 式 或 扩 展 Standby 模 式 若 选 择 了 异 步 工 作 模 式,T/C2 的 32.768 khz 振 荡 器 将 一 直 工 作, 除 非 进 入 掉 电 模 式 或 Standby 模 式 用 户 应 该 注 意, 此 振 荡 器 的 稳 定 时 间 可 能 长 达 秒 钟 因 此, 建 议 用 户 在 器 件 上 电 复 位, 或 从 掉 电 /Standby 模 式 唤 醒 时 至 少 等 待 秒 钟 后 再 使 用 T/C2 同 时, 由 于 启 动 过 程 时 钟 的 不 稳 定 性, 唤 醒 时 所 有 的 T/C2 寄 存 器 的 内 容 都 可 能 不 正 确, 不 论 使 用 的 是 晶 体 还 是 外 部 时 钟 信 号 使 用 异 步 时 钟 时 省 电 模 式 或 扩 展 Standby 模 式 的 唤 醒 过 程 : 中 断 条 件 满 足 后, 在 下 一 个 定 时 器 时 钟 唤 醒 过 程 启 动 也 就 是 说, 在 处 理 器 可 以 读 取 计 数 器 的 数 值 之 前 计 数 器 至 少 又 累 加 了 一 个 时 钟 唤 醒 后 MCU 停 止 4 个 时 钟, 接 着 执 行 中 断 服 务 程 序 中 断 服 务 程 序 结 束 之 后 开 始 执 行 SLEEP 语 句 之 后 的 程 序 从 省 电 模 式 唤 醒 之 后 的 短 时 间 内 读 取 TCNT2 可 能 返 回 不 正 确 的 数 据 因 为 TCNT2 是 由 异 步 的 TOSC 时 钟 驱 动 的, 而 读 取 TCNT2 必 须 通 过 一 个 与 内 部 I/O 时 钟 同 步 的 寄 存 器 来 完 成 同 步 发 生 于 每 个 TOSC 的 上 升 沿 从 省 电 模 式 唤 醒 后 I/O 时 钟 重 新 激
活, 而 读 到 的 TCNT2 数 值 为 进 入 休 眠 模 式 前 的 值, 直 到 下 一 个 TOSC 上 升 沿 的 到 来 从 省 电 模 式 唤 醒 时 TOSC 的 相 位 是 完 全 不 可 预 测 的, 而 且 与 唤 醒 时 间 有 关 因 此, 读 取 TCNT2 的 推 荐 序 列 为 :. 写 一 个 任 意 数 值 到 OCR2 或 TCCR2 2. 等 待 相 应 的 更 新 忙 标 志 清 零 3. 读 TCNT2 在 异 步 模 式 下, 中 断 标 志 的 同 步 需 要 3 个 处 理 器 周 期 加 一 个 定 时 器 周 期 在 处 理 器 可 以 读 取 引 起 中 断 标 志 置 位 的 计 数 器 数 值 之 前 计 数 器 至 少 又 累 加 了 一 个 时 钟 输 出 比 较 引 脚 的 变 化 与 定 时 器 时 钟 同 步, 而 不 是 处 理 器 时 钟 2 ATmega8(L)
ATmega8(L) 定 时 器 / 计 数 器 中 断 屏 蔽 寄 存 器 -TIMSK Bit 7 6 5 4 3 2 OCIE2 TOIE2 TICIE OCIEA OCIEB TOIE TOIE TIMSK 读 / 写 R/W R/W R/W R/W R/W R/W R R/W 初 始 值 Bit 7 OCIE2:T/C2 输 出 比 较 匹 配 中 断 使 能 当 OCIE2 和 状 态 寄 存 器 的 全 局 中 断 使 能 位 I 都 为 " 时,T/C2 的 输 出 比 较 匹 配 A 中 断 使 能 当 T/C2 的 比 较 匹 配 发 生, 即 TIFR 中 的 OCF2 置 位 时, 中 断 服 务 程 序 得 以 执 行 Bit 6 TOIE2: T/C2 溢 出 中 断 使 能 当 TOIE2 和 状 态 寄 存 器 的 全 局 中 断 使 能 位 I 都 为 " 时,T/C2 的 溢 出 中 断 使 能 当 T/C2 发 生 溢 出, 即 TIFR 中 的 TOV2 位 置 位 时, 中 断 服 务 程 序 得 以 执 行 定 时 器 / 计 数 器 中 断 标 志 寄 存 器 -TIFR Bit 7 6 5 4 3 2 OCF2 TOV2 ICF OCFA OCFB TOV TOV TIFR 读 / 写 R/W R/W R/W R/W R/W R/W R R/W 初 始 值 Bit 7 OCF2: 输 出 比 较 标 志 2 当 T/C2 与 OCR2( 输 出 比 较 寄 存 器 2) 的 值 匹 配 时, OCF2 置 位 此 位 在 中 断 服 务 程 序 里 硬 件 清 零, 也 可 以 通 过 对 其 写 来 清 零 当 SREG 中 的 位 I OCIE2 和 OCF2 都 置 位 时, 中 断 服 务 程 序 得 到 执 行 Bit 6 TOV2: T/C2 溢 出 标 志 当 T/C2 溢 出 时, TOV2 置 位 执 行 相 应 的 中 断 服 务 程 序 时 此 位 硬 件 清 零 此 外, TOV2 也 可 以 通 过 写 来 清 零 当 SREG 中 的 位 I TOIE2 和 TOV2 都 置 位 时, 中 断 服 务 程 序 得 到 执 行 在 PWM 模 式 中, 当 T/C2 在 x 改 变 记 数 方 向 时, TOV2 置 位 定 时 器 / 计 数 器 预 分 频 器 Figure 56. T/C2 的 预 分 频 器 clk I/O TOSC AS2 clkt2s Clear clk T2S /8 -BIT T/C PRESCALER clk T2S /32 clk T2S /64 clk T2S /28 clk T2S /256 clk T2S /24 PSR2 CS2 CS2 CS22 TIMER/COUNTER2 CLOCK SOURCE clk T2 3
T/C2 预 分 频 器 的 输 入 时 钟 称 为 clk T2S 缺 省 地, clk T2S 与 系 统 主 时 钟 clk I/O 连 接 若 置 位 ASSR 的 AS2,T/C2 将 由 引 脚 TOSC 异 步 驱 动, 使 得 T/C2 可 以 作 为 一 个 实 时 时 钟 RTC 此 时 TOSC 和 TOSC2 从 端 口 C 脱 离, 引 脚 上 可 外 接 一 个 时 钟 晶 振 ( 内 部 振 荡 器 针 对 32.768 khz 的 钟 表 晶 体 进 行 了 优 化 ) 不 推 荐 在 TOSC 上 直 接 施 加 外 部 时 钟 信 号 T/C2 的 可 能 预 分 频 选 项 有 : clk T2S /8 clk T2S /32 clk T2S /64 clk T2S /28 clk T2S /256 和 clk T2S /24 此 外 还 可 以 选 择 clk T2S 和 ( 停 止 工 作 ) 置 位 SFIOR 寄 存 器 的 PSR2 将 复 位 预 分 频 器, 从 而 允 许 用 户 从 可 预 测 的 预 分 频 器 开 始 工 作 特 殊 功 能 IO 寄 存 器 - SFIOR Bit 7 6 5 4 3 2 ACME PUD PSR2 PSR SFIOR 读 / 写 R R R R R/W R/W R/W R/W 初 始 值 Bit PSR2: 预 分 频 复 位 T/C2 当 该 位 置, T/C2 预 分 频 器 复 位 操 作 完 成 后, 该 位 被 硬 件 清 零 该 位 写 无 效 若 内 部 CPU 时 钟 作 为 T/C2 时 钟, 该 位 读 为 当 T/C2 工 作 在 异 步 模 式 时, 直 到 预 分 频 器 复 位 该 位 保 持 为 4 ATmega8(L)
ATmega8(L) 串 行 外 设 接 口 - SPI 串 行 外 设 接 口 SPI 允 许 ATmega8 和 外 设 或 其 他 AVR 器 件 进 行 高 速 的 同 步 数 据 传 输 ATmega8 SPI 的 特 点 如 下 : 全 双 工, 3 线 同 步 数 据 传 输 主 机 或 从 机 操 作 LSB 首 先 发 送 或 MSB 首 先 发 送 7 种 可 编 程 的 比 特 率 传 输 结 束 中 断 标 志 写 冲 突 标 志 检 测 可 以 从 闲 置 模 式 唤 醒 作 为 主 机 时 具 有 倍 速 模 式 (CK/2) () Figure 57. SPI 方 框 图 DIVIDER /2/4/8/6/32/64/28 SPI2X SPI2X Note:. SPI 的 引 脚 排 列 请 参 见 P 2 引 脚 配 置 与 P 55Table 22 主 机 和 从 机 之 间 的 SPI 连 接 如 Figure 58 所 示 系 统 包 括 两 个 移 位 寄 存 器 和 一 个 主 机 时 钟 发 生 器 通 过 将 需 要 的 从 机 的 SS 引 脚 拉 低, 主 机 启 动 一 次 通 讯 过 程 主 机 和 从 机 将 需 要 发 送 的 数 据 放 入 相 应 的 移 位 寄 存 器 主 机 在 SCK 引 脚 上 产 生 时 钟 脉 冲 以 交 换 数 据 主 机 的 数 据 从 主 机 的 MOSI 移 出, 从 从 机 的 MOSI 移 入 ; 从 机 的 数 据 由 从 机 的 MISO 移 出, 从 主 机 的 MISO 移 入 主 机 通 过 将 从 机 的 SS 拉 高 实 现 与 从 机 的 同 步 配 置 为 SPI 主 机 时, SPI 接 口 不 自 动 控 制 SS 引 脚, 必 须 由 用 户 软 件 来 处 理 对 SPI 数 据 寄 存 器 写 入 数 据 即 启 动 SPI 时 钟, 将 8 比 特 的 数 据 移 入 从 机 传 输 结 束 后 SPI 时 钟 停 止, 传 输 结 束 标 志 SPIF 置 位 如 果 此 时 SPCR 寄 存 器 的 SPI 中 断 使 能 位 SPIE 置 位, 中 断 就 会 发 生 主 机 可 以 继 续 往 SPDR 写 入 数 据 以 移 位 到 从 机 中 去, 或 者 是 将 从 机 的 SS 拉 高 以 说 明 数 据 包 发 送 完 成 最 后 进 来 的 数 据 将 一 直 保 存 于 缓 冲 寄 存 器 里 5
配 置 为 从 机 时, 只 要 SS 为 高, SPI 接 口 将 一 直 保 持 睡 眠 状 态, 并 保 持 MISO 为 三 态 在 这 个 状 态 下 软 件 可 以 更 新 SPI 数 据 寄 存 器 SPDR 的 内 容 即 使 此 时 SCK 引 脚 有 输 入 时 钟,SPDR 的 数 据 也 不 会 移 出, 直 至 SS 被 拉 低 一 个 字 节 完 全 移 出 之 后, 传 输 结 束 标 志 SPIF 置 位 如 果 此 时 SPCR 寄 存 器 的 SPI 中 断 使 能 位 SPIE 置 位, 就 会 产 生 中 断 请 求 在 读 取 移 入 的 数 据 之 前 从 机 可 以 继 续 往 SPDR 写 入 数 据 最 后 进 来 的 数 据 将 一 直 保 存 于 缓 冲 寄 存 器 里 Figure 58. SPI 主 机 - 从 机 的 互 连 MSB MASTER LSB 8 BIT SHIFT REGISTER MISO MISO MSB SLAVE LSB 8 BIT SHIFT REGISTER MOSI MOSI SHIFT ENABLE SPI CLOCK GENERATOR SCK SS V CC SCK SS SPI 系 统 的 发 送 方 向 只 有 一 个 缓 冲 器, 而 在 接 收 方 向 有 两 个 缓 冲 器 也 就 是 说, 在 发 送 时 一 定 要 等 到 移 位 过 程 全 部 结 束 后 才 能 对 SPI 数 据 寄 存 器 执 行 写 操 作 而 在 接 收 数 据 时, 需 要 在 下 一 个 字 符 移 位 过 程 结 束 之 前 通 过 访 问 SPI 数 据 寄 存 器 读 取 当 前 接 收 到 的 字 符 否 则 第 一 个 字 节 将 丢 失 工 作 于 SPI 从 机 模 式 时, 控 制 逻 辑 对 SCK 引 脚 的 输 入 信 号 进 行 采 样 为 了 保 证 对 时 钟 信 号 的 正 确 采 样, SPI 时 钟 不 能 超 过 f osc /4 SPI 使 能 后,MOSI MISO SCK 和 SS 引 脚 的 数 据 方 向 将 按 照 Table 47 所 示 自 动 进 行 配 置 更 多 自 动 重 载 信 息 请 参 考 P 53 端 口 的 第 二 功 能 Table 47. SPI 引 脚 重 载 () 引 脚 方 向, SPI 主 机 方 向, SPI 从 机 MOSI 用 户 定 义 输 入 MISO 输 入 用 户 定 义 SCK 用 户 定 义 输 入 SS 用 户 定 义 输 入 Note:. 请 参 考 P 55 端 口 B 的 第 二 功 能 以 了 解 如 何 定 义 由 用 户 定 义 的 SPI 引 脚 下 面 的 例 程 说 明 如 何 将 SPI 初 始 化 为 主 机, 以 及 如 何 进 行 简 单 的 数 据 发 送 例 子 中 DDR_SPI 必 须 由 实 际 的 数 据 方 向 寄 存 器 代 替 ;DD_MOSI DD_MISO 和 DD_SCK 必 须 由 6 ATmega8(L)
ATmega8(L) 实 际 的 数 据 方 向 代 替 比 如 说, MOSI 为 PB5 引 脚, 则 DD_MOSI 要 用 DDB5 取 代, DDR_SPI 则 用 DDRB 取 代 () 汇 编 代 码 例 程 SPI_MasterInit: ; 设 置 MOSI 和 SCK 为 输 出, 其 他 为 输 入 ldi out r7,(<<dd_mosi) (<<DD_SCK) DDR_SPI,r7 ; 使 能 SPI 主 机 模 式, 设 置 时 钟 速 率 为 fck/6 ldi out ret r7,(<<spe) (<<MSTR) (<<SPR) SPCR,r7 SPI_MasterTransmit: ; 启 动 数 据 传 输 (r6) out SPDR,r6 Wait_Transmit: ; 等 待 传 输 结 束 sbis SPSR,SPIF rjmp Wait_Transmit ret () C 代 码 例 程 void SPI_MasterInit(void) { /* 设 置 MOSI 和 SCK 为 输 出, 其 他 为 输 入 */ DDR_SPI = (<<DD_MOSI) (<<DD_SCK); /* 使 能 SPI 主 机 模 式, 设 置 时 钟 速 率 为 fck/6 */ SPCR = (<<SPE) (<<MSTR) (<<SPR); } void SPI_MasterTransmit(char cdata) { /* 启 动 数 据 传 输 */ SPDR = cdata; /* 等 待 传 输 结 束 */ while(!(spsr & (<<SPIF))) ; } Note:. 程 序 假 定 已 经 包 含 了 正 确 的 头 文 件 7
下 面 的 例 子 说 明 如 何 将 SPI 初 始 化 为 从 机, 以 及 如 何 进 行 简 单 的 数 据 接 收 () 汇 编 代 码 例 程 SPI_SlaveInit: ; 设 置 MISO 为 输 出, 其 他 为 输 入 ldi out ; 使 能 SPI ldi out ret r7,(<<dd_miso) DDR_SPI,r7 r7,(<<spe) SPCR,r7 SPI_SlaveReceive: ; 等 待 接 收 结 束 sbis SPSR,SPIF rjmp SPI_SlaveReceive ; 读 取 接 收 到 的 数 据, 然 后 返 回 in r6,spdr ret () C 代 码 例 程 void SPI_SlaveInit(void) { /* 设 置 MISO 为 输 出, 其 他 为 输 入 */ DDR_SPI = (<<DD_MISO); /* 使 能 SPI */ SPCR = (<<SPE); } char SPI_SlaveReceive(void) { /* 等 待 接 收 结 束 */ while(!(spsr & (<<SPIF))) ; /* 返 回 数 据 */ return SPDR; } Note:. 例 程 假 定 已 经 包 含 了 正 确 的 头 文 件 8 ATmega8(L)
ATmega8(L) SS 引 脚 的 功 能 从 机 模 式 当 SPI 配 置 为 从 机 时, 从 机 选 择 引 脚 SS 总 是 为 输 入 SS 为 低 将 激 活 SPI 接 口, MISO 成 为 输 出 ( 用 户 必 须 进 行 相 应 的 端 口 配 置 ) 引 脚, 其 他 引 脚 成 为 输 入 引 脚 当 SS 为 高 时 所 有 的 引 脚 成 为 输 入, SPI 逻 辑 复 位, 不 再 接 收 数 据 SS 引 脚 对 于 数 据 包 / 字 节 的 同 步 非 常 有 用, 可 以 使 从 机 的 位 计 数 器 与 主 机 的 时 钟 发 生 器 同 步 当 SS 拉 高 时 SPI 从 机 立 即 复 位 接 收 和 发 送 逻 辑, 并 丢 弃 移 位 寄 存 器 里 不 完 整 的 数 据 主 机 模 式 当 SPI 配 置 为 主 机 时 (MSTR 的 SPCR 置 位 ), 用 户 可 以 决 定 SS 引 脚 的 方 向 SPI 控 制 寄 存 器 - SPCR 若 SS 配 置 为 输 出, 则 此 引 脚 可 以 用 作 普 通 的 I/O 口 而 不 影 响 SPI 系 统 典 型 应 用 是 用 来 驱 动 从 机 的 SS 引 脚 如 果 SS 配 置 为 输 入, 必 须 保 持 为 高 以 保 证 SPI 的 正 常 工 作 若 系 统 配 置 为 主 机, SS 为 输 入, 但 被 外 设 拉 低, 则 SPI 系 统 会 将 此 低 电 平 解 释 为 有 一 个 外 部 主 机 将 自 己 选 择 为 从 机 为 了 防 止 总 线 冲 突, SPI 系 统 将 实 现 如 下 动 作 :. 清 零 SPCR 的 MSTR 位, 使 SPI 成 为 从 机, 从 而 MOSI 和 SCK 变 为 输 入 2. SPSR 的 SPIF 置 位 若 SPI 中 断 和 全 局 中 断 开 放, 则 中 断 服 务 程 序 将 得 到 执 行 因 此, 使 用 中 断 方 式 处 理 SPI 主 机 的 数 据 传 输, 并 且 存 在 SS 被 拉 低 的 可 能 性 时, 中 断 服 务 程 序 应 该 检 查 MSTR 是 否 为 " 若 被 清 零, 用 户 必 须 将 其 置 位, 以 重 新 使 能 SPI 主 机 模 式 Bit 7 6 5 4 3 2 Bit 7 SPIE: SPI 中 断 使 能 置 位 后, 只 要 SPSR 寄 存 器 的 SPIF 和 SREG 寄 存 器 的 全 局 中 断 使 能 位 置 位, 就 会 引 发 SPI 中 断 Bit 6 SPE: SPI 使 能 SPE 置 位 将 使 能 SPI 进 行 任 何 SPI 操 作 之 前 必 须 置 位 SPE Bit 5 DORD: 数 据 次 序 DORD 置 位 时 数 据 的 LSB 首 先 发 送 ; 否 则 数 据 的 MSB 首 先 发 送 Bit 4 MSTR: 主 / 从 选 择 MSTR 置 位 时 选 择 主 机 模 式, 否 则 为 从 机 如 果 MSTR 为 ",SS 配 置 为 输 入, 但 被 拉 低, 则 MSTR 被 清 零, 寄 存 器 SPSR 的 SPIF 置 位 用 户 必 须 重 新 设 置 MSTR 进 入 主 机 模 式 Bit 3 CPOL: 时 钟 极 性 CPOL 置 位 表 示 空 闲 时 SCK 为 高 电 平 ; 否 则 空 闲 时 SCK 为 低 电 平 请 参 考 Figure 59 与 Figure 6 CPOL 功 能 总 结 如 下 : Bit 2 CPHA: 时 钟 相 位 SPIE SPE DORD MSTR CPOL CPHA SPR SPR SPCR 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 Table 48. CPOL 功 能 CPOL 起 始 沿 结 束 沿 上 升 沿 下 降 沿 下 降 沿 上 升 沿 9
CPHA 决 定 数 据 是 在 SCK 的 起 始 沿 采 样 还 是 在 SCK 的 结 束 沿 采 样 请 参 考 Figure 59 与 Figure 6 Table 49. CPHA 功 能 CPHA 起 始 沿 结 束 沿 采 样 设 置 设 置 采 样 Bits, SPR, SPR: SPI 时 钟 速 率 选 择 与 确 定 主 机 的 SCK 速 率 SPR 和 SPR 对 从 机 没 有 影 响 SCK 和 振 荡 器 的 时 钟 频 率 f osc 关 系 如 下 表 所 示 : Table 5. SCK 和 振 荡 器 频 率 的 关 系 SPI2X SPR SPR SCK 频 率 f osc /4 f osc /6 f osc /64 f osc /28 f osc /2 f osc /8 f osc /32 f osc /64 2 ATmega8(L)
ATmega8(L) SPI 状 态 寄 存 器 - SPSR Bit 7 6 5 4 3 2 SPIF WCOL SPI2X SPSR 读 / 写 R R R R R R R R/W 初 始 值 Bit 7 SPIF: SPI 中 断 标 志 串 行 发 送 结 束 后,SPIF 置 位 若 此 时 寄 存 器 SPCR 的 SPIE 和 全 局 中 断 使 能 位 置 位,SPI 中 断 即 产 生 如 果 SPI 为 主 机, SS 配 置 为 输 入, 且 被 拉 低, SPIF 也 将 置 位 进 入 中 断 服 务 程 序 后 SPIF 自 动 清 零 或 者 可 以 通 过 先 读 SPSR, 紧 接 着 访 问 SPDR 来 对 SPIF 清 零 Bit 6 WCOL: 写 冲 突 标 志 在 发 送 当 中 对 SPI 数 据 寄 存 器 SPDR 写 数 据 将 置 位 WCOL WCOL 可 以 通 过 先 读 SPSR, 紧 接 着 访 问 SPDR 来 清 零 Bit 5.. Res: 保 留 保 留 位, 读 操 作 返 回 值 为 零 Bit SPI2X: SPI 倍 速 置 位 后 SPI 的 速 度 加 倍 若 为 主 机 ( 见 Table 5), 则 SCK 频 率 可 达 CPU 频 率 的 一 半 若 为 从 机, 只 能 保 证 f osc /4 ATmega8 的 SPI 接 口 同 时 还 用 来 实 现 程 序 和 EEPROM 的 下 载 和 上 载 请 参 见 SPI 串 行 编 程 和 校 验 SPI 数 据 寄 存 器 - SPDR Bit 7 6 5 4 3 2 MSB LSB SPDR 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 X X X X X X X X 未 定 义 SPI 数 据 寄 存 器 为 读 / 写 寄 存 器, 用 来 在 寄 存 器 文 件 和 SPI 移 位 寄 存 器 之 间 传 输 数 据 写 寄 存 器 将 启 动 数 据 传 输, 读 寄 存 器 将 读 取 寄 存 器 的 接 收 缓 冲 器 2
数 据 模 式 相 对 于 串 行 数 据, SCK 的 相 位 和 极 性 有 4 种 组 合 CPHA 和 CPOL 控 制 组 合 的 方 式 SPI 数 据 传 输 格 式 见 Figure 59 与 Figure 6 每 一 位 数 据 的 移 出 和 移 入 发 生 于 SCK 不 同 的 信 号 跳 变 沿, 以 保 证 有 足 够 的 时 间 使 数 据 稳 定 这 个 过 程 在 Table 48 与 Table 49 有 清 楚 的 说 明 : Table 5. CPOL 与 CPHA 功 能 Figure 59. CPHA = 时 SPI 的 传 输 格 式 起 始 沿 结 束 沿 SPI 模 式 CPOL =, CPHA = 采 样 ( 上 升 沿 ) 设 置 ( 下 降 沿 ) CPOL =, CPHA = 设 置 ( 上 升 沿 ) 采 样 ( 下 降 沿 ) CPOL =, CPHA = 采 样 ( 下 降 沿 ) 设 置 ( 上 升 沿 ) 2 CPOL =, CPHA = 设 置 ( 下 降 沿 ) 采 样 ( 上 升 沿 ) 3 SCK (CPOL = ) mode SCK (CPOL = ) mode 2 SAMPLE I MOSI/MISO CHANGE MOSI PIN CHANGE MISO PIN SS MSB first (DORD = ) LSB first (DORD = ) MSB LSB Bit 6 Bit Bit 5 Bit 2 Bit 4 Bit 3 Bit 3 Bit 4 Bit 2 Bit 5 Bit Bit 6 LSB MSB Figure 6. CPHA = 时 SPI 的 传 输 格 式 SCK (CPOL = ) mode SCK (CPOL = ) mode 3 SAMPLE I MOSI/MISO CHANGE MOSI PIN CHANGE MISO PIN SS MSB first (DORD = ) LSB first (DORD = ) MSB LSB Bit 6 Bit Bit 5 Bit 2 Bit 4 Bit 3 Bit 3 Bit 4 Bit 2 Bit 5 Bit Bit 6 LSB MSB 22 ATmega8(L)
ATmega8(L) USART 通 用 同 步 和 异 步 串 行 接 收 器 和 转 发 器 (USART) 是 一 个 高 度 灵 活 的 串 行 通 讯 设 备 主 要 特 点 为 : 全 双 工 操 作 ( 独 立 的 串 行 接 收 和 发 送 寄 存 器 ) 异 步 或 同 步 操 作 主 机 或 从 机 提 供 时 钟 的 同 步 操 作 高 精 度 的 波 特 率 发 生 器 支 持 5, 6, 7, 8, 或 9 个 数 据 位 和 个 或 2 个 停 止 位 硬 件 支 持 的 奇 偶 校 验 操 作 数 据 过 速 检 测 帧 错 误 检 测 噪 声 滤 波, 包 括 错 误 的 起 始 位 检 测, 以 及 数 字 低 通 滤 波 器 三 个 独 立 的 中 断 : 发 送 结 束 中 断, 发 送 数 据 寄 存 器 空 中 断, 以 及 接 收 结 束 中 断 多 处 理 器 通 讯 模 式 倍 速 异 步 通 讯 模 式 综 述 Figure 6 为 USART 的 简 化 框 图 CPU 可 以 访 问 的 I/O 寄 存 器 和 I/O 引 脚 以 粗 体 表 示 () Figure 6. USART 方 框 图 Clock Generator UBRR[H:L] OSC BAUD RATE GENERATOR SYNC LOGIC PIN CONTROL XCK Transmitter DATABUS UDR (Transmit) TRANSMIT SHIFT REGISTER PARITY GENERATOR TX CONTROL PIN CONTROL Receiver TxD CLOCK RECOVERY RX CONTROL RECEIVE SHIFT REGISTER DATA RECOVERY PIN CONTROL RxD UDR (Receive) PARITY CHECKER UCSRA UCSRB UCSRC Note:. 请 参 考 P 2 引 脚 配 置 P 6Table 3 与 P 6Table 29 了 解 USART 的 引 脚 分 布 虚 线 框 将 USART 分 为 了 三 个 主 要 部 分 : 时 钟 发 生 器, 发 送 器 和 接 收 器 控 制 寄 存 器 由 三 个 单 元 共 享 时 钟 发 生 器 包 含 同 步 逻 辑, 通 过 它 将 波 特 率 发 生 器 及 为 从 机 同 步 操 作 所 使 用 23
的 外 部 输 入 时 钟 同 步 起 来 XCK ( 发 送 器 时 钟 ) 引 脚 只 用 于 同 步 传 输 模 式 发 送 器 包 括 一 个 写 缓 冲 器, 串 行 移 位 寄 存 器, 奇 偶 发 生 器 以 及 处 理 不 同 的 帧 格 式 所 需 的 控 制 逻 辑 写 缓 冲 器 可 以 保 持 连 续 发 送 数 据 而 不 会 在 数 据 帧 之 间 引 入 延 迟 由 于 接 收 器 具 有 时 钟 和 数 据 恢 复 单 元, 它 是 USART 模 块 中 最 复 杂 的 恢 复 单 元 用 于 异 步 数 据 的 接 收 除 了 恢 复 单 元, 接 收 器 还 包 括 奇 偶 校 验, 控 制 逻 辑, 移 位 寄 存 器 和 一 个 两 级 接 收 缓 冲 器 UDR 接 收 器 支 持 与 发 送 器 相 同 的 帧 格 式, 而 且 可 以 检 测 帧 错 误, 数 据 过 速 和 奇 偶 校 验 错 误 AVR USART 和 AVR UART 兼 容 性 时 钟 产 生 USART 在 如 下 方 面 与 AVR UART 完 全 兼 容 : 所 有 USART 寄 存 器 的 位 定 义 波 特 率 发 生 器 发 送 器 操 作 发 送 缓 冲 器 的 功 能 接 收 器 操 作 然 而, 接 收 器 缓 冲 器 有 两 个 方 面 的 改 进, 在 某 些 特 殊 情 况 下 会 影 响 兼 容 性 : 增 加 了 一 个 缓 冲 器 两 个 缓 冲 器 的 操 作 好 象 是 一 个 循 环 的 FIFO 因 此 对 于 每 个 接 收 到 的 数 据 只 能 读 一 次! 更 重 要 的 是 错 误 标 志 FE 和 DOR, 以 及 第 9 个 数 据 位 RXB8 与 数 据 一 起 存 放 于 接 收 缓 冲 器 因 此 必 须 在 读 取 UDR 寄 存 器 之 前 访 问 状 态 标 志 位 否 则 将 丢 失 错 误 状 态 接 收 移 位 寄 存 器 可 以 作 为 第 三 级 缓 冲 在 两 个 缓 冲 器 都 没 有 空 的 时 候, 数 据 可 以 保 存 于 串 行 移 位 寄 存 器 之 中 ( 参 见 Figure 6), 直 到 检 测 到 新 的 起 始 位 从 而 增 强 了 USART 抵 抗 数 据 过 速 (DOR) 的 能 力 下 面 的 控 制 位 的 名 称 做 了 改 动, 但 其 功 能 和 在 寄 存 器 中 的 位 置 并 没 有 改 变 : CHR9 改 为 UCSZ2 OR 改 为 DOR 时 钟 产 生 逻 辑 为 发 送 器 和 接 收 器 产 生 基 础 时 钟 USART 支 持 4 种 模 式 的 时 钟 : 正 常 的 异 步 模 式, 倍 速 的 异 步 模 式, 主 机 同 步 模 式, 以 及 从 机 同 步 模 式 USART 控 制 位 UMSEL 和 状 态 寄 存 器 C (UCSRC) 用 于 选 择 异 步 模 式 和 同 步 模 式 倍 速 模 式 ( 只 适 用 于 异 步 模 式 ) 受 控 于 UCSRA 寄 存 器 的 U2X 使 用 同 步 模 式 (UMSEL = ) 时,XCK 的 数 据 方 向 寄 存 器 (DDR_XCK) 决 定 时 钟 源 是 由 内 部 产 生 ( 主 机 模 式 ) 还 是 由 外 部 生 产 ( 从 机 模 式 ) 仅 在 同 步 模 式 下 XCK 有 效 Figure 62 为 时 钟 产 生 逻 辑 的 框 图 24 ATmega8(L)
ATmega8(L) Figure 62. 时 钟 产 生 逻 辑 框 图 UBRR fosc U2X Prescaling Down-Counter UBRR+ / 2 / 4 / 2 OSC DDR_XCK txclk XCK Pin xcki xcko Sync Register Edge Detector UMSEL DDR_XCK UCPOL rxclk 信 号 说 明 : txclk 发 送 器 时 钟 ( 内 部 信 号 ) rxclk 接 收 器 基 础 时 钟 ( 内 部 信 号 ) xcki XCK 引 脚 输 入 ( 内 部 信 号 ), 用 于 同 步 从 机 操 作 xcko 输 出 到 XCK 引 脚 的 时 钟 ( 内 部 信 号 ), 用 于 同 步 主 机 操 作 fosc XTAL 频 率 ( 系 统 时 钟 ) 片 内 时 钟 产 生 - 波 特 率 发 生 器 内 部 时 钟 用 于 异 步 模 式 与 同 步 主 机 模 式, 请 参 见 Figure 62 USART 的 波 特 率 寄 存 器 UBRR 和 降 序 计 数 器 相 连 接, 一 起 构 成 可 编 程 的 预 分 频 器 或 波 特 率 发 生 器 降 序 计 数 器 对 系 统 时 钟 计 数, 当 其 计 数 到 零 或 UBRRL 寄 存 器 被 写 时, 会 自 动 装 入 UBRR 寄 存 器 的 值 当 计 数 到 零 时 产 生 一 个 时 钟, 该 时 钟 作 为 波 特 率 发 生 器 的 输 出 时 钟, 输 出 时 钟 的 频 率 为 f osc /(UBRR+) 发 生 器 对 波 特 率 发 生 器 的 输 出 时 钟 进 行 2 8 或 6 的 分 频, 具 体 情 况 取 决 于 工 作 模 式 波 特 率 发 生 器 的 输 出 被 直 接 用 于 接 收 器 与 数 据 恢 复 单 元 数 据 恢 复 单 元 使 用 了 一 个 有 2 8 或 6 个 状 态 的 状 态 机, 具 体 状 态 数 由 UMSEL U2X 与 DDR_XCK 位 设 定 的 工 作 模 式 决 定 Table 52 给 出 了 计 算 波 特 率 ( 位 / 秒 ) 以 及 计 算 每 一 种 使 用 内 部 时 钟 源 工 作 模 式 的 UBRR 值 的 公 式 Table 52. 波 特 率 计 算 公 式 使 用 模 式 异 步 正 常 模 式 (U2X = ) 异 步 倍 速 模 式 (U2X = ) 同 步 主 机 模 式 Equation for Calculating Baud Rate () Note:. 波 特 率 定 义 为 每 秒 的 位 传 输 速 度 (bps) f OSC BAUD = --------------------------------------- UBRR = 6( UBRR + ) f OSC BAUD = ------------------------------------ UBRR = 8( UBRR + ) f OSC BAUD = ------------------------------------ UBRR = 2( UBRR + ) Equation for Calculating UBRR Value f OSC ----------------------- 6BAUD f OSC -------------------- 8BAUD f OSC -------------------- 2BAUD 25
BAUD 波 特 率 ( bps) f OSC 系 统 时 钟 频 率 UBRR UBRRH 与 UBRRL 的 数 值 (-495) Table 6 给 出 了 在 某 些 系 统 时 钟 频 率 下 对 应 的 UBRR 数 值 倍 速 工 作 模 式 (U2X) 通 过 设 定 UCSRA 寄 存 器 的 U2X 可 以 使 传 输 速 率 加 倍 该 位 只 对 异 步 工 作 模 式 有 效 当 工 作 在 同 步 模 式 时, 设 置 该 位 为 " 设 置 该 位 把 波 特 率 分 频 器 的 分 频 值 从 6 降 到 8, 使 异 步 通 信 的 传 输 速 率 加 倍 此 时 接 收 器 只 使 用 一 半 的 采 样 数 对 数 据 进 行 采 样 及 时 钟 恢 复, 因 此 在 该 模 式 下 需 要 更 精 确 的 系 统 时 钟 与 更 精 确 的 波 特 率 设 置 发 送 器 则 没 有 这 个 要 求 外 部 时 钟 同 步 从 机 操 作 模 式 由 外 部 时 钟 驱 动, 如 Figure 62 所 示 输 入 到 XCK 引 脚 的 外 部 时 钟 由 同 步 寄 存 器 进 行 采 样, 用 以 提 高 稳 定 性 同 步 寄 存 器 的 输 出 通 过 一 个 边 沿 检 测 器, 然 后 应 用 于 发 送 器 与 接 收 器 这 一 过 程 引 入 了 两 个 CPU 时 钟 周 期 的 延 时, 因 此 外 部 XCK 的 最 大 时 钟 频 率 由 以 下 公 式 限 制 : f OSC f XCK < ------------ 4 要 注 意 f osc 由 系 统 时 钟 的 稳 定 性 决 定, 为 了 防 止 因 频 率 漂 移 而 丢 失 数 据, 建 议 保 留 足 够 的 裕 量 26 ATmega8(L)
ATmega8(L) 同 步 时 钟 操 作 使 用 同 步 模 式 时 (UMSEL = )XCK 引 脚 被 用 于 时 钟 输 入 ( 从 机 模 式 ) 或 时 钟 输 出 ( 主 机 模 式 ) 时 钟 的 边 沿 数 据 的 采 样 与 数 据 的 变 化 之 间 的 关 系 的 基 本 规 律 是 : 在 改 变 数 据 输 出 端 TxD 的 XCK 时 钟 的 相 反 边 沿 对 数 据 输 入 端 RxD 进 行 采 样 Figure 63. 同 步 模 式 时 的 XCK 时 序 UCPOL = XCK RxD / TxD Sample UCPOL = XCK RxD / TxD Sample UCRSC 寄 存 器 的 UCPOL 位 确 定 使 用 XCK 时 钟 的 哪 个 边 沿 对 数 据 进 行 采 样 和 改 变 输 出 数 据 如 Figure 63 所 示, 当 UCPOL= 时, 在 XCK 的 上 升 沿 改 变 输 出 数 据, 在 XCK 的 下 降 沿 进 行 数 据 采 样 ; 当 UCPOL= 时, 在 XCK 的 下 降 沿 改 变 输 出 数 据, 在 XCK 的 上 升 沿 进 行 数 据 采 样 帧 格 式 串 行 数 据 帧 由 数 据 字 加 上 同 步 位 ( 开 始 位 与 停 止 位 ) 以 及 用 于 纠 错 的 奇 偶 校 验 位 构 成 USART 接 受 以 下 3 种 组 合 的 数 据 帧 格 式 : 个 起 始 位 5 6 7 8 或 9 个 数 据 位 无 校 验 位 奇 校 验 或 偶 校 验 位 或 2 个 停 止 位 数 据 帧 以 起 始 位 开 始 ; 紧 接 着 是 数 据 字 的 最 低 位, 数 据 字 最 多 可 以 有 9 个 数 据 位, 以 数 据 的 最 高 位 结 束 如 果 使 能 了 校 验 位, 校 验 位 将 紧 接 着 数 据 位, 最 后 是 结 束 位 当 一 个 完 整 的 数 据 帧 传 输 后, 可 以 立 即 传 输 下 一 个 新 的 数 据 帧, 或 使 传 输 线 处 于 空 闲 状 态 Figure 64 所 示 为 可 能 的 数 据 帧 结 构 组 合 括 号 中 的 位 是 可 选 的 Figure 64. 帧 格 式 FRAME (IDLE) St 2 3 4 [5] [6] [7] [8] [P] Sp [Sp2] (St / IDLE) St 起 始 位, 总 是 为 低 电 平 (n) 数 据 位 ( ~ 8) P 校 验 位, 可 以 为 奇 校 验 或 偶 校 验 Sp 停 止 位, 总 是 为 高 电 平 IDLE 通 讯 线 上 没 有 数 据 传 输 (RxD 或 TxD), 线 路 空 闲 时 必 须 为 高 电 平 数 据 帧 的 结 构 由 UCSRB 和 UCSRC 寄 存 器 中 的 UCSZ2: UPM: USBS 设 定 接 收 与 发 送 使 用 相 同 的 设 置 设 置 的 任 何 改 变 都 可 能 破 坏 正 在 进 行 的 数 据 传 送 与 接 收 27
USART 的 字 长 位 UCSZ2: 确 定 了 数 据 帧 的 数 据 位 数 ; 校 验 模 式 位 UPM: 用 于 使 能 与 决 定 校 验 的 类 型 ; USBS 位 设 置 帧 有 一 位 或 两 位 结 束 位 接 收 器 忽 略 第 二 个 停 止 位, 因 此 帧 错 误 (FE) 只 在 第 一 个 结 束 位 为 " 时 被 检 测 到 校 验 位 的 计 算 USART 的 初 始 化 校 验 位 的 计 算 是 对 数 据 的 各 个 位 进 行 异 或 运 算 如 果 选 择 了 奇 校 验, 则 异 或 结 果 还 需 要 取 反 校 验 位 与 数 据 位 的 关 系 如 下 : P even = d n d 3 d 2 d d P odd = d n d 3 d 2 d d P even P odd d n 偶 校 验 结 果 奇 校 验 位 结 果 第 n 个 数 据 位 校 验 位 处 于 最 后 一 个 数 据 位 与 第 一 个 停 止 位 之 间 进 行 通 信 之 前 首 先 要 对 USART 进 行 初 始 化 初 始 化 过 程 通 常 包 括 波 特 率 的 设 定, 帧 结 构 的 设 定, 以 及 根 据 需 要 使 能 接 收 器 或 发 送 器 对 于 中 断 驱 动 的 USART 操 作, 在 初 始 化 时 首 先 要 清 零 全 局 中 断 标 志 位 ( 全 局 中 断 被 屏 蔽 ) 重 新 改 变 USART 的 设 置 应 该 在 没 有 数 据 传 输 的 情 况 下 进 行 TXC 标 志 位 可 以 用 来 检 验 一 个 数 据 帧 的 发 送 是 否 已 经 完 成, RXC 标 志 位 可 以 用 来 检 验 接 收 缓 冲 器 中 是 否 还 有 数 据 未 读 出 在 每 次 发 送 数 据 之 前 ( 在 写 发 送 数 据 寄 存 器 UDR 前 )TXC 标 志 位 必 须 清 零 以 下 是 USART 初 始 化 程 序 示 例 例 程 采 用 了 轮 询 ( 中 断 被 禁 用 ) 的 异 步 操 作, 而 且 帧 结 构 是 固 定 的 波 特 率 作 为 函 数 参 数 给 出 在 汇 编 程 序 里 波 特 率 参 数 保 存 于 寄 存 器 r7:r6 当 写 入 UCSRC 寄 存 器 时, 由 于 UBRRH 与 UCSRC 共 用 I/O 地 址,URSEL 位 (MSB) 必 须 置 位 28 ATmega8(L)
ATmega8(L) () 汇 编 代 码 例 程 USART_Init: ; 设 置 波 特 率 out UBRRH, r7 out UBRRL, r6 ; 接 收 器 与 发 送 器 使 能 ldi r6, (<<RXEN) (<<TXEN) out UCSRB,r6 ; 设 置 帧 格 式 : 8 个 数 据 位, 2 个 停 止 位 ldi r6, (<<URSEL) (<<USBS) (3<<UCSZ) out UCSRC,r6 ret C 代 码 例 程 () void USART_Init( unsigned int baud ) { /* 设 置 波 特 率 */ UBRRH = (unsigned char)(baud>>8); UBRRL = (unsigned char)baud; /* 接 收 器 与 发 送 器 使 能 */ UCSRB = (<<RXEN) (<<TXEN); /* 设 置 帧 格 式 : 8 个 数 据 位, 2 个 停 止 位 */ UCSRC = (<<URSEL) (<<USBS) (3<<UCSZ); } Note:. 本 代 码 假 定 已 经 包 含 了 合 适 的 头 文 件 更 高 级 的 初 始 化 程 序 可 将 帧 格 式 作 为 参 数 禁 止 中 断 等 等 然 而 许 多 应 用 程 序 使 用 固 定 的 波 特 率 与 控 制 寄 存 器 此 时 初 始 化 代 码 可 以 直 接 放 在 主 程 序 中, 或 与 其 它 I/O 模 块 的 初 始 化 代 码 组 合 到 一 起 29
数 据 发 送 - USART 发 送 器 发 送 5 到 8 位 数 据 位 的 帧 置 位 UCSRB 寄 存 器 的 发 送 允 许 位 TXEN 将 使 能 USART 的 数 据 发 送 使 能 后 TxD 引 脚 的 通 用 I/O 功 能 即 被 USART 功 能 所 取 代, 成 为 发 送 器 的 串 行 输 出 引 脚 发 送 数 据 之 前 要 设 置 好 波 特 率 工 作 模 式 与 帧 结 构 如 果 使 用 同 步 发 送 模 式, 施 加 于 XCK 引 脚 上 的 时 钟 信 号 即 为 数 据 发 送 的 时 钟 将 需 要 发 送 的 数 据 加 载 到 发 送 缓 存 器 将 启 动 数 据 发 送 加 载 过 程 即 为 CPU 对 UDR 寄 存 器 的 写 操 作 当 移 位 寄 存 器 可 以 发 送 新 一 帧 数 据 时, 缓 冲 的 数 据 将 转 移 到 移 位 寄 存 器 当 移 位 寄 存 器 处 于 空 闲 状 态 ( 没 有 正 在 进 行 的 数 据 传 输 ), 或 前 一 帧 数 据 的 最 后 一 个 停 止 位 传 送 结 束, 它 将 加 载 新 的 数 据 一 旦 移 位 寄 存 器 加 载 了 新 的 数 据, 就 会 按 照 设 定 的 波 特 率 完 成 数 据 的 发 送 以 下 程 序 给 出 一 个 对 UDRE 标 志 采 用 轮 询 方 式 发 送 数 据 的 例 子 当 发 送 的 数 据 少 于 8 位 时, 写 入 UDR 相 应 位 置 的 高 几 位 将 被 忽 略 当 然, 执 行 本 段 代 码 之 前 首 先 要 初 始 化 USART 在 汇 编 代 码 中 要 发 送 的 数 据 存 放 于 R6 () 汇 编 代 码 例 程 USART_Transmit: ; 等 待 发 送 缓 冲 器 为 空 sbis UCSRA,UDRE rjmp USART_Transmit ; 将 数 据 放 入 缓 冲 器, 发 送 数 据 out UDR,r6 ret () C 代 码 例 程 void USART_Transmit( unsigned char data ) { /* 等 待 发 送 缓 冲 器 为 空 */ while (!( UCSRA & (<<UDRE)) ) ; /* 将 数 据 放 入 缓 冲 器, 发 送 数 据 */ UDR = data; } Note:. 本 代 码 假 定 已 经 包 含 了 合 适 的 头 文 件 这 个 程 序 只 是 在 载 入 新 的 要 发 送 的 数 据 前, 通 过 检 测 UDRE 标 志 等 待 发 送 缓 冲 器 为 空 如 果 使 用 了 数 据 寄 存 器 空 中 断, 则 数 据 写 入 缓 冲 器 的 操 作 在 中 断 程 序 中 进 行 3 ATmega8(L)
ATmega8(L) 发 送 9 位 数 据 位 的 帧 如 果 发 送 9 位 数 据 的 数 据 帧 (UCSZ = 7), 应 先 将 数 据 的 第 9 位 写 入 寄 存 器 UCSRB 的 TXB8, 然 后 再 将 低 8 位 数 据 写 入 发 送 数 据 寄 存 器 UDR 以 下 程 序 给 出 发 送 9 位 数 据 的 数 据 帧 例 子 在 汇 编 代 码 中 要 发 送 的 数 据 存 放 在 R7:R6 寄 存 器 中 () 汇 编 代 码 例 程 USART_Transmit: ; 等 待 发 送 缓 冲 器 为 空 sbis UCSRA,UDRE rjmp USART_Transmit ; 将 第 9 位 从 r7 中 复 制 到 TXB8 cbi UCSRB,TXB8 sbrc r7, sbi UCSRB,TXB8 ; 将 低 8 位 数 据 放 入 缓 冲 器, 发 送 数 据 out UDR,r6 ret C 代 码 例 程 () void USART_Transmit( unsigned int data ) { /* 等 待 发 送 缓 冲 器 为 空 */ while (!( UCSRA & (<<UDRE))) ) ; /* 将 第 9 位 复 制 到 TXB8 */ UCSRB &= ~(<<TXB8); if ( data & x ) UCSRB = (<<TXB8); /* 将 数 据 放 入 缓 冲 器, 发 送 数 据 */ UDR = data; } Note:. 这 些 函 数 均 为 通 用 函 数 如 果 UCSRB 的 内 容 在 应 用 中 是 固 定 的, 函 数 可 以 进 一 步 优 化 例 如, 初 始 化 后 只 使 用 UCSRB 寄 存 器 的 TXB8 位 第 9 位 数 据 在 多 机 通 信 中 用 于 表 示 地 址 帧, 在 同 步 通 信 中 可 以 用 于 协 议 处 理 传 送 标 志 位 与 中 断 USART 发 送 器 有 两 个 标 志 位 :USART 数 据 寄 存 器 空 标 志 UDRE 及 传 输 结 束 标 志 TXC, 两 个 标 志 位 都 可 以 产 生 中 断 数 据 寄 存 器 空 UDRE 标 志 位 表 示 发 送 缓 冲 器 是 否 可 以 接 受 一 个 新 的 数 据 该 位 在 发 送 缓 冲 器 空 时 被 置 " ; 当 发 送 缓 冲 器 包 含 需 要 发 送 的 数 据 时 清 零 为 与 将 来 的 器 件 兼 容, 写 UCSRA 寄 存 器 时 该 位 要 写 " 当 UCSRB 寄 存 器 中 的 数 据 寄 存 器 空 中 断 使 能 位 UDRIE 为 " 时, 只 要 UDRE 被 置 位 ( 且 全 局 中 断 使 能 ), 就 将 产 生 USART 数 据 寄 存 器 空 中 断 请 求 对 寄 存 器 UDR 执 行 写 操 作 将 清 零 UDRE 当 采 用 中 断 方 式 的 传 输 数 据 时, 在 数 据 寄 存 器 空 中 断 服 务 程 序 中 必 须 写 一 个 新 的 数 据 到 UDR 以 清 零 UDRE ; 或 者 是 禁 止 数 据 寄 存 器 空 中 断 否 则 一 旦 该 中 断 程 序 结 束, 一 个 新 的 中 断 将 再 次 产 生 当 整 个 数 据 帧 移 出 发 送 移 位 寄 存 器, 同 时 发 送 缓 冲 器 中 又 没 有 新 的 数 据 时, 发 送 结 束 标 志 TXC 置 位 TXC 在 传 送 结 束 中 断 执 行 时 自 动 清 零, 也 可 在 该 位 写 " 来 清 零 TXC 标 志 位 对 于 采 用 如 RS-485 标 准 的 半 双 工 通 信 接 口 十 分 有 用 在 这 些 应 用 里, 一 旦 传 送 完 毕, 应 用 程 序 必 须 释 放 通 信 总 线 并 进 入 接 收 状 态 3
当 UCSRB 上 的 发 送 结 束 中 断 使 能 位 TXCIE 与 全 局 中 断 使 能 位 均 被 置 为 " 时, 随 着 TXC 标 志 位 的 置 位, USART 发 送 结 束 中 断 将 被 执 行 一 旦 进 入 中 断 服 务 程 序, TXC 标 志 位 即 被 自 动 清 零, 中 断 处 理 程 序 不 必 执 行 TXC 清 零 操 作 奇 偶 校 验 产 生 电 路 禁 止 发 送 器 奇 偶 校 验 产 生 电 路 为 串 行 数 据 帧 生 成 相 应 的 校 验 位 校 验 位 使 能 (UPM = ) 时, 发 送 控 制 逻 辑 电 路 会 在 数 据 的 最 后 一 位 与 第 一 个 停 止 位 之 间 插 入 奇 偶 校 验 位 TXEN 清 零 后, 只 有 等 到 所 有 的 数 据 发 送 完 成 后 发 送 器 才 能 够 真 正 禁 止, 即 发 送 移 位 寄 存 器 与 发 送 缓 冲 寄 存 器 中 没 有 要 传 送 的 数 据 发 送 器 禁 止 后,TxD 引 脚 恢 复 其 通 用 I/O 功 能 32 ATmega8(L)
ATmega8(L) 数 据 接 收 - USART 接 收 器 以 5 到 8 个 数 据 位 的 方 式 接 收 数 据 帧 置 位 UCSRB 寄 存 器 的 接 收 允 许 位 (RXEN) 即 可 启 动 USART 接 收 器 接 收 器 使 能 后 RxD 的 普 通 引 脚 功 能 被 USART 功 能 所 取 代, 成 为 接 收 器 的 串 行 输 入 口 进 行 数 据 接 收 之 前 首 先 要 设 置 好 波 特 率 操 作 模 式 及 帧 格 式 如 果 使 用 同 步 操 作, XCK 引 脚 上 的 时 钟 被 用 为 传 输 时 钟 一 旦 接 收 器 检 测 到 一 个 有 效 的 起 始 位, 便 开 始 接 收 数 据 起 始 位 后 的 每 一 位 数 据 都 将 以 所 设 定 的 波 特 率 或 XCK 时 钟 进 行 接 收, 直 到 收 到 一 帧 数 据 的 第 一 个 停 止 位 接 收 到 的 数 据 被 送 入 接 收 移 位 寄 存 器 第 二 个 停 止 位 会 被 接 收 器 忽 略 接 收 到 第 一 个 停 止 位 后, 接 收 移 位 寄 存 器 就 包 含 了 一 个 完 整 的 数 据 帧 这 时 移 位 寄 存 器 中 的 内 容 将 被 转 移 到 接 收 缓 冲 器 中 通 过 读 取 UDR 就 可 以 获 得 接 收 缓 冲 器 的 内 容 的 以 下 程 序 给 出 一 个 对 RXC 标 志 采 用 轮 询 方 式 接 收 数 据 的 例 子 当 数 据 帧 少 于 8 位 时, 从 UDR 读 取 的 相 应 的 高 几 位 为 当 然, 执 行 本 段 代 码 之 前 首 先 要 初 始 化 USART 汇 编 代 码 例 子 () USART_Receive: ; 等 待 接 收 数 据 sbis UCSRA, RXC rjmp USART_Receive ; 从 缓 冲 器 中 获 取 并 返 回 数 据 in r6, UDR ret () C 代 码 例 子 unsigned char USART_Receive( void ) { /* 等 待 接 收 数 据 */ while (!(UCSRA & (<<RXC)) ) ; /* 从 缓 冲 器 中 获 取 并 返 回 数 据 */ return UDR; } Note:. 本 代 码 假 定 已 经 包 含 了 相 应 的 头 文 件 在 读 缓 冲 器 并 返 回 之 前, 函 数 通 过 检 查 RXC 标 志 来 等 待 数 据 送 入 接 收 缓 冲 器 33
以 9 个 数 据 位 的 方 式 接 收 帧 如 果 设 定 了 9 位 数 据 的 数 据 帧 (UCSZ=7), 在 从 UDR 读 取 低 8 位 之 前 必 须 首 先 读 取 寄 存 器 UCSRB 的 RXB8 以 获 得 第 9 位 数 据 这 个 规 则 同 样 适 用 于 状 态 标 志 位 FE DOR 及 UPE 状 态 通 过 读 取 UCSRA 获 得, 数 据 通 过 UDR 获 得 读 取 UDR 存 储 单 元 会 改 变 接 收 缓 冲 器 FIFO 的 状 态, 进 而 改 变 同 样 存 储 在 FIFO 中 的 TXB8 FE DOR 及 UPE 位 接 下 来 的 代 码 示 例 展 示 了 一 个 简 单 的 USART 接 收 函 数, 说 明 如 何 处 理 9 位 数 据 及 状 态 位 () 汇 编 代 码 例 程 34 ATmega8(L) USART_Receive: ; 等 待 接 收 数 据 sbis rjmp UCSRA, RXC USART_Receive ; 从 缓 冲 器 中 获 得 状 态 第 9 位 及 数 据 in in in r8, UCSRA r7, UCSRB r6, UDR ; 如 果 出 错, 返 回 - andi breq ldi ldi r8,(<<fe) (<<DOR) (<<PE) USART_ReceiveNoError r7, HIGH(-) r6, LOW(-) USART_ReceiveNoError: ; 过 滤 第 9 位 数 据, 然 后 返 回 lsr andi ret Note:. 本 代 码 假 定 已 经 包 含 了 相 应 的 头 文 件 上 述 例 子 在 进 行 任 何 计 算 之 前 将 所 有 的 I/O 寄 存 器 的 内 容 读 到 寄 存 器 文 件 中 这 种 方 法 优 化 了 对 接 收 缓 冲 器 的 利 用 它 尽 可 能 早 地 释 放 了 缓 冲 器 以 接 收 新 的 数 据 接 收 结 束 标 志 及 中 断 USART 接 收 器 有 一 个 标 志 用 来 指 明 接 收 器 的 状 态 r7 () C 代 码 例 程 r7, x unsigned int USART_Receive( void ) { unsigned char status, resh, resl; /* 等 待 接 收 数 据 */ while (!(UCSRA & (<<RXC)) ) ; /* 从 缓 冲 器 中 获 得 状 态 第 9 位 及 数 据 */ /* from buffer */ status = UCSRA; resh = UCSRB; resl = UDR; /* 如 果 出 错, 返 回 - */ if ( status & (<<FE) (<<DOR) (<<PE) ) return -; /* 过 滤 第 9 位 数 据, 然 后 返 回 */ resh = (resh >> ) & x; return ((resh << 8) resl); }
ATmega8(L) 接 收 结 束 标 志 (RXC) 用 来 说 明 接 收 缓 冲 器 中 是 否 有 未 读 出 的 数 据 当 接 收 缓 冲 器 中 有 未 读 出 的 数 据 时, 此 位 为, 当 接 收 缓 冲 器 空 时 为 ( 即 不 包 含 未 读 出 的 数 据 ) 如 果 接 收 器 被 禁 止 (RXEN = ), 接 收 缓 冲 器 会 被 刷 新, 从 而 使 RXC 清 零 置 位 UCSRB 的 接 收 结 束 中 断 使 能 位 (RXCIE) 后, 只 要 RXC 标 志 置 位 ( 且 全 局 中 断 只 能 ) 就 会 产 生 USART 接 收 结 束 中 断 使 用 中 断 方 式 进 行 数 据 接 收 时, 数 据 接 收 结 束 中 断 服 务 程 序 程 序 必 须 从 UDR 读 取 数 据 以 清 RXC 标 志, 否 则 只 要 中 断 处 理 程 序 一 结 束, 一 个 新 的 中 断 就 会 产 生 接 收 器 错 误 标 志 USART 接 收 器 有 三 个 错 误 标 志 :: 帧 错 误 (FE) 数 据 溢 出 (DOR) 及 奇 偶 校 验 错 (UPE) 它 们 都 位 于 寄 存 器 UCSRA 错 误 标 志 与 数 据 帧 一 起 保 存 在 接 收 缓 冲 器 中 由 于 读 取 UDR 会 改 变 缓 冲 器, UCSRA 的 内 容 必 须 在 读 接 收 缓 冲 器 (UDR) 之 前 读 入 错 误 标 志 的 另 一 个 同 一 性 是 它 们 都 不 能 通 过 软 件 写 操 作 来 修 改 但 是 为 了 保 证 与 将 来 产 品 的 兼 容 性, 对 执 行 写 操 作 是 必 须 对 这 些 错 误 标 志 所 在 的 位 置 写 " 所 有 的 错 误 标 志 都 不 能 产 生 中 断 帧 错 误 标 志 (FE) 表 明 了 存 储 在 接 收 缓 冲 器 中 的 下 一 个 可 读 帧 的 第 一 个 停 止 位 的 状 态 停 止 位 正 确 ( 为 ) 则 FE 标 志 为, 否 则 FE 标 志 为 这 个 标 志 可 用 来 检 测 同 步 丢 失 传 输 中 断, 也 可 用 于 协 议 处 理 UCSRC 中 USBS 位 的 设 置 不 影 响 FE 标 志 位, 因 为 除 了 第 一 位, 接 收 器 忽 略 所 有 其 他 的 停 止 位 为 了 与 以 后 的 器 件 相 兼 容, 写 UCSRA 时 这 一 位 必 须 置 数 据 溢 出 标 志 (DOR) 表 明 由 于 接 收 缓 冲 器 满 造 成 了 数 据 丢 失 当 接 收 缓 冲 器 满 ( 包 含 了 两 个 数 据 ), 接 收 移 位 寄 存 器 又 有 数 据, 若 此 时 检 测 到 一 个 新 的 起 始 位, 数 据 溢 出 就 产 生 了 DOR 标 志 位 置 位 即 表 明 在 最 近 一 次 读 取 UDR 和 下 一 次 读 取 UDR 之 间 丢 失 了 一 个 或 更 多 的 数 据 帧 为 了 与 以 后 的 器 件 相 兼 容, 写 UCSRA 时 这 一 位 必 须 置 当 数 据 帧 成 功 地 从 移 位 寄 存 器 转 入 接 收 缓 冲 器 后, DOR 标 志 被 清 零 奇 偶 校 验 错 标 志 (PE) 指 出, 接 收 缓 冲 器 中 的 下 一 帧 数 据 在 接 收 时 有 奇 偶 错 误 如 果 不 使 能 奇 偶 校 验, 那 么 UPE 位 应 清 零 为 了 与 以 后 的 器 件 相 兼 容, 写 UCSRA 时 这 一 位 必 须 置 细 节 请 参 照 P 28 校 验 位 的 计 算 与 P 36 奇 偶 校 验 器 35
奇 偶 校 验 器 禁 止 接 收 器 刷 新 接 收 缓 冲 器 奇 偶 校 验 模 式 位 UPM 置 位 将 启 动 奇 偶 校 验 器 校 验 的 模 式 ( 偶 校 验 还 是 奇 校 验 ) 由 UPM 确 定 奇 偶 校 验 使 能 后, 校 验 器 将 计 算 输 入 数 据 的 奇 偶 并 把 结 果 与 数 据 帧 的 奇 偶 位 进 行 比 较 校 验 结 果 将 与 数 据 和 停 止 位 一 起 存 储 在 接 收 缓 冲 器 中 这 样 就 可 以 通 过 读 取 奇 偶 校 验 错 误 标 志 位 (UPE) 来 检 查 接 收 的 帧 中 是 否 有 奇 偶 错 误 如 果 下 一 个 从 接 收 缓 冲 器 中 读 出 的 数 据 有 奇 偶 错 误, 并 且 奇 偶 校 验 使 能 (UPM = ), 则 UPE 置 位 直 到 接 收 缓 冲 器 (UDR) 被 读 取, 这 一 位 一 直 有 效 与 发 送 器 对 比, 禁 止 接 收 器 即 刻 起 作 用 正 在 接 收 的 数 据 将 丢 失 禁 止 接 收 器 (RXEN 清 零 ) 后, 接 收 器 将 不 再 占 用 RxD 引 脚 ; 接 收 缓 冲 器 FIFO 也 会 被 刷 新 缓 冲 器 中 的 数 据 将 丢 失 禁 止 接 收 器 时 缓 冲 器 FIFO 被 刷 新, 缓 冲 器 被 清 空 导 致 未 读 出 的 数 据 丢 失 如 果 由 于 出 错 而 必 须 在 正 常 操 作 下 刷 新 缓 冲 器, 则 需 要 一 直 读 取 UDR 直 到 RXC 标 志 清 零 下 面 的 代 码 展 示 了 如 何 刷 新 接 收 缓 冲 器 () 汇 编 代 码 例 程 USART_Flush: sbis UCSRA, RXC ret in r6, UDR rjmp USART_Flush () C 代 码 例 程 void USART_Flush( void ) { unsigned char dummy; while ( UCSRA & (<<RXC) ) dummy = UDR; } Note:. 本 代 码 假 定 已 经 包 含 了 相 应 的 头 文 件 异 步 数 据 接 收 恢 复 异 步 时 钟 USART 有 一 个 时 钟 恢 复 单 元 和 数 据 恢 复 单 元 用 来 处 理 异 步 数 据 接 收 时 钟 恢 复 逻 辑 用 于 同 步 从 RxD 引 脚 输 入 的 异 步 串 行 数 据 和 内 部 的 波 特 率 时 钟 数 据 恢 复 逻 辑 采 集 数 据, 并 通 过 一 低 通 滤 波 器 过 滤 所 输 入 的 每 一 位 数 据, 从 而 提 高 接 收 器 的 抗 干 扰 性 能 异 步 接 收 的 工 作 范 围 依 赖 于 内 部 波 特 率 时 钟 的 精 度 帧 输 入 的 速 率 及 一 帧 所 包 含 的 位 数 时 钟 恢 复 逻 辑 将 输 入 的 串 行 数 据 帧 与 内 部 时 钟 同 步 起 来 Figure 65 展 示 了 对 输 入 数 据 帧 起 始 位 的 采 样 过 程 普 通 工 作 模 式 下 采 样 率 是 波 特 率 的 6 倍, 倍 速 工 作 模 式 下 则 为 波 特 率 的 8 倍 水 平 箭 头 表 示 由 于 采 样 而 造 成 的 同 步 的 变 化 使 用 倍 速 模 式 (U2X = ) 时 同 步 变 化 时 间 更 长 RxD 线 空 闲 ( 即 没 有 任 何 通 讯 活 动 ) 时, 采 样 值 为 Figure 65. 起 始 位 采 样 RxD IDLE START BIT Sample (U2X = ) 2 3 4 5 6 7 8 9 2 3 4 5 6 2 3 Sample (U2X = ) 2 3 4 5 6 7 8 2 36 ATmega8(L) 当 时 钟 恢 复 电 路 检 测 到 RxD 线 上 一 个 由 高 ( 空 闲 ) 到 低 ( 开 始 ) 的 电 平 跳 变 时, 起 始 位 检 测 序 列 即 被 启 动 如 图 所 示, 我 们 用 采 样 表 示 第 一 个 采 样 然 后, 时 钟 恢 复 逻 辑 用 采
ATmega8(L) 样 8 9 ( 普 通 模 式 ), 或 采 样 4 5 6( 倍 速 模 式 ), 来 判 断 是 否 接 收 到 一 个 正 确 的 起 始 位 如 果 这 三 个 采 样 中 的 两 个 或 更 多 个 是 逻 辑 高 电 平 ( 多 数 表 决 ), 起 始 位 会 被 视 为 毛 刺 噪 声 而 被 拒 绝 接 受, 接 收 器 等 待 下 一 个 由 高 到 低 的 电 平 转 换 如 果 检 测 到 一 个 有 效 的 起 始 位, 时 钟 恢 复 逻 辑 即 被 同 步 并 开 始 接 收 数 据 每 一 个 起 始 位 都 会 引 发 同 样 的 同 步 过 程 恢 复 异 步 数 据 接 收 时 钟 与 起 始 位 同 步 之 后, 数 据 恢 复 工 作 可 开 始 了 数 据 恢 复 单 元 使 用 一 个 状 态 机 来 接 收 每 一 个 数 据 位 这 个 状 态 机 在 普 通 模 式 下 具 有 6 个 状 态, 在 倍 速 模 式 下 具 有 8 个 状 态 Figure 66 演 示 了 对 数 据 位 和 奇 偶 位 的 采 样 每 个 采 样 点 都 被 赋 予 了 一 个 数 字, 这 个 数 字 等 于 数 据 恢 复 单 元 当 前 的 状 态 序 号 Figure 66. 数 据 及 奇 偶 位 的 采 样 RxD BIT n Sample (U2X = ) Sample (U2X = ) 2 3 4 5 6 7 8 9 2 3 4 5 6 2 3 4 5 6 7 8 确 定 接 收 到 的 数 据 位 的 逻 辑 电 平 的 方 法 为 多 数 表 决 法 表 决 对 象 即 为 三 个 在 数 据 位 中 心 获 得 的 采 样 为 了 强 调 这 些 采 样, 图 中 采 样 序 号 被 包 含 小 方 框 中 多 数 表 决 是 这 样 工 作 的 : 如 果 有 2 个 或 所 有 3 个 采 样 值 都 是 高 电 平, 那 么 接 收 位 就 为 逻 辑 如 果 2 个 或 所 有 3 个 采 样 值 都 是 低 电 平, 那 么 接 收 位 就 被 为 逻 辑 对 从 RxD 引 脚 输 入 的 信 号 来 说, 多 数 表 决 的 作 用 就 象 是 一 个 低 通 滤 波 数 据 恢 复 过 程 重 复 进 行, 直 到 接 收 到 一 个 完 整 的 数 据 帧 其 中 也 包 含 了 第 一 个 停 止 位 接 收 器 将 忽 略 其 他 的 停 止 位 Figure 67 说 明 了 停 止 位 的 采 样, 以 及 下 一 帧 信 号 起 始 位 最 早 可 能 出 现 的 情 况 Figure 67. 停 止 位 及 下 一 个 起 始 位 采 样 RxD STOP (A) (B) (C) Sample (U2X = ) Sample (U2X = ) 2 3 4 5 6 7 8 9 / / / 2 3 4 5 6 / 多 数 表 决 对 停 止 位 同 样 有 效 若 停 止 位 为 逻 辑, 那 么 帧 错 误 标 志 FE 置 位 如 果 电 平 再 一 次 出 现 了 从 高 到 低 的 跳 变, 说 明 紧 接 着 上 一 个 数 据 帧 来 了 新 的 数 据 帧 在 普 通 模 式 中, 第 一 个 低 电 平 的 采 样 点 可 以 发 生 在 Figure 67 的 A 点 在 倍 速 工 作 模 式 下 第 一 个 低 电 平 采 样 点 必 须 延 迟 到 B 点, C 点 则 为 完 整 停 止 位 的 结 束 位 置 对 起 始 位 的 及 早 检 测 将 影 响 接 收 器 的 工 作 范 围 异 步 工 作 范 围 接 收 器 的 工 作 范 围 取 决 于 接 收 到 的 数 据 速 率 及 内 部 波 特 率 之 间 的 不 匹 配 程 度 如 果 发 送 器 以 过 快 或 过 慢 的 比 特 率 传 输 数 据 帧, 或 者 接 收 器 内 部 产 生 的 波 特 率 没 有 相 同 的 频 率 ( 见 Table 53), 那 么 接 收 器 就 无 法 与 起 始 位 同 步 37
下 面 的 公 式 可 用 来 计 算 数 据 输 入 速 率 与 内 部 接 收 器 波 特 率 的 比 值 ( D + )S ( D + 2)S R slow = --------------------------------------------- R S + D S + S fast = ------------------------------------- F ( D + )S + S M D 字 符 长 度 及 奇 偶 位 长 度 的 总 和 (D = 5 到 位 ) S 每 一 位 的 采 样 数 普 通 模 式 下 S = 6, 倍 速 模 式 下 S = 8 S F 用 于 多 数 表 决 的 第 一 个 采 样 序 号 普 通 模 式 下 S F = 8, 倍 速 模 式 下 S F = 4 S M 用 于 多 数 表 决 的 中 间 采 样 序 号 普 通 模 式 下 S M = 9, 倍 速 模 式 下 S M =5 R slow 是 可 接 受 的 最 慢 的 数 据 输 入 速 率 与 接 收 器 波 特 率 的 比 值 ; R fast 是 可 接 受 的 最 快 的 数 据 输 入 速 率 与 接 收 器 波 特 率 的 比 值 Table 53 和 Table 54 列 出 了 容 许 的 最 大 接 收 器 波 特 率 误 差 需 要 注 意 的 是, 普 通 模 式 下 波 特 率 允 许 有 更 大 的 变 化 范 围 Table 53. 普 通 模 式 下 推 荐 的 最 大 接 收 器 波 特 率 误 差 范 围 (U2X = ) D # ( 数 据 + 奇 偶 位 ) R slow % R fast % 最 大 的 总 误 差 (%) 推 荐 的 最 大 接 收 器 误 差 (%) 5 93,2 6,67 +6.67/-6.8 ± 3. 6 94,2 5,79 +5.79/-5.88 ± 2. 7 94,8 5, +5./-5.9 ± 2. 8 95,36 4,58 +4.58/-4.54 ± 2. 9 95,8 4,4 +4.4/-4.9 ±.5 96,7 3,78 +3.78/-3.83 ±.5 Table 54. 速 率 模 式 下 推 荐 的 最 大 接 收 器 波 特 率 误 差 范 围 (U2X = ) D # 数 据 + 奇 偶 位 R slow (%) R fast (%) 最 大 的 总 误 差 (%) 推 荐 的 最 大 接 收 器 误 差 (%) 5 94,2 5,66 +5.66/-5.88 ± 2.5 6 94,92 4,92 +4.92/-5.8 ± 2. 7 95,52 4,35 +4.35/-4.48 ±.5 8 96, 3,9 +3.9/-4. ±.5 9 96,39 3,53 +3.53/-3.6 ±.5 96,7 3,23 +3.23/-3.3 ±. 上 述 推 荐 的 最 大 接 收 波 特 率 误 差 是 在 假 定 接 收 器 和 发 送 器 对 最 大 总 误 差 具 有 同 等 贡 献 的 前 提 下 得 出 的 产 生 接 收 器 波 特 率 误 差 的 可 能 原 因 有 两 个 首 先, 接 收 器 系 统 时 钟 (XTAL) 的 稳 定 性 于 电 压 范 围 及 工 作 温 度 有 关 使 用 晶 振 来 产 生 系 统 时 钟 时 一 般 不 会 有 此 问 题, 但 对 于 谐 振 器 而 言, 根 据 谐 振 器 不 同 的 误 差 容 限, 系 统 时 钟 可 能 有 超 过 2% 的 偏 差 第 二 个 误 差 的 原 因 就 好 控 制 多 了 波 特 率 发 生 器 不 一 定 能 够 通 过 对 系 统 时 钟 的 分 频 得 到 恰 好 的 波 特 率 此 时 可 以 调 整 UBRR 值, 使 得 误 差 低 至 可 以 接 受 38 ATmega8(L)
ATmega8(L) 多 处 理 器 通 讯 模 式 使 用 MPCM 置 位 UCSRA 的 多 处 理 器 通 信 模 式 位 (MPCM) 可 以 对 USART 接 收 器 接 收 到 的 数 据 帧 进 行 过 滤 那 些 没 有 地 址 信 息 的 帧 将 被 忽 略, 也 不 会 存 入 接 收 缓 冲 器 在 一 个 多 处 理 器 系 统 中, 处 理 器 通 过 同 样 的 串 行 总 线 进 行 通 信, 这 种 过 滤 有 效 的 减 少 了 需 要 CPU 处 理 的 数 据 帧 的 数 量 MPCM 位 的 设 置 不 影 响 发 送 器 的 工 作, 但 在 使 用 多 处 理 器 通 信 模 式 的 系 统 中, 它 的 使 用 方 法 会 有 所 不 同 如 果 接 收 器 所 接 收 的 数 据 帧 长 度 为 5 到 8 位, 那 么 第 一 个 停 止 位 表 示 这 一 帧 包 含 的 是 数 据 还 是 地 址 信 息 如 果 接 收 器 所 接 收 的 数 据 帧 长 度 为 9 位, 那 么 由 第 9 位 (RXB8) 来 确 定 是 数 据 还 是 地 址 信 息 如 果 确 定 帧 类 型 的 位 ( 第 一 个 停 止 位 或 第 9 个 数 据 位 ) 为, 那 么 这 是 地 址 帧, 否 则 为 数 据 帧 在 多 处 理 器 通 信 模 式 下, 多 个 从 处 理 器 可 以 从 一 个 主 处 理 器 接 收 数 据 首 先 要 通 过 解 码 地 址 帧 来 确 定 所 寻 址 的 是 哪 一 个 处 理 器 如 果 寻 址 到 某 一 个 处 理 器, 它 将 正 常 接 收 后 续 的 数 据, 而 其 他 的 从 处 理 器 会 忽 略 这 些 帧 直 到 接 收 到 另 一 个 地 址 帧 对 于 一 个 作 为 主 机 的 处 理 器 来 说, 它 可 以 使 用 9 位 数 据 帧 格 式 (UCSZ = 7) 如 果 传 输 的 是 一 个 地 址 帧 (TXB8 = ) 就 将 第 9 位 (TXB8) 置, 如 果 是 一 个 数 据 帧 (TXB = ) 就 将 它 清 零 在 这 种 帧 格 式 下, 从 处 理 器 必 须 工 作 于 9 位 数 据 帧 格 式 下 面 即 为 在 多 处 理 器 通 信 模 式 下 进 行 数 据 交 换 的 步 骤 :. 所 有 从 处 理 器 都 工 作 在 多 处 理 器 通 信 模 式 (UCSRA 寄 存 器 的 MPCM 置 位 ) 2. 主 处 理 器 发 送 地 址 帧 后, 所 有 从 处 理 器 都 会 接 收 并 读 取 此 帧 从 处 理 器 UCSRA 寄 存 器 的 RXC 正 常 置 位 3. 每 一 个 从 处 理 器 都 会 读 取 UDR 寄 存 器 的 内 容 已 确 定 自 己 是 否 被 选 中 如 果 选 中, 就 清 零 UCSRA 的 MPCM 位, 否 则 它 将 等 待 下 一 个 地 址 字 节 的 到 来, 并 保 持 MPCM 为 4. 被 寻 址 的 从 处 理 器 将 接 收 所 有 的 数 据 帧, 直 到 收 到 一 个 新 的 地 址 帧 而 那 些 保 持 MPCM 位 为 的 从 处 理 器 将 忽 略 这 些 数 据 5. 被 寻 址 的 处 理 器 接 收 到 最 后 一 个 数 据 帧 后, 它 将 置 位 MPCM, 并 等 待 主 处 理 器 发 送 下 一 个 地 址 帧 然 后 第 2 步 之 后 的 步 骤 重 复 进 行 使 用 5 至 8 比 特 的 帧 格 式 是 可 以 的, 但 是 不 实 际, 因 为 接 收 器 必 须 在 使 用 n 和 n+ 帧 格 式 之 间 进 行 切 换 由 于 接 收 器 和 发 送 器 使 用 相 同 的 字 符 长 度 设 置, 这 种 设 置 使 得 全 双 工 操 作 变 得 很 困 难 如 果 使 用 5 至 8 比 特 的 帧 格 式, 发 送 器 应 该 设 置 两 个 停 止 位 (USBS = ), 其 中 的 第 一 个 停 止 位 被 用 于 判 断 帧 类 型 不 要 使 用 读 - 修 改 - 写 指 令 (SBI 和 CBI) 来 操 作 MPCM 位 MPCM 和 TXC 标 志 使 用 相 同 的 I/O 单 元, 使 用 SBI 或 CBI 指 令 可 能 会 不 小 心 将 它 清 零 39
访 问 UBRRH/ UCSRC 寄 存 器 写 访 问 UBRRH 与 寄 存 器 UCSRC 共 用 I/O 地 址 因 此 访 问 该 地 址 时 需 注 意 以 下 问 题 当 在 该 地 址 执 行 写 访 问 时, USART 寄 存 器 选 择 位 (URSEL) 控 制 被 写 入 的 寄 存 器 若 URSEL 为, 对 UBRRH 值 更 新 ; 若 URSEL 为, 对 UCSRC 设 置 更 新 下 面 代 码 给 出 如 何 访 问 这 两 个 寄 存 器 () 汇 编 代 码 例 程... ; 设 置 UBRRH 为 2 ldi r6,x2 out UBRRH,r6... ; 设 置 USBS 与 UCSZ 位 为, 且 其 余 位 为 ldi r6,(<<ursel) (<<USBS) (<<UCSZ) out UCSRC,r6... () C 代 码 例 程... /* 设 置 UBRRH 为 2*/ UBRRH = x2;... /* 设 置 USBS 与 UCSZ 位 为, 且 其 余 位 为 */ UCSRC = (<<URSEL) (<<USBS) (<<UCSZ);... Note:. 本 代 码 假 定 已 经 包 含 了 相 应 的 头 文 件 如 例 中 所 示, 对 两 寄 存 器 的 写 访 问 不 影 响 共 用 I/O 地 址 4 ATmega8(L)
ATmega8(L) 读 访 问 对 UBRRH 或 UCSRC 寄 存 器 的 读 访 问 则 较 为 复 杂 但 在 大 多 数 应 用 中, 基 本 不 需 要 读 这 些 寄 存 器 读 访 问 由 时 序 控 制 一 旦 返 回 UBRRH 寄 存 器 内 容 则 读 I/O 地 址 若 寄 存 器 地 址 在 前 一 个 系 统 时 钟 周 期 中 读 入, 当 前 时 钟 下 对 寄 存 器 的 读 入 将 返 回 UCSRC 内 容 中 注 意, 读 UCSRC 的 时 钟 序 列 为 自 动 工 作 在 读 操 作 中 的 中 断 ( 例 如 禁 止 全 局 中 断 ) 必 须 人 为 控 制 下 面 代 码 给 出 如 何 读 UCSRC 寄 存 器 内 容 () 汇 编 代 码 例 程 USART_ReadUCSRC: ; 读 UCSRC in r6,ubrrh in r6,ucsrc ret () C 代 码 例 程 unsigned char USART_ReadUCSRC( void ) { unsigned char ucsrc; /* 读 UCSRC */ ucsrc = UBRRH; ucsrc = UCSRC; return ucsrc; } Note:. 本 代 码 假 定 已 经 包 含 了 相 应 的 头 文 件 汇 编 代 码 在 r6 中 返 回 UCSRC 值 对 UBRRH 内 容 的 读 操 作 不 是 自 动 完 成, 且 当 前 一 条 指 令 没 有 访 问 该 寄 存 器 地 址 时, 该 寄 存 器 作 为 普 通 寄 存 器 使 用 USART 寄 存 器 描 述 USART I/O 数 据 寄 存 器 - UDR Bit 7 6 5 4 3 2 RXB[7:] UDR ( 读 ) TXB[7:] UDR ( 写 ) 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 USART 发 送 数 据 缓 冲 寄 存 器 和 USART 接 收 数 据 缓 冲 寄 存 器 共 享 相 同 的 I/O 地 址, 称 为 USART 数 据 寄 存 器 或 UDR 将 数 据 写 入 UDR 时 实 际 操 作 的 是 发 送 数 据 缓 冲 器 存 器 (TXB), 读 UDR 时 实 际 返 回 的 是 接 收 数 据 缓 冲 寄 存 器 (RXB) 的 内 容 在 5 6 7 比 特 字 长 模 式 下, 未 使 用 的 高 位 被 发 送 器 忽 略, 而 接 收 器 则 将 它 们 设 置 为 只 有 当 UCSRA 寄 存 器 的 UDRE 标 志 置 位 后 才 可 以 对 发 送 缓 冲 器 进 行 写 操 作 如 果 UDRE 没 有 置 位, 那 么 写 入 UDR 的 数 据 会 被 USART 发 送 器 忽 略 当 数 据 写 入 发 送 缓 冲 器 后, 若 移 位 寄 存 器 为 空, 发 送 器 将 把 数 据 加 载 到 发 送 移 位 寄 存 器 然 后 数 据 串 行 地 从 TxD 引 脚 输 出 接 收 缓 冲 器 包 括 一 个 两 级 FIFO, 一 旦 接 收 缓 冲 器 被 寻 址 FIFO 就 会 改 变 它 的 状 态 因 此 不 要 对 这 一 存 储 单 元 使 用 读 - 修 改 - 写 指 令 (SBI 和 CBI) 使 用 位 查 询 指 令 (SBIC 和 SBIS) 时 也 要 小 心, 因 为 这 也 有 可 能 改 变 FIFO 的 状 态 4
USART 控 制 和 状 态 寄 存 器 A - UCSRA Bit 7 6 5 4 3 2 RXC TXC UDRE FE DOR PE U2X MPCM UCSRA 读 / 写 R R/W R R R R R/W R/W 初 始 值 Bit 7 RXC: USART 接 收 结 束 接 收 缓 冲 器 中 有 未 读 出 的 数 据 时 RXC 置 位, 否 则 清 零 接 收 器 禁 止 时, 接 收 缓 冲 器 被 刷 新, 导 致 RXC 清 零 RXC 标 志 可 用 来 产 生 接 收 结 束 中 断 ( 见 对 RXCIE 位 的 描 述 ) Bit 6 TXC: USART 发 送 结 束 发 送 移 位 缓 冲 器 中 的 数 据 被 送 出, 且 当 发 送 缓 冲 器 (UDR) 为 空 时 TXC 置 位 执 行 发 送 结 束 中 断 时 TXC 标 志 自 动 清 零, 也 可 以 通 过 写 进 行 清 除 操 作 TXC 标 志 可 用 来 产 生 发 送 结 束 中 断 ( 见 对 TXCIE 位 的 描 述 ) Bit 5 UDRE: USART 数 据 寄 存 器 空 UDRE 标 志 指 出 发 送 缓 冲 器 (UDR) 是 否 准 备 好 接 收 新 数 据 UDRE 为 说 明 缓 冲 器 为 空, 已 准 备 好 进 行 数 据 接 收 UDRE 标 志 可 用 来 产 生 数 据 寄 存 器 空 中 断 ( 见 对 UDRIE 位 的 描 述 ) 复 位 后 UDRE 置 位, 表 明 发 送 器 已 经 就 绪 Bit 4 FE: 帧 错 误 如 果 接 收 缓 冲 器 接 收 到 的 下 一 个 字 符 有 帧 错 误, 即 接 收 缓 冲 器 中 的 下 一 个 字 符 的 第 一 个 停 止 位 为, 那 么 FE 置 位 这 一 位 一 直 有 效 直 到 接 收 缓 冲 器 (UDR) 被 读 取 当 接 收 到 的 停 止 位 为 时, FE 标 志 为 对 UCSRA 进 行 写 入 时, 这 一 位 要 写 Bit 3 DOR: 数 据 溢 出 数 据 溢 出 时 DOR 置 位 当 接 收 缓 冲 器 满 ( 包 含 了 两 个 数 据 ), 接 收 移 位 寄 存 器 又 有 数 据, 若 此 时 检 测 到 一 个 新 的 起 始 位, 数 据 溢 出 就 产 生 了 这 一 位 一 直 有 效 直 到 接 收 缓 冲 器 (UDR) 被 读 取 对 UCSRA 进 行 写 入 时, 这 一 位 要 写 Bit 2 PE: 奇 偶 校 验 错 误 当 奇 偶 校 验 使 能 (UPM = ), 且 接 收 缓 冲 器 中 所 接 收 到 的 下 一 个 字 符 有 奇 偶 校 验 错 误 时 UPE 置 位 这 一 位 一 直 有 效 直 到 接 收 缓 冲 器 (UDR) 被 读 取 对 UCSRA 进 行 写 入 时, 这 一 位 要 写 Bit U2X: 倍 速 发 送 这 一 位 仅 对 异 步 操 作 有 影 响 使 用 同 步 操 作 时 将 此 位 清 零 此 位 置 可 将 波 特 率 分 频 因 子 从 6 降 到 8, 从 而 有 效 的 将 异 步 通 信 模 式 的 传 输 速 率 加 倍 Bit MPCM: 多 处 理 器 通 信 模 式 设 置 此 位 将 启 动 多 处 理 器 通 信 模 式 MPCM 置 位 后, USART 接 收 器 接 收 到 的 那 些 不 包 含 地 址 信 息 的 输 入 帧 都 将 被 忽 略 发 送 器 不 受 MPCM 设 置 的 影 响 详 细 信 息 请 参 考 P 39 多 处 理 器 通 讯 模 式 USART 控 制 和 状 态 寄 存 器 B - UCSRB Bit 7 6 5 4 3 2 RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8 UCSRB 读 / 写 R/W R/W R/W R/W R/W R/W R R/W 初 始 值 Bit 7 RXCIE: 接 收 结 束 中 断 使 能 置 位 后 使 能 RXC 中 断 当 RXCIE 为, 全 局 中 断 标 志 位 SREG 置 位, UCSRA 寄 存 器 的 RXC 亦 为 时 可 以 产 生 USART 接 收 结 束 中 断 42 ATmega8(L)
ATmega8(L) Bit 6 TXCIE: 发 送 结 束 中 断 使 能 置 位 后 使 能 TXC 中 断 当 TXCIE 为, 全 局 中 断 标 志 位 SREG 置 位,UCSRA 寄 存 器 的 TXC 亦 为 时 可 以 产 生 USART 发 送 结 束 中 断 Bit 5 UDRIE: USART 数 据 寄 存 器 空 中 断 使 能 置 位 后 使 能 UDRE 中 断 当 UDRIE 为, 全 局 中 断 标 志 位 SREG 置 位,UCSRA 寄 存 器 的 UDRE 亦 为 时 可 以 产 生 USART 数 据 寄 存 器 空 中 断 Bit 4 RXEN: 接 收 使 能 置 位 后 将 启 动 USART 接 收 器 RxD 引 脚 的 通 用 端 口 功 能 被 USART 功 能 所 取 代 禁 止 接 收 器 将 刷 新 接 收 缓 冲 器, 并 使 FE DOR 及 PE 标 志 无 效 Bit 3 TXEN: 发 送 使 能 置 位 后 将 启 动 USART 发 送 器 TxD 引 脚 的 通 用 端 口 功 能 被 USART 功 能 所 取 代 TXEN 清 零 后, 只 有 等 到 所 有 的 数 据 发 送 完 成 后 发 送 器 才 能 够 真 正 禁 止, 即 发 送 移 位 寄 存 器 与 发 送 缓 冲 寄 存 器 中 没 有 要 传 送 的 数 据 发 送 器 禁 止 后, TxD 引 脚 恢 复 其 通 用 I/O 功 能 Bit 2 UCSZ2: 字 符 长 度 UCSZ2 与 UCSRC 寄 存 器 的 UCSZ: 结 合 在 一 起 可 以 设 置 数 据 帧 所 包 含 的 数 据 位 数 ( 字 符 长 度 ) Bit RXB8: 接 收 数 据 位 8 对 9 位 串 行 帧 进 行 操 作 时,RXB8 是 第 9 个 数 据 位 读 取 UDR 包 含 的 低 位 数 据 之 前 首 先 要 读 取 RXB8 Bit TXB8: 发 送 数 据 位 8 对 9 位 串 行 帧 进 行 操 作 时,TXB8 是 第 9 个 数 据 位 写 UDR 之 前 首 先 要 对 它 进 行 写 操 作 USART 控 制 和 状 态 寄 存 器 C - UCSRC Bit 7 6 5 4 3 2 URSEL UMSEL UPM UPM USBS UCSZ UCSZ UCPOL UCSRC 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 UCSRC 寄 存 器 与 UBRRH 寄 存 器 共 用 相 同 的 I/O 地 址 对 该 寄 存 器 的 访 问, 请 参 见 P 4 访 问 UBRRH/ UCSRC 寄 存 器 Bit 7 URSEL: 寄 存 器 选 择 通 过 该 位 选 择 访 问 UCSRC 寄 存 器 或 UBRRH 寄 存 器 当 读 UCSRC 时, 该 位 为 ; 当 写 UCSRC 时, URSEL 为 Bit 6 UMSEL: USART 模 式 选 择 通 过 这 一 位 来 选 择 同 步 或 异 步 工 作 模 式 Table 55. UMSEL 设 置 UMSEL 模 式 异 步 操 作 同 步 操 作 43
Bit 5:4 UPM:: 奇 偶 校 验 模 式 这 两 位 设 置 奇 偶 校 验 的 模 式 并 使 能 奇 偶 校 验 如 果 使 能 了 奇 偶 校 验, 那 么 在 发 送 数 据, 发 送 器 都 会 自 动 产 生 并 发 送 奇 偶 校 验 位 对 每 一 个 接 收 到 的 数 据, 接 收 器 都 会 产 生 一 奇 偶 值, 并 与 UPM 所 设 置 的 值 进 行 比 较 如 果 不 匹 配, 那 么 就 将 UCSRA 中 的 PE 置 位 Table 56. UPM 设 置 UPM UPM 奇 偶 模 式 禁 止 保 留 偶 校 验 奇 校 验 Bit 3 USBS: 停 止 位 选 择 通 过 这 一 位 可 以 设 置 停 止 位 的 位 数 接 收 器 忽 略 这 一 位 的 设 置 Table 57. USBS 设 置 USBS Bit 2: UCSZ:: 字 符 长 度 UCSZ: 与 UCSRB 寄 存 器 的 UCSZ2 结 合 在 一 起 可 以 设 置 数 据 帧 包 含 的 数 据 位 数 ( 字 符 长 度 ) Table 58. UCSZ 设 置 Bit UCPOL: 时 钟 极 性 停 止 位 位 数 位 2 位 UCSZ2 UCSZ UCSZ 字 符 长 度 5 位 6 位 7 位 8 位 保 留 保 留 保 留 9 位 这 一 位 仅 用 于 同 步 工 作 模 式 使 用 异 步 模 式 时, 将 这 一 位 清 零 UCPOL 设 置 了 输 出 数 据 的 改 变 和 输 入 数 据 采 样, 以 及 同 步 时 钟 XCK 之 间 的 关 系 Table 59. UCPOL 设 置 UCPOL 发 送 数 据 的 改 变 (TxD 引 脚 的 输 出 ) 接 收 数 据 的 采 样 (RxD 引 脚 的 输 入 ) XCK 上 升 沿 XCK 下 降 沿 XCK 下 降 沿 XCK 上 升 沿 44 ATmega8(L)
ATmega8(L) USART 波 特 率 寄 存 器 - UBRRL 和 UBRRH Bit 5 4 3 2 9 8 URSEL UBRR[:8] UBRRH UBRR[7:] UBRRL 7 6 5 4 3 2 读 / 写 R/W R R R R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 UCSRC 寄 存 器 与 UBRRH 寄 存 器 共 用 相 同 的 I/O 地 址 对 该 寄 存 器 的 访 问, 请 参 见 P 4 访 问 UBRRH/ UCSRC 寄 存 器 Bit 5 URSEL: 寄 存 器 选 择 通 过 该 位 选 择 访 问 UCSRC 寄 存 器 或 UBRRH 寄 存 器 当 读 UBRRH 时, 该 位 为 ; 当 写 UBRRH 时, URSEL 为 Bit 4:2 保 留 这 些 位 是 为 以 后 的 使 用 而 保 留 的 为 了 与 以 后 的 器 件 兼 容, 写 UBRRH 时 将 这 些 位 清 零 Bit : UBRR:: USART 波 特 率 寄 存 器 这 个 2 位 的 寄 存 器 包 含 了 USART 的 波 特 率 信 息 其 中 UBRRH 包 含 了 USART 波 特 率 高 4 位,UBRRL 包 含 了 低 8 位 波 特 率 的 改 变 将 造 成 正 在 进 行 的 数 据 传 输 受 到 破 坏 写 UBRRL 将 立 即 更 新 波 特 率 分 频 器 45
波 特 率 设 置 的 例 子 对 标 准 晶 振 及 谐 振 器 频 率 来 说, 异 步 模 式 下 最 常 用 的 波 特 率 可 通 过 Table 6 中 UBRR 的 设 置 来 产 生 表 中 的 粗 体 数 据 表 示 由 此 产 生 的 波 特 率 与 目 标 波 特 率 的 偏 差 不 超 过.5% 更 高 的 误 差 也 是 可 以 接 受 的, 但 发 送 器 的 抗 噪 性 会 降 低, 特 别 是 需 要 传 输 大 量 数 据 时 ( 参 看 P 37 异 步 工 作 范 围 ) 误 差 可 以 通 过 如 下 公 式 计 算 : Error[%] = BaudRate Closest Match ------------------------------------------------------- BaudRate % Table 6. 通 用 振 荡 器 频 率 下 设 置 UBRR 的 例 子 波 特 率 (bps) f osc =. MHz f osc =.8432 MHz f osc = 2. MHz U2X = U2X = U2X = U2X = U2X = U2X = UBRR 误 差 UBRR 误 差 UBRR 误 差 UBRR 误 差 UBRR 误 差 UBRR 误 差 24 25.2% 5.2% 47.% 95.% 5.2% 3.2% 48 2.2% 25.2% 23.% 47.% 25.2% 5.2% 96 6-7.% 2.2%.% 23.% 2.2% 25.2% 4.4k 3 8.5% 8-3.5% 7.% 5.% 8-3.5% 6 2.% 9.2k 2 8.5% 6-7.% 5.%.% 6-7.% 2.2% 28.8k 8.5% 3 8.5% 3.% 7.% 3 8.5% 8-3.5% 38.4k -8.6% 2 8.5% 2.% 5.% 2 8.5% 6-7.% 57.6k 8.5% 8.5%.% 3.% 8.5% 3 8.5% 76.8k -8.6% -25.% 2.% -8.6% 2 8.5% 5.2k 8.5%.%.% 8.5% 8.5% 23.4k.% - 25k.% () 最 大 62.5 kbps 25 kbps 5.2 kbps 23.4 kbps 25 kbps 25 kbps. UBRR =, 误 差 =.% 46 ATmega8(L)
ATmega8(L) Table 6. 通 用 振 荡 器 频 率 下 设 置 UBRR 的 例 子 波 特 率 (bps) f osc = 3.6864 MHz f osc = 4. MHz f osc = 7.3728 MHz U2X = U2X = U2X = U2X = U2X = U2X = UBRR 误 差 UBRR 误 差 UBRR 误 差 UBRR 误 差 UBRR 误 差 UBRR 误 差 24 95.% 9.% 3.2% 27.2% 9.% 383.% 48 47.% 95.% 5.2% 3.2% 95.% 9.% 96 23.% 47.% 25.2% 5.2% 47.% 95.% 4.4k 5.% 3.% 6 2.% 34 -.8% 3.% 63.% 9.2k.% 23.% 2.2% 25.2% 23.% 47.% 28.8k 7.% 5.% 8-3.5% 6 2.% 5.% 3.% 38.4k 5.%.% 6-7.% 2.2%.% 23.% 57.6k 3.% 7.% 3 8.5% 8-3.5% 7.% 5.% 76.8k 2.% 5.% 2 8.5% 6-7.% 5.%.% 5.2k.% 3.% 8.5% 3 8.5% 3.% 7.% 23.4k.%.% 8.5% 8.5%.% 3.% 25k -7.8% -7.8%.%.% -7.8% 3-7.8%.5M -7.8%.% -7.8% -7.8% M -7.8% () 最 大 23.4 kbps 46.8 kbps 25 kbps.5 Mbps 46.8 kbps 92.6 kbps. UBRR =, 误 差 =.% 47
Table 62. 通 用 振 荡 器 频 率 下 设 置 UBRR 的 例 子 波 特 率 (bps) f osc = 8. MHz f osc =.592 MHz f osc = 4.7456 MHz U2X = U2X = U2X = U2X = U2X = U2X = UBRR 误 差 UBRR 误 差 UBRR 误 差 UBRR 误 差 UBRR 误 差 UBRR 误 差 24 27.2% 46 -.% 287.% 575.% 383.% 767.% 48 3.2% 27.2% 43.% 287.% 9.% 383.% 96 5.2% 3.2% 7.% 43.% 95.% 9.% 4.4k 34 -.8% 68.6% 47.% 95.% 63.% 27.% 9.2k 25.2% 5.2% 35.% 7.% 47.% 95.% 28.8k 6 2.% 34 -.8% 23.% 47.% 3.% 63.% 38.4k 2.2% 25.2% 7.% 35.% 23.% 47.% 57.6k 8-3.5% 6 2.%.% 23.% 5.% 3.% 76.8k 6-7.% 2.2% 8.% 7.%.% 23.% 5.2k 3 8.5% 8-3.5% 5.%.% 7.% 5.% 23.4k 8.5% 3 8.5% 2.% 5.% 3.% 7.% 25k.% 3.% 2-7.8% 5-7.8% 3-7.8% 6 5.3%.5M.%.% 2-7.8% -7.8% 3-7.8% M.% -7.8% -7.8% () 最 大.5 Mbps Mbps 69.2 kbps.3824 Mbps 92.6 kbps.8432 Mbps. UBRR =, 误 差 =.% 48 ATmega8(L)
ATmega8(L) Table 63. 通 用 振 荡 器 频 率 下 设 置 UBRR 的 例 子 波 特 率 (bps) f osc = 6. MHz f osc = 8.432 MHz f osc = 2. MHz U2X = U2X = U2X = U2X = U2X = U2X = UBRR 误 差 UBRR 误 差 UBRR 误 差 UBRR 误 差 UBRR 误 差 UBRR 误 差 24 46 -.% 832.% 479.% 959.% 52.% 4.% 48 27.2% 46 -.% 239.% 479.% 259.2% 52.% 96 3.2% 27.2% 9.% 239.% 29.2% 259.2% 4.4k 68.6% 38 -.% 79.% 59.% 86 -.2% 73 -.2% 9.2k 5.2% 3.2% 59.% 9.% 64.2% 29.2% 28.8k 34 -.8% 68.6% 39.% 79.% 42.9% 86 -.2% 38.4k 25.2% 5.2% 29.% 59.% 32 -.4% 64.2% 57.6k 6 2.% 34 -.8% 9.% 39.% 2 -.4% 42.9% 76.8k 2.2% 25.2% 4.% 29.% 5.7% 32 -.4% 5.2k 8-3.5% 6 2.% 9.% 9.% -.4% 2 -.4% 23.4k 3 8.5% 8-3.5% 4.% 9.% 4 8.5% -.4% 25k 3.% 7.% 4-7.8% 8 2.4% 4.% 9.%.5M.% 3.% 4-7.8% 4.% M.%.% () 最 大 Mbps 2 Mbps.52 Mbps 2.34 Mbps.25 Mbps 2.5 Mbps. UBRR =, 误 差 =.% 49
两 线 串 行 接 口 TWI 特 点 两 线 串 行 接 口 总 线 定 义 简 单, 但 是 强 大 而 灵 活 的 通 讯 接 口, 只 需 要 两 根 线 支 持 主 机 和 从 机 操 作 器 件 可 以 工 作 于 发 送 器 模 式 或 接 收 器 模 式 7 位 地 址 空 间 允 许 有 28 个 从 机 支 持 多 主 机 仲 裁 高 达 4 khz 的 数 据 传 输 率 斜 率 受 控 的 输 出 驱 动 器 可 以 抑 制 总 线 尖 峰 的 噪 声 抑 制 器 完 全 可 编 程 的 从 机 地 址 以 及 公 共 地 址 睡 眠 时 地 址 匹 配 可 以 唤 醒 AVR 两 线 接 口 TWI 很 适 合 于 典 型 的 处 理 器 应 用 TWI 协 议 允 许 系 统 设 计 者 只 用 两 根 双 向 传 输 线 就 可 以 将 28 个 不 同 的 设 备 互 连 到 一 起 这 两 根 线 一 是 时 钟 SCL, 一 是 数 据 SDA 外 部 硬 件 只 需 要 两 个 上 拉 电 阻, 每 根 线 上 一 个 所 有 连 接 到 总 线 上 的 设 备 都 有 自 己 的 地 址 TWI 协 议 解 决 了 总 线 仲 裁 的 问 题 Figure 68. TWI 总 线 的 连 接 V CC Device Device 2 Device 3... Device n R R2 SDA SCL TWI 词 汇 以 下 定 义 将 在 本 节 频 繁 出 现 Table 64. TWI 词 汇 单 词 主 机 从 机 发 送 器 接 收 器 说 明 启 动 和 停 止 传 输 的 设 备 主 机 同 时 要 产 生 SCL 时 钟 被 主 机 寻 址 的 设 备 将 数 据 放 到 总 线 上 的 设 备 从 总 线 读 取 数 据 的 设 备 5 ATmega8(L)
ATmega8(L) 电 气 连 接 从 Figure 68 可 以 看 出, 两 根 线 都 通 过 上 拉 电 阻 与 正 电 源 连 接 所 有 TWI 兼 容 的 器 件 的 总 线 驱 动 都 是 漏 极 开 路 或 集 电 极 开 路 的 这 样 就 实 现 了 对 接 口 操 作 非 常 关 键 的 线 与 功 能 TWI 器 件 输 出 为 " 时,TWI 总 线 会 产 生 低 电 平 当 所 有 的 TWI 器 件 输 出 为 三 态 时, 总 线 会 输 出 高 电 平, 允 许 上 拉 电 阻 将 电 压 拉 高 注 意, 为 保 证 所 有 的 总 线 操 作, 凡 是 与 TWI 总 线 连 接 的 AVR 器 件 必 须 上 电 与 总 线 连 接 的 器 件 数 目 受 如 下 条 件 限 制 : 总 线 电 容 要 低 于 4 pf, 而 且 可 以 用 7 位 从 机 地 址 进 行 寻 址 TWI 详 细 的 电 气 特 性 说 明 请 见 P 229 两 线 串 行 接 口 特 性 这 儿 给 出 了 两 个 不 同 的 规 范, 一 种 是 总 线 速 度 低 于 khz, 而 另 外 一 种 是 总 线 速 度 高 达 4 khz 数 据 传 输 和 帧 格 式 传 输 数 据 ( 位 ) TWI 总 线 上 数 据 位 的 传 送 与 时 钟 脉 冲 同 步 时 钟 线 为 高 时, 数 据 线 电 压 必 须 保 持 稳 定, 除 非 在 启 动 与 停 止 的 状 态 下 Figure 69. 数 据 有 效 性 SDA SCL Data Stable Data Stable Data Change START/STOP 状 态 主 机 启 动 与 停 止 数 据 传 输 主 机 在 总 线 上 发 出 START 信 号 以 启 动 数 据 传 输 ; 在 总 线 上 发 出 STOP 信 号 以 停 止 数 据 传 输 在 START 与 STOP 状 态 之 间, 需 要 假 定 总 线 忙, 不 允 许 其 它 主 机 控 制 总 线 特 例 是 在 START 与 STOP 状 态 之 间 发 出 一 个 新 的 START 状 态 这 被 称 为 REPEATED START 状 态, 适 用 于 主 机 在 不 放 弃 总 线 控 制 的 情 况 下 启 动 新 的 传 送 在 REPEATED START 之 后, 直 到 下 一 个 STOP, 需 要 假 定 总 线 处 于 忙 的 状 态 这 与 START 是 完 全 一 样 的, 因 此 在 本 手 册 中, 如 果 没 有 特 殊 说 明,START 与 REPEATED START 均 用 START 表 述 如 下 所 示,START 与 STOP 状 态 是 在 SCL 线 为 高 时, 通 过 改 变 SDA 电 平 来 实 现 的 Figure 7. START REPEATED START 与 STOP 状 态 SDA SCL START STOP START REPEATED START STOP 5
地 址 数 据 包 格 式 所 有 在 TWI 总 线 上 传 送 的 地 址 包 均 为 9 位, 包 括 7 位 地 址 位 位 READ/WRITE 控 制 位 与 位 应 答 位 如 果 READ/WRITE 为, 则 执 行 读 操 作 ; 否 则 执 行 写 操 作 从 机 被 寻 址 后, 必 须 在 第 九 个 SCL (ACK) 周 期 通 过 拉 低 SDA 作 出 应 答 若 该 从 机 忙 或 有 其 它 原 因 无 法 响 应 主 机, 则 应 该 在 ACK 周 期 保 持 SDA 为 高 然 后 主 机 可 以 发 出 STOP 状 态 或 REPEATED START 状 态 重 新 开 始 发 送 地 址 包 包 括 从 机 地 址 与 分 别 称 为 SLA+R 或 SLA+W 的 READ 或 WRITE 位 地 址 字 节 的 MSB 首 先 被 发 送 从 机 地 址 由 设 计 者 自 由 分 配, 但 需 要 保 留 地 址 作 为 广 播 地 址 当 发 送 广 播 呼 叫 时, 所 有 的 从 机 应 在 ACK 周 期 通 过 拉 低 SDA 作 出 应 答 当 主 机 需 要 发 送 相 同 的 信 息 给 多 个 从 机 时 可 以 使 用 广 播 功 能 当 Write 位 在 广 播 呼 叫 之 后 发 送, 所 有 的 从 机 通 过 在 ACK 周 期 通 过 拉 低 SDA 作 出 响 应 所 有 的 从 机 接 收 到 紧 跟 的 数 据 包 注 意 在 整 体 访 问 中 发 送 Read 位 没 有 意 义, 因 为 如 果 几 个 从 机 发 送 不 同 的 数 据 会 带 来 总 线 冲 突 所 有 形 如 xxx 格 式 的 地 址 都 需 要 保 留, 以 便 将 来 使 用 Figure 7. 地 址 包 格 式 SDA Addr MSB Addr LSB R/W ACK SCL START 2 7 8 9 52 ATmega8(L)
ATmega8(L) 数 据 包 格 式 所 有 在 TWI 总 线 上 传 送 的 数 据 包 为 9 位 长, 包 括 8 位 数 据 位 及 位 应 答 位 在 数 据 传 送 中, 主 机 产 生 时 钟 及 START 与 STOP 状 态, 而 接 收 器 响 应 接 收 应 答 是 由 从 机 在 第 9 个 SCL 周 期 拉 低 SDA 实 现 的 如 果 接 收 器 使 SDA 为 高, 则 发 出 NACK 信 号 接 收 器 完 成 接 收, 或 者 由 于 某 些 原 因 无 法 接 收 更 多 的 数 据, 应 该 在 收 到 最 后 的 字 节 后 发 出 NACK 来 告 知 发 送 器 数 据 的 MSB 首 先 发 送 Figure 72. 数 据 包 格 式 Aggregate SDA Data MSB Data LSB ACK SDA from Transmitter SDA from Receiver SCL from Master SLA+R/W 2 7 8 9 Data Byte STOP, REPEATED START or Next Data Byte 将 地 址 包 和 数 据 包 组 合 为 一 个 完 整 的 传 输 过 程 发 送 主 要 由 START 状 态 SLA+R/W 至 少 一 个 数 据 包 及 STOP 状 态 组 成 只 有 START 与 STOP 状 态 的 空 信 息 是 非 法 的 可 以 利 用 SCL 的 线 与 功 能 来 实 现 主 机 与 从 机 的 握 手 从 机 可 通 过 拉 低 SCL 来 延 长 SCL 低 电 平 的 时 间 当 主 机 设 定 的 时 钟 速 度 相 对 于 从 机 太 快, 或 从 机 需 要 额 外 的 时 间 来 处 理 数 据 时, 这 一 特 性 是 非 常 有 用 的 从 机 延 长 SCL 低 电 平 的 时 间 不 会 影 响 SCL 高 电 平 的 时 间, 因 为 SCL 高 电 平 时 间 是 由 主 机 决 定 的 由 上 述 可 知, 通 过 改 变 SCL 的 占 空 比 可 降 低 TWI 数 据 传 送 速 度 Figure 73 说 明 了 典 型 的 数 据 传 送 注 意 SLA+R/W 与 STOP 之 间 传 送 的 字 节 数 由 应 用 程 序 的 协 议 决 定 Figure 73. 典 型 的 数 据 传 送 Addr MSB Addr LSB R/W ACK Data MSB Data LSB ACK SDA SCL 2 7 8 9 2 7 8 9 START SLA+R/W Data Byte STOP 53
多 主 机 总 线 系 统, 仲 裁 和 同 步 TWI 协 议 允 许 总 线 上 由 多 个 主 机 特 别 要 注 意 的 是 即 使 有 多 个 主 机 同 时 开 始 发 生 数 据, 也 要 保 证 发 送 正 常 进 行 多 主 机 系 统 中 有 两 个 问 题 : 算 法 必 须 只 能 允 许 一 个 主 机 完 成 传 送 当 其 余 主 机 发 现 它 们 失 去 选 择 权 后 应 停 止 传 送 这 个 选 择 过 程 称 为 仲 裁 当 竞 争 中 的 主 机 发 现 其 仲 裁 失 败, 应 立 即 转 换 到 从 机 模 式 检 测 是 否 被 获 得 总 线 控 制 权 的 的 主 机 寻 址 事 实 上 多 主 机 同 时 传 送 时 不 应 该 让 从 机 检 测 到, 即 不 许 破 坏 数 据 在 总 线 上 的 传 送 不 同 的 主 机 可 能 使 用 不 同 的 SCL 频 率 为 保 证 传 送 的 一 致 性, 必 须 设 计 一 种 同 步 主 机 时 钟 的 方 案 这 会 简 化 仲 裁 过 程 总 线 的 线 与 功 能 用 来 解 决 上 述 问 题 将 所 有 的 主 机 时 钟 进 行 与 操 作, 会 生 成 组 合 的 时 钟, 其 高 电 平 时 间 等 于 所 有 主 机 中 最 短 的 一 个 ; 低 电 平 时 间 则 等 于 所 有 主 机 中 最 长 的 一 个 所 有 的 主 机 都 监 听 SCL, 使 其 可 以 有 效 地 计 算 本 身 高 / 低 电 平 与 组 合 SCL 信 号 高 / 低 电 平 的 时 间 差 异 Figure 74. 多 主 机 SCL 的 同 步 TA low TA high SCL from Master A SCL from Master B SCL Bus Line TB low TB high Masters Start Counting Low Period Masters Start Counting High Period 输 出 数 据 之 后 所 有 的 主 机 都 持 续 监 听 SDA 来 实 现 仲 裁 如 果 从 SDA 读 回 的 数 值 与 主 机 输 出 的 数 值 不 匹 配, 该 主 机 即 失 去 仲 裁 要 注 意 只 有 当 一 个 主 机 输 出 高 电 平 的 SDA, 而 其 它 主 机 输 出 为 低, 该 主 机 才 会 失 去 仲 裁, 并 立 即 转 为 从 机 模 式, 检 测 是 否 被 胜 出 的 主 机 寻 址 失 去 仲 裁 的 主 机 必 须 将 SDA 置 高, 但 在 当 前 的 数 据 或 地 址 包 结 束 之 前 还 可 以 产 生 时 钟 信 号 仲 裁 将 会 持 续 到 系 统 只 有 一 个 主 机 这 可 能 会 占 用 许 多 比 特 如 果 几 个 主 机 对 相 同 的 从 机 寻 址, 仲 裁 将 会 持 续 到 数 据 包 54 ATmega8(L)
ATmega8(L) Figure 75. 两 主 机 之 间 的 仲 裁 SDA from Master A START Master A Loses Arbitration, SDA A SDA SDA from Master B SDA Line Synchronized SCL Line 注 意 不 允 许 在 以 下 情 况 进 行 仲 裁 : 一 个 REPEATED START 状 态 与 一 个 数 据 位 一 个 STOP 状 态 与 一 个 数 据 位 一 个 REPEATED START 状 态 与 一 个 STOP 状 态 应 用 软 件 应 考 虑 上 述 情 况, 保 证 不 会 出 现 这 些 非 法 仲 裁 状 态 这 意 味 着 在 多 主 机 系 统 中, 所 有 的 数 据 传 输 必 须 由 相 同 的 SLA+R/W 与 数 据 包 组 合 组 成 换 句 话 说 : 所 有 的 传 送 必 须 包 含 相 同 数 目 的 数 据 包, 否 则 仲 裁 结 果 无 法 定 义 55
TWI 模 块 综 述 TWI 模 块 由 几 个 子 模 块 组 成, 如 Figure 76 所 示 所 有 位 于 粗 线 之 中 的 寄 存 器 可 以 通 过 AVR 数 据 总 线 进 行 访 问 Figure 76. TWI 模 块 概 述 SCL SDA Slew-rate Control Spike Filter Slew-rate Control Spike Filter Bus Interface Unit Bit Rate Generator START / STOP Control Spike Suppression Prescaler Arbitration detection Address/Data Shift Register (TWDR) Ack Bit Rate Register (TWBR) Address Match Unit Control Unit Address Register (TWAR) Address Comparator Status Register (TWSR) State Machine and Status control Control Register (TWCR) TWI Unit SCL 和 SDA 引 脚 SCL 与 SDA 为 MCU 的 TWI 接 口 引 脚 引 脚 的 输 出 驱 动 器 包 含 一 个 波 形 斜 率 限 制 器 以 满 足 TWI 规 范 引 脚 的 输 入 部 分 包 括 尖 峰 抑 制 单 元 以 去 除 小 于 5 ns 的 毛 刺 当 相 应 的 端 口 设 置 为 SCL 与 SDA 引 脚 时, 可 以 使 能 I/O 口 内 部 的 上 拉 电 阻, 这 样 可 省 掉 外 部 的 上 拉 电 阻 56 ATmega8(L)
ATmega8(L) 比 特 率 发 生 器 单 元 TWI 工 作 于 主 机 模 式 时, 比 特 率 发 生 器 控 制 时 钟 信 号 SCL 的 周 期 具 体 由 TWI 状 态 寄 存 器 TWSR 的 预 分 频 系 数 以 及 比 特 率 寄 存 器 TWBR 设 定 当 TWI 工 作 在 从 机 模 式 时, 不 需 要 对 比 特 率 或 预 分 频 进 行 设 定, 但 从 机 的 CPU 时 钟 频 率 必 须 大 于 TWI 时 钟 线 SCL 频 率 的 6 倍 注 意, 从 机 可 能 会 延 长 SCL 低 电 平 的 时 间, 从 而 降 低 TWI 总 线 的 平 均 时 钟 周 期 SCL 的 频 率 根 据 以 下 的 公 式 产 生 : SCL frequency CPU Clock frequency = ------------------------------------------------------------ 6 + 2(TWBR) 4 TWPS TWBR = TWI 比 特 率 寄 存 器 的 数 值 TWPS = TWI 状 态 寄 存 器 预 分 频 的 数 值 Note: TWI 工 作 在 主 机 模 式 时,TWBR 值 应 该 不 小 于 否 则 主 机 会 在 SDA 与 SCL 产 生 错 误 输 出 作 为 提 示 信 号 问 题 出 现 于 TWI 工 作 在 主 机 模 式 下, 向 从 机 发 送 Start + SLA + R/W 的 时 候 ( 不 需 要 真 的 有 从 机 与 总 线 连 接 ) 总 线 接 口 单 元 该 单 元 包 括 数 据 与 地 址 移 位 寄 存 器 TWDR, START/STOP 控 制 器 和 总 线 仲 裁 判 定 硬 件 电 路 TWDR 寄 存 器 用 于 存 放 发 送 或 接 收 的 数 据 或 地 址 除 了 8 位 的 TWDR, 总 线 接 口 单 元 还 有 一 个 寄 存 器, 包 含 了 用 于 发 送 或 接 收 应 答 的 (N)ACK 这 个 (N)ACK 寄 存 器 不 能 由 程 序 直 接 访 问 当 接 收 数 据 时, 它 可 以 通 过 TWI 控 制 寄 存 器 TWCR 来 置 位 或 清 零 ; 在 发 送 数 据 时, (N)ACK 值 由 TWCR 的 设 置 决 定 START/STOP 控 制 器 负 责 产 生 和 检 测 TWI 总 线 上 的 START REPEATED START 与 STOP 状 态 即 使 在 MCU 处 于 休 眠 状 态 时,START/STOP 控 制 器 仍 然 能 够 检 测 TWI 总 线 上 的 START/STOP 条 件, 当 检 测 到 自 己 被 TWI 总 线 上 的 主 机 寻 址 时, 将 MCU 从 休 眠 状 态 唤 醒 如 果 TWI 以 主 机 模 式 启 动 了 数 据 传 输, 仲 裁 检 测 电 路 将 持 续 监 听 总 线, 以 确 定 是 否 可 以 通 过 仲 裁 获 得 总 线 控 制 权 如 果 总 线 仲 裁 单 元 检 测 到 自 己 在 总 线 仲 裁 中 丢 失 了 总 线 控 制 权, 则 通 知 TWI 控 制 单 元 执 行 正 确 的 动 作, 并 产 生 合 适 的 状 态 码 地 址 匹 配 单 元 地 址 匹 配 单 元 将 检 测 从 总 线 上 接 收 到 的 地 址 是 否 与 TWAR 寄 存 器 中 的 7 位 地 址 相 匹 配 如 果 TWAR 寄 存 器 的 TWI 广 播 应 答 识 别 使 能 位 TWGCE 为 ", 从 总 线 接 收 到 的 地 址 也 会 与 广 播 地 址 进 行 比 较 一 旦 地 址 匹 配 成 功, 控 制 单 元 将 得 到 通 知 以 进 行 正 确 地 响 应 TWI 可 以 响 应, 也 可 以 不 响 应 主 机 的 寻 址, 这 取 决 于 TWCR 寄 存 器 的 设 置 即 使 MCU 处 于 休 眠 状 态 时, 地 址 匹 配 单 元 仍 可 继 续 工 作 一 旦 主 机 寻 址 到 这 个 器 件, 就 可 以 将 MCU 从 休 眠 状 态 唤 醒 控 制 单 元 控 制 单 元 监 听 TWI 总 线, 并 根 据 TWI 控 制 寄 存 器 TWCR 的 设 置 作 出 相 应 的 响 应 当 TWI 总 线 上 产 生 需 要 应 用 程 序 干 预 处 理 的 事 件 时,TWI 中 断 标 志 位 TWINT 置 位 在 下 一 个 时 钟 周 期, TWI 状 态 寄 存 器 TWSR 被 表 示 这 个 事 件 的 状 态 码 字 所 更 新 在 其 它 时 间 里, TWSR 的 内 容 为 一 个 表 示 无 事 件 发 生 的 特 殊 状 态 字 一 旦 TWINT 标 志 位 置 ", 时 钟 线 SCL 即 被 拉 低, 暂 停 TWI 总 线 上 的 数 据 传 输, 让 用 户 程 序 处 理 事 件 在 下 列 状 况 出 现 时, TWINT 标 志 位 置 位 : 在 TWI 传 送 完 START/REPEATED START 信 号 之 后 在 TWI 传 送 完 SLA+R/W 数 据 之 后 在 TWI 传 送 完 地 址 字 节 之 后 在 TWI 总 线 仲 裁 失 败 之 后 在 TWI 被 主 机 寻 址 之 后 ( 广 播 方 式 或 从 机 地 址 匹 配 ) 在 TWI 接 收 到 一 个 数 据 字 节 之 后 作 为 从 机 工 作 时, TWI 接 收 到 STOP 或 REPEATED START 信 号 之 后 由 于 非 法 的 START 或 STOP 信 号 造 成 总 线 错 误 时 57
TWI 寄 存 器 说 明 TWI 比 特 率 寄 存 器 - TWBR Bit 7 6 5 4 3 2 TWBR7 TWBR6 TWBR5 TWBR4 TWBR3 TWBR2 TWBR TWBR TWBR 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 Bits 7.. TWI 比 特 率 寄 存 器 TWBR 为 比 特 率 发 生 器 分 频 因 子 比 特 率 发 生 器 是 一 个 分 频 器, 在 主 机 模 式 下 产 生 SCL 时 钟 频 率 比 特 率 计 算 公 式 请 见 P 57 比 特 率 发 生 器 单 元 TWI 控 制 寄 存 器 - TWCR Bit 7 6 5 4 3 2 TWINT TWEA TWSTA TWSTO TWWC TWEN TWIE TWCR 读 / 写 R/W R/W R/W R/W R R/W R R/W 初 始 值 TWCR 用 来 控 制 TWI 操 作 它 用 来 使 能 TWI, 通 过 施 加 START 到 总 线 上 来 启 动 主 机 访 问, 产 生 接 收 器 应 答, 产 生 STOP 状 态, 以 及 在 写 入 数 据 到 TWDR 寄 存 器 时 控 制 总 线 的 暂 停 等 这 个 寄 存 器 还 可 以 给 出 在 TWDR 无 法 访 问 期 间, 试 图 将 数 据 写 入 到 TWDR 而 引 起 的 写 入 冲 突 信 息 Bit 7 TWINT: TWI 中 断 标 志 当 TWI 完 成 当 前 工 作, 希 望 应 用 程 序 介 入 时 TWINT 置 位 若 SREG 的 I 标 志 以 及 TWCR 寄 存 器 的 TWIE 标 志 也 置 位, 则 MCU 执 行 TWI 中 断 例 程 当 TWINT 置 位 时, SCL 信 号 的 低 电 平 被 延 长 TWINT 标 志 的 清 零 必 须 通 过 软 件 写 " 来 完 成 执 行 中 断 时 硬 件 不 会 自 动 将 其 改 写 为 " 要 注 意 的 是, 只 要 这 一 位 被 清 零, TWI 立 即 开 始 工 作 因 此, 在 清 零 TWINT 之 前 一 定 要 首 先 完 成 对 地 址 寄 存 器 TWAR, 状 态 寄 存 器 TWSR, 以 及 数 据 寄 存 器 TWDR 的 访 问 Bit 6 TWEA: TWI 使 能 应 答 TWEA 标 志 控 制 应 答 脉 冲 的 产 生 若 TWEA 置 位, 出 现 如 下 条 件 时 接 口 发 出 ACK 脉 冲 :. 芯 片 的 从 机 地 址 与 主 机 发 出 的 地 址 相 符 合 2. TWAR 的 TWGCE 置 位 时 接 收 到 广 播 呼 叫 3. 在 主 机 / 从 机 接 收 模 式 下 接 收 到 一 个 字 节 的 数 据 将 TWEA 清 零 可 以 使 器 件 暂 时 脱 离 总 线 置 位 后 器 件 重 新 恢 复 地 址 识 别 Bit 5 TWSTA: TWI START 状 态 标 志 当 CPU 希 望 自 己 成 为 总 线 上 的 主 机 时 需 要 置 位 TWSTA TWI 硬 件 检 测 总 线 是 否 可 用 若 总 线 空 闲, 接 口 就 在 总 线 上 产 生 START 状 态 若 总 线 忙, 接 口 就 一 直 等 待, 直 到 检 测 到 一 个 STOP 状 态, 然 后 产 生 START 以 声 明 自 己 希 望 成 为 主 机 发 送 START 之 后 软 件 必 须 清 零 TWSTA Bit 4 TWSTO: TWI STOP 状 态 位 在 主 机 模 式 下, 如 果 置 位 TWSTO,TWI 接 口 将 在 总 线 上 产 生 STOP 状 态, 然 后 TWSTO 自 动 清 零 在 从 机 模 式 下, 置 位 TWSTO 可 以 使 接 口 从 错 误 状 态 恢 复 到 未 被 寻 址 的 状 态 此 时 总 线 上 不 会 有 STOP 状 态 产 生, 但 TWI 返 回 一 个 定 义 好 的 未 被 寻 址 的 从 机 模 式 且 释 放 SCL 与 SDA 为 高 阻 态 Bit 3 TWWC:TWI 写 冲 突 标 志 当 TWINT 为 低 时 写 数 据 寄 存 器 TWDR 将 置 位 TWWC 当 TWINT 为 高 时, 每 一 次 对 TWDR 的 写 访 问 都 将 更 新 此 标 志 58 ATmega8(L)
ATmega8(L) Bit 2 TWEN: TWI 使 能 TWEN 位 用 于 使 能 TWI 操 作 与 激 活 TWI 接 口 当 TWEN 位 被 写 为 " 时,TWI 引 脚 将 I/O 引 脚 切 换 到 SCL 与 SDA 引 脚, 使 能 波 形 斜 率 限 制 器 与 尖 峰 滤 波 器 如 果 该 位 清 零, TWI 接 口 模 块 将 被 关 闭, 所 有 TWI 传 输 将 被 终 止 Bit Res: 保 留 保 留, 读 返 回 值 为 Bit TWIE: TWI 中 断 使 能 当 SREG 的 I 以 及 TWIE 置 位 时, 只 要 TWINT 为 ", TWI 中 断 就 激 活 59
TWI 状 态 寄 存 器 - TWSR Bit 7 6 5 4 3 2 TWS7 TWS6 TWS5 TWS4 TWS3 TWPS TWPS TWSR 读 / 写 R R R R R R R/W R/W 初 始 值 Bits 7..3 TWS: TWI 状 态 这 5 位 用 来 反 映 TWI 逻 辑 和 总 线 的 状 态 不 同 的 状 态 代 码 将 会 在 后 面 的 部 分 描 述 注 意 从 TWSR 读 出 的 值 包 括 5 位 状 态 值 与 2 位 预 分 频 值 检 测 状 态 位 时 设 计 者 应 屏 蔽 预 分 频 位 为 " 这 使 状 态 检 测 独 立 于 预 分 频 器 设 置 在 无 特 殊 声 明 的 情 况 下, 在 手 册 中 使 用 该 方 法 Bit 2 Res: 保 留 保 留, 读 返 回 值 为 " Bits.. TWPS: TWI 预 分 频 位 这 两 位 可 读 / 写, 用 于 控 制 比 特 率 预 分 频 因 子 Table 65. TWI 比 特 率 预 分 频 器 TWPS TWPS 预 分 频 器 值 4 6 64 如 何 计 算 比 特 率 请 见 P 57 比 特 率 发 生 器 单 元 TWPS.. 值 在 该 公 式 中 使 用 TWI 数 据 寄 存 器 - TWDR Bit 7 6 5 4 3 2 TWD7 TWD6 TWD5 TWD4 TWD3 TWD2 TWD TWD TWDR 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 在 发 送 模 式, TWDR 包 含 了 要 发 送 的 字 节 ; 在 接 收 模 式, TWDR 包 含 了 接 收 到 的 数 据 当 TWI 接 口 没 有 进 行 移 位 工 作 (TWINT 置 位 ) 时 这 个 寄 存 器 是 可 写 的 在 第 一 次 中 断 发 生 之 前 用 户 不 能 够 初 始 化 数 据 寄 存 器 只 要 TWINT 置 位,TWDR 的 数 据 就 是 稳 定 的 在 数 据 移 出 时, 总 线 上 的 数 据 同 时 移 入 寄 存 器 TWDR 总 是 包 含 了 总 线 上 出 现 的 最 后 一 个 字 节, 除 非 MCU 是 从 掉 电 或 省 电 模 式 被 TWI 中 断 唤 醒 此 时 TWDR 的 内 容 没 有 定 义 总 线 仲 裁 失 败 时, 主 机 将 切 换 为 从 机, 但 总 线 上 出 现 的 数 据 不 会 丢 失 ACK 的 处 理 由 TWI 逻 辑 自 动 管 理, CPU 不 能 直 接 访 问 ACK Bits 7.. TWD: TWI 数 据 寄 存 器 根 据 状 态 的 不 同, 其 内 容 为 要 发 送 的 下 一 个 字 节, 或 是 接 收 到 的 数 据 TWI( 从 机 ) 地 址 寄 存 器 - TWAR Bit 7 6 5 4 3 2 TWA6 TWA5 TWA4 TWA3 TWA2 TWA TWA TWGCE TWAR 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 TWAR 的 高 7 位 为 从 机 地 址 工 作 于 从 机 模 式 时,TWI 将 根 据 这 个 地 址 进 行 响 应 主 机 模 式 不 需 要 此 地 址 在 多 主 机 系 统 中, TWAR 需 要 进 行 设 置 以 便 其 他 主 机 访 问 自 己 6 ATmega8(L)
ATmega8(L) TWAR 的 LSB 用 于 识 别 广 播 地 址 (x) 芯 片 内 有 一 个 地 址 比 较 器 一 旦 接 收 到 的 地 址 和 本 机 地 址 一 致, 芯 片 就 请 求 中 断 Bits 7.. TWA: TWI 从 机 地 址 寄 存 器 其 值 为 从 机 地 址 Bit TWGCE: TWI 广 播 识 别 使 能 置 位 后 MCU 可 以 识 别 TWI 总 线 广 播 使 用 TWI AVR 的 TWI 接 口 是 面 向 字 节 和 基 于 中 断 的 所 有 的 总 线 事 件, 如 接 收 到 一 个 字 节 或 发 送 了 一 个 START 信 号 等, 都 会 产 生 一 个 TWI 中 断 由 于 TWI 接 口 是 基 于 中 断 的, 因 此 TWI 接 口 在 字 节 发 送 和 接 收 过 程 中, 不 需 要 应 用 程 序 的 干 预 TWCR 寄 存 器 的 TWI 中 断 允 许 TWIE 位 和 SREG 寄 存 器 的 全 局 中 断 允 许 位 一 起 决 定 了 应 用 程 序 是 否 响 应 TWINT 标 志 位 产 生 的 中 断 请 求 如 果 TWIE 被 清 零, 应 用 程 序 只 能 采 用 轮 询 TWINT 标 志 位 的 方 法 来 检 测 TWI 总 线 状 态 当 TWINT 标 志 位 置 " 时, 表 示 TWI 接 口 完 成 了 当 前 的 操 作, 等 待 应 用 程 序 的 响 应 在 这 种 情 况 下,TWI 状 态 寄 存 器 TWSR 包 含 了 表 明 当 前 TWI 总 线 状 态 的 值 应 用 程 序 可 以 读 取 TWCR 的 状 态 码, 判 别 此 时 的 状 态 是 否 正 确, 并 通 过 设 置 TWCR 与 TWDR 寄 存 器, 决 定 在 下 一 个 TWI 总 线 周 期 TWI 接 口 应 该 如 何 工 作 Figure 77 给 出 应 用 程 序 与 TWI 接 口 连 接 的 例 子 该 例 中, 主 机 发 送 一 个 数 据 字 节 给 从 机 这 里 只 是 简 述, 本 节 的 后 面 会 有 更 多 的 解 释, 还 有 简 单 的 代 码 例 程 Figure 77. 典 型 数 据 传 输 中 应 用 程 序 与 TWI 的 接 口 Application Action. Application writes to TWCR to initiate transmission of START 3. Check TWSR to see if START was sent. Application loads SLA+W into TWDR, and loads appropriate control signals into TWCR, makin sure that TWINT is written to one, and TWSTA is written to zero. 5. Check TWSR to see if SLA+W was sent and ACK received. Application loads data into TWDR, and loads appropriate control signals into TWCR, making sure that TWINT is written to one 7. Check TWSR to see if data was sent and ACK received. Application loads appropriate control signals to send STOP into TWCR, making sure that TWINT is written to one TWI bus START SLA+W A Data A STOP TWI Hardware Action 2. TWINT set. Status code indicates START condition sent 4. TWINT set. Status code indicates SLA+W sent, ACK received 6. TWINT set. Status code indicates data sent, ACK received Indicates TWINT set. TWI 传 输 的 第 一 步 是 发 送 START 信 号 通 过 对 TWCR 写 入 特 定 值, 指 示 TWI 硬 件 发 送 START 信 号 写 入 的 值 将 在 后 面 说 明 在 写 入 值 时 TWINT 位 要 置 位, 这 非 常 重 要 给 TWINT 写 " 清 除 此 标 志 TWCR 寄 存 器 的 TWINT 置 位 期 间 TWI 不 会 启 动 任 何 操 作 一 旦 TWINT 清 零, TWI 由 START 信 号 启 动 数 据 传 输 2. START 信 号 被 发 送 后,TWCR 寄 存 器 的 TWINT 标 志 位 置 位, TWCR 更 新 为 新 的 状 态 码, 表 示 START 信 号 成 功 发 送 3. 应 用 程 序 应 检 验 TWSR, 确 定 START 信 号 已 成 功 发 送 如 果 TWSR 显 示 为 其 它, 应 用 程 序 可 以 执 行 一 些 指 定 操 作, 比 如 调 用 错 误 处 理 程 序 如 果 状 态 码 与 预 期 一 致, 应 用 程 序 必 须 将 SLA+W 载 入 TWDR TWDR 可 同 时 在 地 址 与 数 据 中 使 用 TWDR 载 入 SLA+W 后,TWCR 必 须 写 入 特 定 值 指 示 TWI 硬 件 发 送 SLA+W 信 号 写 入 的 值 将 在 后 面 说 明 在 写 入 值 时 TWINT 位 要 置 位, 这 非 常 重 要 给 TWINT 写 6
" 清 除 此 标 志 TWCR 寄 存 器 的 TWINT 置 位 期 间 TWI 不 会 启 动 任 何 操 作 一 旦 TWINT 清 零, TWI 启 动 地 址 包 的 传 送 4. 地 址 包 发 送 后,TWCR 寄 存 器 的 TWINT 标 志 位 置 位, TWDR 更 新 为 新 的 状 态 码, 表 示 地 址 包 成 功 发 送 状 态 代 码 还 会 反 映 从 机 是 否 响 应 包 5. 应 用 程 序 应 检 验 TWSR, 确 定 地 址 包 已 成 功 发 送 ACK 为 期 望 值 如 果 TWSR 显 示 为 其 它, 应 用 程 序 可 能 执 行 一 些 指 定 操 作, 比 如 调 用 错 误 处 理 程 序 如 果 状 态 码 与 预 期 一 致, 应 用 程 序 必 须 将 数 据 包 载 入 TWDR 随 后, TWCR 必 须 写 入 特 定 值 指 示 TWI 硬 件 发 送 TWDR 中 的 数 据 包 写 入 的 值 将 在 后 面 说 明 在 写 入 值 时 TWINT 位 要 置 位, 这 非 常 重 要 TWCR 寄 存 器 中 的 TWINT 置 位 期 间 TWI 不 会 启 动 任 何 操 作 一 旦 TWINT 清 零, TWI 启 动 数 据 包 的 传 输 6. 数 据 包 发 送 后,TWCR 寄 存 器 的 TWINT 标 志 位 置 位, TWSR 更 新 为 新 的 状 态 码, 表 示 数 据 包 成 功 发 送 状 态 代 码 还 会 反 映 从 机 是 否 响 应 包 7. 应 用 程 序 应 检 验 TWSR, 确 定 地 址 包 已 成 功 发 送 ACK 为 期 望 值 如 果 TWSR 显 示 为 其 它, 应 用 程 序 可 能 执 行 一 些 指 定 操 作, 比 如 调 用 错 误 处 理 程 序 如 果 状 态 码 与 预 期 一 致, TWCR 必 须 写 入 特 定 值 指 示 TWI 硬 件 发 送 STOP 信 号 写 入 的 值 将 在 后 面 说 明 在 写 入 值 时 TWINT 位 要 置 位, 这 非 常 重 要 给 TWINT 写 " 清 除 此 标 志 TWCR 寄 存 器 中 的 TWINT 置 位 期 间 TWI 不 会 启 动 任 何 操 作 一 旦 TWINT 清 零,TWI 启 动 STOP 信 号 的 传 送 注 意 TWINT 在 STOP 状 态 发 送 后 不 会 置 位 尽 管 示 例 比 较 简 单, 但 它 包 含 了 TWI 数 据 传 输 过 程 中 的 所 有 规 则 总 结 如 下 : 当 TWI 完 成 一 次 操 作 并 等 待 反 馈 时, TWINT 标 志 置 位 直 到 TWINT 清 零, 时 钟 线 SCL 才 会 拉 低 TWINT 标 志 置 位 时, 用 户 必 须 用 与 下 一 个 TWI 总 线 周 期 相 关 的 值 更 新 TWI 寄 存 器 例 如, TWDR 寄 存 器 必 须 载 入 下 一 个 总 线 周 期 中 要 发 送 的 值 当 所 有 的 TWI 寄 存 器 得 到 更 新, 而 且 其 它 挂 起 的 应 用 程 序 也 已 经 结 束, TWCR 被 写 入 数 据 写 TWCR 时, TWINT 位 应 置 位 对 TWINT 写 " 清 除 此 标 志 TWI 将 开 始 执 行 由 TWCR 设 定 的 操 作 下 面 给 出 了 汇 编 与 C 语 言 例 程 注 意 假 设 下 面 代 码 均 已 给 出 定 义 62 ATmega8(L)
ATmega8(L) 汇 编 代 码 例 程 C 代 码 例 程 说 明 ldi r6, (<<TWINT) (<<TWSTA) (<<TWEN) out TWCR, r6 2 wait: in r6,twcr sbrs r6,twint rjmp wait 3 in r6,twsr andi r6, xf8 cpi r6, START brne ERROR ldi r6, SLA_W out TWDR, r6 ldi r6, (<<TWINT) (<<TWEN) out TWCR, r6 4 wait2: in r6,twcr sbrs r6,twint rjmp wait2 5 in r6,twsr andi r6, xf8 cpi r6, MT_SLA_ACK brne ERROR ldi r6, DATA out TWDR, r6 ldi r6, (<<TWINT) (<<TWEN) out TWCR, r6 6 wait3: in r6,twcr sbrs r6,twint rjmp wait3 7 in r6,twsr andi r6, xf8 cpi r6, MT_DATA_ACK brne ERROR ldi r6, (<<TWINT) (<<TWEN) (<<TWSTO) out TWCR, r6 TWCR = (<<TWINT) (<<TWSTA) (<<TWEN) while (!(TWCR & (<<TWINT))) ; if ((TWSR & xf8)!= START) ERROR(); TWDR = SLA_W; TWCR = (<<TWINT) (<<TWEN); while (!(TWCR & (<<TWINT))) ; if ((TWSR & xf8)!= MT_SLA_ACK) ERROR(); TWDR = DATA; TWCR = (<<TWINT) (<<TWEN); while (!(TWCR & (<<TWINT))) ; if ((TWSR & xf8)!= MT_DATA_ACK) ERROR(); TWCR = (<<TWINT) (<<TWEN) (<<TWSTO); 发 出 START 信 号 等 待 TWINT 置 位, TWINT 置 位 表 示 START 信 号 已 发 出 检 验 TWI 状 态 寄 存 器, 屏 蔽 预 分 频 位, 如 果 状 态 字 不 是 START 转 出 错 处 理 将 SLA_W 载 入 TWDR 寄 存 器, TWINT 位 清 零, 启 动 发 送 地 址 等 待 TWINT 置 位, TWINT 置 位 表 示 总 线 命 令 SLA+W 已 发 出, 及 收 到 应 答 信 号 ACK/NACK 检 验 TWI 状 态 寄 存 器, 屏 蔽 预 分 频 位, 如 果 状 态 字 不 是 MT_SLA_ACK 转 出 错 处 理 将 数 据 载 入 TWDR 寄 存 器, TWINT 清 零, 启 动 发 送 数 据 等 待 TWINT 置 位, TWINT 置 位 表 示 总 线 数 据 DATA 已 发 送, 及 收 到 应 答 信 号 ACK/NACK 检 验 TWI 状 态 寄 存 器, 屏 蔽 预 分 频 器, 如 果 状 态 字 不 是 MT_DATA_ACK 转 出 错 处 理 发 送 STOP 信 号 63
传 输 模 式 TWI 可 以 工 作 于 4 个 不 同 的 模 式 : 主 机 发 送 器 (MT) 主 机 接 收 器 (MR) 从 机 发 送 器 (ST) 及 从 机 接 收 器 (SR) 同 一 应 用 程 序 可 以 使 用 几 种 模 式 例 如, TWI 可 用 MT 模 式 给 TWI EEPROM 写 入 数 据, 用 MR 模 式 从 EEPROM 读 取 数 据 如 果 系 统 中 有 其 它 主 机 存 在, 它 们 可 能 给 TWI 发 送 数 据, 此 时 就 可 以 用 SR 模 式 应 用 程 序 决 定 采 用 何 种 模 式 下 面 对 每 种 模 式 进 行 具 体 说 明 每 种 模 式 的 状 态 码 在 详 细 说 明 数 据 发 送 的 图 中 进 行 描 述 这 些 图 包 含 了 如 下 的 缩 写 : S: START 状 态 Rs:REPEATED START 状 态 R: 读 一 个 比 特 (SDA 为 高 电 平 ) W: 写 一 个 比 特 (SDA 为 低 电 平 ) A: 应 答 位 (SDA 为 低 电 平 ) A: 无 应 答 位 (SDA 为 高 电 平 ) Data:8 位 数 据 P: STOP 状 态 SLA: 从 机 地 址 在 Figure 79 到 Figure 85 中, 圆 圈 用 来 说 明 TWINT 标 志 已 经 置 位 圆 圈 中 的 数 字 用 来 表 示 预 TWSR 的 数 值, 其 中 分 频 位 屏 蔽 为 在 这 些 地 方 应 用 程 序 必 须 执 行 合 适 的 工 作 以 继 续 / 完 成 TWI 传 输 TWI 传 输 被 挂 起, 一 直 到 TWINT 标 志 被 软 件 清 零 TWINT 标 志 置 位 后,TWSR 的 状 态 码 用 来 决 定 适 当 的 软 件 操 作 Table 66 到 Table 69. 给 出 了 每 一 个 状 态 码 所 需 的 软 件 工 作 和 后 续 串 行 传 输 的 细 节 注 意 在 这 些 表 中 预 分 频 位 屏 蔽 为 64 ATmega8(L)
ATmega8(L) 主 机 发 送 模 式 在 主 机 发 送 模 式, 主 机 可 以 向 从 机 发 送 数 据, 如 Figure 78 所 示 为 进 入 主 机 模 式, 必 须 发 送 START 信 号 紧 接 着 的 地 址 包 格 式 决 定 进 入 MT 或 MR 模 式 如 果 发 送 SLA+W 进 入 MT 模 式 ; 如 果 发 送 SLA+R 则 进 入 MR 模 式 本 节 所 提 到 的 状 态 字 均 假 设 其 预 分 频 位 为 " Figure 78. 主 机 发 送 模 式 下 的 数 据 传 输 V CC Device MASTER TRANSMITTER Device 2 SLAVE RECEIVER Device 3... Device n R R2 SDA SCL 通 过 在 TWCR 寄 存 器 中 写 入 下 列 数 值 发 出 START 信 号 : TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN TWIE 值 X X X TWEN 必 须 置 位 以 使 能 两 线 接 口,TWSTA 必 须 置 " 来 发 出 START 信 号 且 TWINT 必 须 置 " 来 对 TWINT 标 志 清 零 TWI 逻 辑 开 始 检 测 串 行 总 线, 一 旦 总 线 空 闲 就 发 送 START 接 着 中 断 标 志 TWINT 置 位,TWSR 的 状 态 码 为 x8 ( 见 Table 66) 为 进 入 MT 模 式, 必 须 发 送 SLA+W 这 可 通 过 对 TWDR 写 入 SLA+W 来 实 现 完 成 此 操 作 后 软 件 清 零 TWINT 标 志, TWI 传 输 继 续 进 行 这 通 过 在 TWCR 寄 存 器 中 写 入 下 述 值 完 成 : TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN TWIE 值 X X X 当 SLA+W 发 送 完 毕 并 接 收 到 确 认 信 号, 主 机 的 TWINT 标 志 再 次 置 位 此 时 主 机 的 TWSR 状 态 码 可 能 是 x8 x2 或 x38 对 各 状 态 码 的 正 确 响 应 列 于 Table 66 SLA+W 发 送 成 功 后 可 以 开 始 发 送 数 据 包 通 过 对 TWDR 写 入 数 据 实 现 TWDR 只 有 在 TWINT 为 高 时 方 可 写 入 否 则, 访 问 被 忽 略, 寄 存 器 TWCR 的 写 碰 撞 位 TWWC 置 位 TWDR 更 新 后,TWINT 位 应 清 零 来 继 续 传 送 这 通 过 在 TWCR 寄 存 器 中 写 入 下 述 值 完 成 TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN TWIE 值 X X X 这 过 程 会 一 直 重 复 下 去, 直 到 最 后 的 字 节 发 送 完 且 发 送 器 产 生 STOP 或 REPEATED START 信 号 STOP 信 号 通 过 在 TWCR 中 写 入 下 述 值 实 现 : TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN TWIE 值 X X X REPEATED START 信 号 通 过 在 TWCR 中 写 入 下 述 值 实 现 : TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN TWIE 值 X X X 65
在 REPEATED START ( 状 态 x) 后, 两 线 接 口 可 以 再 次 访 问 相 同 的 从 机, 或 不 发 送 STOP 信 号 来 访 问 新 的 从 机 REPEATED START 使 得 主 机 可 以 在 不 丢 失 总 线 控 制 的 条 件 下 在 从 机 主 机 发 送 器 及 主 机 接 收 器 模 式 间 进 行 切 换 Table 66. 主 机 发 送 模 式 的 状 态 码 应 用 软 件 的 响 应 状 态 码 (TWSR) 预 分 频 位 为 " 2 线 串 行 总 线 和 2 线 串 行 硬 件 的 状 态 读 / 写 TWDR STA 对 TWCR 的 操 作 STO TWIN T TWE A 2 线 串 行 硬 件 下 一 步 应 采 取 的 动 作 x8 START 已 发 送 加 载 SLA+W X 将 发 送 SLA+W 将 接 收 到 ACK 或 NOT ACK x 重 复 START 已 发 送 加 载 SLA+W 或 加 载 SLA+R X X 将 发 送 SLA+W 将 接 收 到 ACK 或 NOT ACK 将 发 送 SLA+R 切 换 到 主 机 接 收 模 式 x8 SLA+W 已 发 送 ; 接 收 到 ACK 加 载 数 据 ( 字 节 ) 或 不 操 作 TWDR 或 不 操 作 TWDR 或 X X X X 将 发 送 数 据, 接 收 ACK 或 NOT ACK 将 发 送 重 复 START 将 发 送 STOP, TWSTO 将 复 位 将 发 送 STOP, 然 后 发 送 START, TWSTO 将 复 位 不 操 作 TWDR x2 SLA+W 已 发 送 接 收 到 NOT ACK 加 载 数 据 ( 字 节 ) 或 不 操 作 TWDR 或 不 操 作 TWDR 或 X X X X 将 发 送 数 据, 接 收 ACK 或 NOT ACK 将 发 送 重 复 START 将 发 送 STOP, TWSTO 将 复 位 将 发 送 STOP, 然 后 发 送 START, TWSTO 将 复 位 不 操 作 TWDR x28 数 据 已 发 送 接 收 到 ACK 加 载 数 据 ( 字 节 ) 或 不 操 作 TWDR 或 不 操 作 TWDR 或 X X X X 将 发 送 数 据, 接 收 ACK 或 NOT ACK 将 发 送 重 复 START 将 发 送 STOP, TWSTO 将 复 位 将 发 送 STOP, 然 后 发 送 START, TWSTO 将 复 位 不 操 作 TWDR x3 数 据 已 发 送 接 收 到 NOT ACK 加 载 数 据 ( 字 节 ) 或 不 操 作 TWDR 或 不 操 作 TWDR 或 X X X X 将 发 送 数 据, 接 收 ACK 或 NOT ACK 将 发 送 重 复 START 将 发 送 STOP, TWSTO 将 复 位 将 发 送 STOP, 然 后 发 送 START, TWSTO 将 复 位 不 操 作 TWDR x38 SLA+W 或 数 据 的 仲 裁 失 败 不 操 作 TWDR 或 不 操 作 TWDR X X 2 线 串 行 总 线 将 被 释 放, 并 进 入 未 寻 址 从 机 模 式 总 线 空 闲 后 将 发 送 START 66 ATmega8(L)
ATmega8(L) Figure 79. 主 机 发 送 模 式 的 格 式 和 状 态 MT Successfull transmission to a slave receiver S SLA W A DATA A P $8 $8 $28 Next transfer started with a repeated start condition RS SLA W $ Not acknowledge received after the slave address A P R $2 Not acknowledge received after a data byte A P MR $3 Arbitration lost in slave address or data byte A or A Other master continues A or A Other master continues $38 $38 Arbitration lost and addressed as slave A Other master continues $68 $78 $B To corresponding states in slave mode From master to slave DATA A Any number of data bytes and their associated acknowledge bits From slave to master n This number (contained in TWSR) corresponds to a defined state of the Two-Wire Serial Bus. The prescaler bits are zero or masked to zero 67
主 机 接 收 模 式 在 主 机 接 收 模 式, 主 机 可 以 从 从 机 接 收 数 据, 如 Figure 8 所 示 为 进 入 主 机 模 式, 必 须 发 送 START 信 号 紧 接 着 的 地 址 包 格 式 决 定 进 入 MT 或 MR 模 式 如 果 发 送 SLA+W 进 入 MT 模 式 ; 如 果 发 送 SLA+R 则 进 入 MR 模 式 本 节 所 提 到 的 状 态 字 均 假 设 其 预 分 频 位 为 " Figure 8. 主 机 接 收 模 式 下 的 数 据 传 输 V CC Device MASTER RECEIVER Device 2 SLAVE TRANSMITTER Device 3... Device n R R2 SDA SCL 通 过 在 TWCR 寄 存 器 中 写 入 下 列 数 值 发 出 START 信 号 : TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN TWIE 值 X X X TWEN 必 须 置 位 以 使 能 两 线 接 口,TWSTA 必 须 置 " 来 发 出 START 信 号 且 TWINT 必 须 置 " 来 对 TWINT 标 志 清 零 TWI 逻 辑 开 始 检 测 串 行 总 线, 一 旦 总 线 空 闲 就 发 送 START 接 着 中 断 标 志 TWINT 置 位,TWSR 的 状 态 码 为 x8 ( 见 Table 66) 为 进 入 MR 模 式, 必 须 发 送 SLA+R 这 可 通 过 对 TWDR 写 入 SLA+R 来 实 现 完 成 此 操 作 后 软 件 清 零 TWINT 标 志, TWI 传 输 继 续 进 行 这 通 过 在 TWCR 寄 存 器 中 写 入 下 述 值 完 成 : TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN TWIE 值 X X X 当 SLA+R 发 送 完 毕 并 接 收 到 确 认 信 号, 主 机 的 TWINT 标 志 再 次 置 位 此 时 主 机 的 TWSR 状 态 码 可 能 是 x38 x4 或 x48 对 各 状 态 码 的 正 确 响 应 列 于 Table 67 TWDR 只 有 在 TWINT 为 高 时 才 能 读 收 到 的 数 据 这 过 程 会 一 直 重 复 下 去, 直 到 最 后 的 字 节 接 收 结 束 接 收 完 成 后, MR 应 通 过 在 接 收 到 最 后 的 字 节 后 发 送 NACK 信 号 发 送 器 产 生 STOP 或 REPEATED START 信 号 结 束 传 送 STOP 信 号 通 过 在 TWCR 中 写 入 下 述 值 实 现 : TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN TWIE 值 X X X REPEATED START 信 号 通 过 在 TWCR 中 写 入 下 述 值 实 现 : TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN TWIE 值 X X X 在 REPEATED START ( 状 态 x) 后, 两 线 接 口 可 以 再 次 访 问 相 同 的 从 机, 或 不 发 送 STOP 信 号 来 访 问 新 的 从 机 REPEATED START 使 得 主 机 可 以 在 不 丢 失 总 线 控 制 的 条 件 下 在 从 机 主 机 发 送 器 及 主 机 接 收 器 模 式 间 进 行 切 换 Table 67. 主 机 接 收 模 式 的 状 态 码 应 用 软 件 的 响 应 状 态 码 (TWSR) 预 分 频 位 为 " 2 线 串 行 总 线 和 2 线 串 行 硬 件 的 状 态 读 / 写 TWDR STA 对 TWCR 的 操 作 STO TWIN T TWE A 2 线 串 行 硬 件 下 一 步 应 采 取 的 动 作 68 ATmega8(L)
ATmega8(L) Table 67. 主 机 接 收 模 式 的 状 态 码 x8 START 已 发 送 加 载 SLA+R X 将 发 送 SLA+R 将 接 收 到 ACK 或 NOT ACK x 重 复 START 已 发 送 加 载 SLA+R 或 加 载 SLA+W X X 将 发 送 SLA+R 将 接 收 到 ACK 或 NOT ACK 将 发 送 SLA+W 逻 辑 切 换 到 主 机 发 送 模 式 x38 SLA+R 或 NOT ACK 的 仲 裁 失 败 不 操 作 TWDR 或 不 操 作 TWDR X X 2 线 串 行 总 线 将 被 释 放, 并 进 入 未 寻 址 从 机 模 式 总 线 空 闲 后 将 发 送 START x4 SLA+R 已 发 送 接 收 到 ACK 不 操 作 TWDR 或 不 操 作 TWDR 接 收 数 据, 返 回 NOT ACK 接 收 数 据, 返 回 ACK x48 SLA+R 已 发 送 接 收 到 NOT ACK 不 操 作 TWDR 或 不 操 作 TWDR 或 X X X 将 发 送 重 复 START 将 发 送 STOP, TWSTO 将 复 位 不 操 作 TWDR 将 发 送 STOP, 然 后 发 送 START, TWSTO 将 复 位 x5 接 收 到 数 据 ACK 已 返 回 读 数 据 或 读 数 据 接 收 数 据, 返 回 NOT ACK 接 收 数 据, 返 回 ACK x58 接 收 到 数 据 NOT ACK 已 返 回 读 数 据 或 读 数 据 或 X X X 将 发 送 重 复 START 将 发 送 STOP, TWSTO 将 复 位 读 数 据 将 发 送 STOP, 然 后 发 送 START, TWSTO 将 复 位 69
Figure 8. 主 机 接 收 模 式 的 格 式 和 状 态 MR Successfull reception from a slave receiver S SLA R A DATA A DATA A P $8 $4 $5 $58 Next transfer started with a repeated start condition R S SLA R $ Not acknowledge received after the slave address A P W $48 Arbitration lost in slave address or data byte A or A Other master continues A Other master continues MT $38 $38 Arbitration lost and addressed as slave A Other master continues $68 $78 $B To corresponding states in slave mode From master to slave DATA A Any number of data bytes and their associated acknowledge bits From slave to master n This number (contained in TWSR) corresponds to a defined state of the Two-Wire Serial Bus. The prescaler bits are zero or masked to zero 从 机 接 收 模 式 在 从 机 接 收 模 式, 从 机 自 主 机 接 收 数 据, 如 Figure 82 所 示 本 节 所 提 到 的 状 态 字 均 假 设 其 预 分 频 位 为 " Figure 82. 从 机 接 收 模 式 下 的 数 据 传 输 V CC Device SLAVE RECEIVER Device 2 MASTER TRANSMITTER Device 3... Device n R R2 SDA SCL 为 启 动 从 机 接 收 模 式, TWAR 与 TWCR 设 置 如 下 : TWAR TWA6 TWA5 TWA4 TWA3 TWA2 TWA TWA TWGCE 值 芯 片 本 身 从 机 地 址 7 ATmega8(L)
ATmega8(L) 前 7 位 是 主 机 寻 址 时 从 机 响 应 的 TWI 接 口 地 址 若 LSB 置 位, 则 TWI 接 口 响 应 广 播 地 址 x 否 则 忽 略 广 播 地 址 TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN TWIE 值 X TWEN 必 须 置 位 以 使 能 TWI 接 口 TWEA 也 要 置 位 以 使 主 机 寻 址 到 自 己 ( 从 机 地 址 或 广 播 ) 时 返 回 确 认 信 息 ACK TWSTA 和 TWSTO 必 须 清 零 初 始 化 TWAR 和 TWCR 之 后, TWI 接 口 即 开 始 等 待, 直 到 自 己 的 从 机 地 址 ( 或 广 播 地 址, 如 果 TWAR 的 TWGCE 置 位 的 话 ) 出 现 在 主 机 寻 址 地 址 当 中, 并 且 数 据 方 向 位 为 ( 写 ) 然 后 TWINT 标 志 置 位, TWSR 则 包 含 了 相 应 的 状 态 码 对 各 状 态 码 的 正 确 响 应 列 于 Table 68 当 TWI 接 口 处 于 主 机 模 式 ( 状 态 x68 或 x78) 并 发 生 仲 裁 失 败 时 CPU 将 进 入 从 机 接 收 模 式 如 果 在 传 输 过 程 中 TWEA 复 位, TWI 接 口 在 接 收 到 下 一 个 字 节 后 将 向 SDA 返 回 无 应 答 TWEA 复 位 时 TWI 接 口 不 再 响 应 自 己 的 从 机 地 址, 但 是 会 继 续 监 视 总 线 一 旦 TWEA 置 位 就 可 以 恢 复 地 址 识 别 和 响 应 也 就 是 说, 可 以 利 用 TWEA 暂 时 将 TWI 接 口 从 总 线 中 隔 离 出 来 在 除 空 闲 模 式 外 的 其 它 休 眠 模 式 时, TWI 接 口 的 时 钟 被 关 闭 若 使 能 了 从 机 接 收 模 式, 接 口 将 利 用 总 线 时 钟 继 续 响 应 广 播 地 址 / 从 机 地 址 地 址 匹 配 将 唤 醒 CPU 在 唤 醒 期 间, TWI 接 口 将 保 持 SCL 为 低 电 平, 直 至 TWCINT 标 志 清 零 当 AVR 时 钟 恢 复 正 常 运 行 后 TWI 可 以 接 收 更 多 的 数 据 显 然 如 果 AVR 设 置 为 长 启 动 时 间, 时 钟 线 SCL 可 能 会 长 时 间 保 持 低, 阻 塞 其 它 数 据 的 传 送 当 MCU 从 这 些 休 眠 模 式 唤 醒 时, 和 正 常 工 作 模 式 不 同 的 是, 数 据 寄 存 器 TWDR 的 数 据 并 不 反 映 总 线 上 出 现 的 最 后 一 个 字 节 7
Table 68. 从 机 接 收 模 式 的 状 态 码 应 用 软 件 的 响 应 状 态 码 (TWSR) 预 分 频 位 为 " 2 线 串 行 总 线 和 2 线 串 行 硬 件 的 状 态 读 / 写 TWDR STA 对 TWCR 的 操 作 STO TWIN T TWE A 2 线 串 行 硬 件 下 一 步 应 采 取 的 动 作 x6 自 己 的 SLA+W 已 经 被 接 收 ACK 已 返 回 不 操 作 TWDR 或 不 操 作 TWDR X X 接 收 数 据, 返 回 NOT ACK 接 收 数 据, 返 回 ACK x68 SLA+R/W 作 为 主 机 的 仲 裁 失 败 ; 自 己 的 SLA+W 已 经 被 接 收 ACK 已 返 回 不 操 作 TWDR 或 不 操 作 TWDR X X 接 收 数 据, 返 回 NOT ACK 接 收 数 据, 返 回 ACK x7 接 收 到 广 播 地 址 ACK 已 返 回 不 操 作 TWDR 或 不 操 作 TWDR X X 接 收 数 据, 返 回 NOT ACK 接 收 数 据, 返 回 ACK x78 SLA+R/W 作 为 主 机 的 仲 裁 失 败 ; 接 收 到 广 播 地 址 ACK 已 返 回 不 操 作 TWDR 或 不 操 作 TWDR X X 接 收 数 据, 返 回 NOT ACK 接 收 数 据, 返 回 ACK x8 以 前 以 自 己 的 SLA+W 被 寻 址 ; 数 据 已 经 被 接 收 ACK 已 返 回 不 操 作 TWDR 或 不 操 作 TWDR X X 接 收 数 据, 返 回 NOT ACK 接 收 数 据, 返 回 ACK x88 以 前 以 自 己 的 SLA+W 被 寻 址 ; 数 据 已 经 被 接 收 NOT ACK 已 返 回 读 数 据 或 读 数 据 或 切 换 到 未 寻 址 从 机 模 式 ; 不 再 识 别 自 己 的 SLA 或 GCA 切 换 到 未 寻 址 从 机 模 式 ; 能 够 识 别 自 己 的 SLA ; 若 TWGCE =, GCA 也 可 以 识 别 切 换 到 未 寻 址 从 机 模 式 ; 不 再 识 别 自 己 的 SLA 或 GCA ; 总 线 空 闲 时 发 送 START 读 数 据 或 切 换 到 未 寻 址 从 机 模 式 ; 能 够 识 别 自 己 的 SLA ; 若 TWGCE =, GCA 也 可 以 识 别 ; 总 线 空 闲 时 发 送 START 读 数 据 72 ATmega8(L)
ATmega8(L) Table 68. 从 机 接 收 模 式 的 状 态 码 x9 以 前 以 广 播 方 式 被 寻 址 ; 数 据 已 经 被 接 收 ACK 已 返 回 读 数 据 或 读 数 据 X X 接 收 数 据, 返 回 NOT ACK 接 收 数 据, 返 回 ACK x98 以 前 以 广 播 方 式 被 寻 址 ; 数 据 已 经 被 接 收 NOT ACK 已 返 回 读 数 据 或 读 数 据 或 r 切 换 到 未 寻 址 从 机 模 式 ; 不 再 识 别 自 己 的 SLA 或 GCA 切 换 到 未 寻 址 从 机 模 式 ; 能 够 识 别 自 己 的 SLA ; 若 TWGCE =, GCA 也 可 以 识 别 读 数 据 或 切 换 到 未 寻 址 从 机 模 式 ; 不 再 识 别 自 己 的 SLA 或 GCA ; 总 线 空 闲 时 发 送 START 读 数 据 切 换 到 未 寻 址 从 机 模 式 ; 能 够 识 别 自 己 的 SLA ; 若 TWGCE =, GCA 也 可 以 识 别 ; 总 线 空 闲 时 发 送 START xa 在 以 从 机 工 作 时 接 收 到 STOP 或 重 复 START 无 操 作 切 换 到 未 寻 址 从 机 模 式 ; 不 再 识 别 自 己 的 SLA 或 GCA 切 换 到 未 寻 址 从 机 模 式 ; 能 够 识 别 自 己 的 SLA ; 若 TWGCE =, GCA 也 可 以 识 别 切 换 到 未 寻 址 从 机 模 式 ; 不 再 识 别 自 己 的 SLA 或 GCA ; 总 线 空 闲 时 发 送 START 切 换 到 未 寻 址 从 机 模 式 ; 能 够 识 别 自 己 的 SLA ; 若 TWGCE =, GCA 也 可 以 识 别 ; 总 线 空 闲 时 发 送 START 73
Figure 83. 从 机 接 收 模 式 的 格 式 和 状 态 Reception of the own slave address and one or more data bytes. All are acknowledged S SLA W A DATA A DATA A P or S $6 $8 $8 $A Last data byte received is not acknowledged A P or S $88 Arbitration lost as master and addressed as slave A $68 Reception of the general call address and one or more data bytes General Call A DATA A DATA A P or S $7 $9 $9 $A Last data byte received is not acknowledged A P or S $98 Arbitration lost as master and addressed as slave by general call A $78 From master to slave DATA A Any number of data bytes and their associated acknowledge bits From slave to master n This number (contained in TWSR) corresponds to a defined state of the Two-Wire Serial Bus. The prescaler bits are zero or masked to zero 74 ATmega8(L)
ATmega8(L) 从 机 发 送 模 式 在 从 机 发 送 模 式, 从 机 可 以 向 主 机 发 送 数 据, 如 Figure 84 所 示 本 节 所 提 到 的 状 态 字 均 假 设 其 预 分 频 位 为 " Figure 84. 从 机 发 送 模 式 下 的 数 据 传 输 V CC Device SLAVE TRANSMITTER Device 2 MASTER RECEIVER Device 3... Device n R R2 SDA SCL 为 启 动 从 机 发 送 模 式, TWAR 与 TWCR 设 置 如 下 : TWAR TWA6 TWA5 TWA4 TWA3 TWA2 TWA TWA TWGCE 值 芯 片 本 身 从 机 地 址 前 7 位 是 主 机 寻 址 时 从 机 响 应 的 TWI 接 口 地 址 若 LSB 置 位, 则 TWI 接 口 响 应 广 播 地 址 x 否 则 忽 略 广 播 地 址 TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN TWIE 值 X TWEN 必 须 置 位 以 使 能 TWI 接 口 TWEA 也 要 置 位 以 便 主 机 寻 址 到 自 己 ( 从 机 地 址 或 广 播 ) 时 返 回 确 认 信 息 ACK TWSTA 和 TWSTO 必 须 清 零 初 始 化 TWAR 和 TWCR 之 后, TWI 接 口 即 开 始 等 待, 直 到 自 己 的 从 机 地 址 ( 或 广 播 地 址, 如 果 TWAR 的 TWGCE 置 位 的 话 ) 出 现 在 主 机 寻 址 地 址 当 中, 并 且 数 据 方 向 位 为 " ( 读 ) 然 后 TWI 中 断 标 志 置 位,TWSR 则 包 含 了 相 应 的 状 态 码 对 各 状 态 码 的 正 确 响 应 列 于 Table 69 当 TWI 接 口 处 于 主 机 模 式 ( 状 态 xb) 并 发 生 仲 裁 失 败 时 CPU 将 进 入 从 机 发 送 模 式 如 果 在 传 输 过 程 中 TWEA 复 位,TWI 接 口 发 送 完 数 据 之 后 进 入 状 态 xc 或 xc8 接 口 也 切 换 到 未 寻 址 从 机 模 式, 忽 略 任 何 后 续 总 线 传 输 从 而 主 机 接 收 到 的 数 据 全 为 如 果 主 机 需 要 附 加 数 据 位 ( 通 过 发 送 ACK), 即 使 从 机 已 经 传 送 结 束, 也 进 入 状 态 xc8 TWEA 复 位 时 TWI 接 口 不 再 响 应 自 己 的 从 机 地 址, 但 是 会 继 续 监 视 总 线 一 旦 TWEA 置 位 就 可 以 恢 复 地 址 识 别 和 响 应 也 就 是 说, 可 以 利 用 TWEA 暂 时 将 TWI 接 口 从 总 线 中 隔 离 出 来 在 除 空 闲 模 式 外 的 其 它 休 眠 模 式 时, TWI 接 口 的 时 钟 被 关 闭 若 使 能 了 从 机 接 收 模 式, 接 口 将 利 用 总 线 时 钟 继 续 响 应 广 播 地 址 / 从 机 地 址 地 址 匹 配 将 唤 醒 CPU 在 唤 醒 期 间, TWI 接 口 将 保 持 SCL 为 低 电 平, 直 至 TWCINT 标 志 清 零 当 AVR 时 钟 恢 复 正 常 运 行 后 可 以 发 送 更 多 的 数 据 显 然 如 果 AVR 设 置 为 长 启 动 时 间, 时 钟 线 SCL 可 能 会 长 时 间 保 持 低, 阻 塞 其 它 数 据 的 传 送 当 MCU 从 这 些 休 眠 模 式 唤 醒 时, 和 正 常 工 作 模 式 不 同 的 是, 数 据 寄 存 器 TWDR 的 数 据 并 不 反 映 总 线 上 出 现 的 最 后 一 个 字 节 75
Table 69. 从 机 发 送 模 式 的 状 态 码 应 用 软 件 的 响 应 状 态 码 (TWSR) 预 分 频 位 为 " 2 线 串 行 总 线 和 2 线 串 行 硬 件 的 状 态 读 / 写 TWDR STA 对 TWCR 的 操 作 STO TWIN T TWE A 2 线 串 行 硬 件 下 一 步 应 采 取 的 动 作 xa8 自 己 的 SLA+R 已 经 被 接 收 ACK 已 返 回 加 载 一 字 节 的 数 据 或 加 载 一 字 节 的 数 据 X X 发 送 一 字 节 的 数 据, 接 收 NOT ACK 发 送 数 据, 接 收 ACK xb SLA+R/W 作 为 主 机 的 仲 裁 失 败 ; 自 己 的 SLA+R 已 经 被 接 收 ACK 已 返 回 加 载 一 字 节 的 数 据 或 加 载 一 字 节 的 数 据 X X 发 送 一 字 节 的 数 据, 接 收 NOT ACK 发 送 数 据, 接 收 ACK xb8 TWDR 里 数 据 已 经 发 送 接 收 到 ACK 加 载 一 字 节 的 数 据 或 加 载 一 字 节 的 数 据 X X 发 送 一 字 节 的 数 据, 接 收 NOT ACK 发 送 数 据, 接 收 ACK xc TWDR 里 数 据 已 经 发 送 接 收 到 NOT ACK 不 操 作 TWDR 或 不 操 作 TWDR 或 切 换 到 未 寻 址 从 机 模 式 ; 不 再 识 别 自 己 的 SLA 或 GCA 切 换 到 未 寻 址 从 机 模 式 ; 能 够 识 别 自 己 的 SLA ; 若 TWGCE =, GCA 也 可 以 识 别 不 操 作 TWDR 或 切 换 到 未 寻 址 从 机 模 式 ; 不 再 识 别 自 己 的 SLA 或 GCA ; 总 线 空 闲 时 发 送 START 不 操 作 TWDR 切 换 到 未 寻 址 从 机 模 式 ; 能 够 识 别 自 己 的 SLA ; 若 TWGCE =, GCA 也 可 以 识 别 ; 总 线 空 闲 时 发 送 START xc8 TWDR 的 一 字 节 数 据 已 经 发 送 (TWAE = ); 接 收 到 ACK 不 操 作 TWDR 或 不 操 作 TWDR 或 切 换 到 未 寻 址 从 机 模 式 ; 不 再 识 别 自 己 的 SLA 或 GCA 切 换 到 未 寻 址 从 机 模 式 ; 能 够 识 别 自 己 的 SLA ; 若 TWGCE =, GCA 也 可 以 识 别 不 操 作 TWDR 或 切 换 到 未 寻 址 从 机 模 式 ; 不 再 识 别 自 己 的 SLA 或 GCA ; 总 线 空 闲 时 发 送 START 不 操 作 TWDR 切 换 到 未 寻 址 从 机 模 式 ; 能 够 识 别 自 己 的 SLA ; 若 TWGCE =, GCA 也 可 以 识 别 ; 总 线 空 闲 时 发 送 START 76 ATmega8(L)
ATmega8(L) Figure 85. 从 机 发 送 模 式 的 格 式 和 状 态 Reception of the own slave address and one or more data bytes S SLA R A DATA A DATA A P or S $A8 $B8 $C Arbitration lost as master and addressed as slave A $B Last data byte transmitted. Switched to not addressed slave (TWEA = '') A All 's P or S $C8 From master to slave DATA A Any number of data bytes and their associated acknowledge bits From slave to master n This number (contained in TWSR) corresponds to a defined state of the Two-Wire Serial Bus. The prescaler bits are zero or masked to zero 其 他 状 态 有 两 个 状 态 码 没 有 相 应 的 TWI 状 态 定 义, 见 Table 7 Table 7. 其 它 状 态 码 状 态 xf8 表 明 当 前 没 有 相 关 信 息, 因 为 中 断 标 志 TWINT 为 " 这 种 状 态 可 能 发 生 在 自 己 的 TWI 接 口 没 有 参 与 串 行 传 输 的 时 候 状 态 x 表 示 在 串 行 传 输 过 程 中 发 生 了 总 线 错 误 当 START 或 STOP 出 现 在 错 误 的 位 置 时 总 线 错 误 就 会 发 生 比 如 说 在 地 址 和 数 据 地 址 和 ACK 之 间 出 现 了 START 或 STOP 总 线 错 误 将 导 致 TWINT 置 位 为 了 从 错 误 中 恢 复 出 来, 必 须 置 位 标 志 TWSTO, 并 通 过 写 " 以 清 零 TWINT 这 将 导 致 TWI 接 口 进 入 未 寻 址 从 机 模 式 标 志 TWSTO 被 清 零 (TWCR 的 其 他 位 不 受 影 响 ), 以 及 SDA 和 SCL 被 释 放, 但 是 不 会 产 生 STOP 应 用 软 件 的 响 应 状 态 码 (TWSR) 预 分 频 位 为 2 线 串 行 总 线 和 2 线 串 行 硬 件 的 状 态 读 / 写 TWDR STA 对 TWCR 的 操 作 STO TWIN T TWE A 2 线 串 行 硬 件 下 一 步 应 采 取 的 动 作 xf8 没 有 相 关 的 状 态 信 息 ; TWINT = x 由 于 非 法 的 START 或 STOP 引 起 的 总 线 错 误 不 操 作 TWDR No TWCR action 等 待 或 进 行 当 前 传 输 不 操 作 TWDR X 只 影 响 内 部 硬 件 ; 不 会 发 送 STOP 到 总 线 上 总 线 将 释 放 并 清 零 TWSTO 77
将 几 个 TWI 模 式 组 合 到 一 起 在 某 些 情 况 下, 为 完 成 期 望 的 工 作, 必 须 将 几 种 TWI 模 式 组 合 起 来 例 如 从 串 行 EEPROM 读 取 数 据 典 型 的 这 种 传 输 包 括 以 下 步 骤 :. 传 输 必 须 启 动 2. 必 须 告 诉 EEPROM 读 取 的 位 置 3. 必 须 完 成 读 操 作 4. 传 送 必 须 结 束 注 意 数 据 可 从 主 机 传 到 从 机, 反 之 也 可 首 先 主 机 必 须 告 诉 从 机 读 取 实 际 的 位 置, 因 此 需 要 使 用 MT 模 式 ; 然 后 数 据 必 须 由 从 机 读 出, 需 要 使 用 MR 模 式, 但 传 送 方 向 必 须 改 变 在 上 述 步 骤 中, 主 机 必 须 保 持 对 总 线 的 控 制, 且 以 上 各 步 骤 应 该 自 动 进 行 如 果 在 多 主 机 系 统 中 违 反 这 一 规 则, 即 在 第 二 步 与 第 三 步 之 间 其 它 主 机 改 变 EEPROM 中 的 数 据 指 针, 则 主 机 读 取 的 数 据 位 置 是 错 误 的 传 送 方 向 改 变 是 通 过 在 发 送 地 址 字 节 与 接 收 数 据 之 间 发 送 REPEATED START 信 号 来 实 现 的 在 发 送 REPEATED START 信 号 后, 主 机 继 续 保 持 总 线 的 控 制 权 下 图 给 出 传 送 的 流 程 图 Figure 86. 几 种 TWI 模 式 联 合 访 问 串 行 EEPROM Master Transmitter Master Receiver S SLA+W A ADDRESS A Rs SLA+R A DATA A P S = START Rs = REPEATED START P = STOP Transmitted from master to slave Transmitted from slave to master 多 主 机 系 统 和 仲 裁 如 果 有 多 个 主 机 连 接 在 同 一 总 线 上, 它 们 中 的 一 个 或 多 个 也 许 会 同 时 开 始 一 个 数 据 传 送 TWI 协 议 确 保 在 这 种 情 况 下, 通 过 一 个 仲 裁 过 程, 允 许 其 中 的 一 个 主 机 进 行 传 送 而 不 会 丢 失 数 据 总 线 仲 裁 的 例 子 如 下 所 述, 该 例 中 有 两 个 主 机 试 图 向 从 接 收 器 发 送 数 据 Figure 87. 仲 裁 示 例 V CC Device MASTER TRANSMITTER Device 2 MASTER TRANSMITTER Device 3 SLAVE RECEIVER... Device n R R2 SDA SCL 有 几 种 不 同 的 情 况 会 产 生 总 线 仲 裁 过 程 : 两 个 或 更 多 的 主 机 同 时 与 一 个 从 机 进 行 通 信 在 这 种 情 况 下, 无 论 主 机 或 从 机 都 不 知 道 有 总 线 的 竞 争 两 个 或 更 多 的 主 机 同 时 对 同 一 个 从 机 进 行 不 同 的 数 据 或 方 向 的 访 问 在 这 种 情 况 下, 会 在 READ/WRITE 位 或 数 据 间 发 生 仲 裁 主 机 试 图 在 SDA 线 上 输 出 一 个 高 电 平 时, 如 果 其 他 主 机 已 经 输 出 ", 则 该 主 机 在 总 线 仲 裁 中 失 败 失 败 的 主 机 将 转 换 成 未 被 寻 址 的 从 机 模 式, 或 等 待 总 线 空 闲 后 发 送 一 个 新 的 START 信 号, 这 由 应 用 程 序 决 定 78 ATmega8(L)
ATmega8(L) 两 个 或 更 多 的 主 机 访 问 不 同 的 从 机 在 这 种 情 况 下, 总 线 仲 裁 在 SLA 发 生 主 机 试 图 在 SDA 线 上 输 出 一 个 高 电 平 时, 如 有 其 它 主 机 已 经 输 出 ", 则 该 主 机 将 在 总 线 仲 裁 中 失 败 在 SLA 总 线 仲 裁 失 败 的 主 机 将 切 换 到 从 机 模 式, 并 检 查 自 己 是 否 被 获 得 总 线 控 制 权 的 主 机 寻 址 如 果 被 寻 址, 它 将 进 入 SR 或 ST 模 式, 这 取 决 于 SLA 的 READ/WRITE 位 的 值 如 果 它 未 被 寻 址, 将 转 换 到 未 被 寻 址 的 从 机 模 式 或 等 待 总 线 空 闲, 发 送 一 个 新 的 START 信 号, 这 由 应 用 程 序 决 定 Figure 88 描 述 了 总 线 仲 裁 的 过 程, 图 中 的 数 字 为 TWI 的 状 态 值 Figure 88. 总 线 仲 裁 过 程 START SLA Data STOP Arbitration lost in SLA Arbitration lost in Data Own Address / General Call received No 38 TWI bus will be released and not addressed slave mode will be entered A START condition will be transmitted when the bus becomes free Yes Direction Write 68/78 Data byte will be received and NOT ACK will be returned Data byte will be received and ACK will be returned Read B Last data byte will be transmitted and NOT ACK should be received Data byte will be transmitted and ACK should be received 79
模 拟 比 较 器 模 拟 比 较 器 对 正 极 AIN 的 值 与 负 极 AIN 的 值 进 行 比 较 当 AIN 上 的 电 压 比 负 极 AIN 上 的 电 压 要 高 时, 模 拟 比 较 器 的 输 出 ACO 即 置 位 比 较 器 的 输 出 可 用 来 触 发 定 时 器 / 计 数 器 的 输 入 捕 捉 功 能 此 外, 比 较 器 还 可 触 发 自 己 专 有 的 独 立 的 中 断 用 户 可 以 选 择 比 较 器 是 以 上 升 沿 下 降 沿 还 是 交 替 变 化 的 边 沿 来 触 发 中 断 Figure 89 为 比 较 器 及 其 外 围 逻 辑 电 路 的 框 图 Figure 89. 模 拟 比 较 器 框 图 (2) BANDGAP REFERENCE ACBG ACME ADEN ADC MULTIPLEXER OUTPUT() Notes:. 见 P 82Table 72 2. 模 拟 比 较 器 的 管 脚 分 布 见 P 2 引 脚 配 置 及 P 59Table 28 特 殊 功 能 IO 寄 存 器 - SFIOR Bit 7 6 5 4 3 2 ACME PUD PSR2 PSR SFIOR 读 / 写 R R R R R/W R/W R/W R/W 初 始 值 Bit 3 ACME: 模 拟 比 较 器 多 路 复 用 器 使 能 当 此 位 为 逻 辑 ", 且 ADC 处 于 关 闭 状 态 (ADCSRA 寄 存 器 的 ADEN 为 " ) 时,ADC 多 路 复 用 器 为 模 拟 比 较 器 选 择 负 极 输 入 当 此 位 为 " 时, AIN 连 接 到 比 较 器 的 负 极 输 入 端 更 详 细 描 述 的 请 参 见 P 8 模 拟 比 较 器 多 工 输 入 8 ATmega8(L)
ATmega8(L) 模 拟 比 较 器 控 制 和 状 态 寄 存 器 - ACSR Bit 7 6 5 4 3 2 ACD ACBG ACO ACI ACIE ACIC ACIS ACIS ACSR 读 / 写 R/W R/W R R/W R/W R/W R/W R/W 初 始 值 N/A Bit 7 ACD: 模 拟 比 较 器 禁 用 ACD 置 位 时, 模 拟 比 较 器 的 电 源 被 切 断 可 以 在 任 何 时 候 设 置 此 位 来 关 掉 模 拟 比 较 器 这 可 以 减 少 器 件 工 作 模 式 及 空 闲 模 式 下 的 功 耗 改 变 ACD 位 时, 必 须 清 零 ACSR 寄 存 器 的 ACIE 位 来 禁 止 模 拟 比 较 器 中 断 否 则 ACD 改 变 时 可 能 会 产 生 中 断 Bit 6 ACBG: 选 择 模 拟 比 较 器 的 能 隙 基 准 源 ACBG 置 位 后, 模 拟 比 较 器 的 正 极 输 入 由 能 隙 基 准 源 所 取 代 否 则, AIN 连 接 到 模 拟 比 较 器 的 正 极 输 入 见 P 39 片 内 基 准 电 压 Bit 5 ACO: 模 拟 比 较 器 输 出 模 拟 比 较 器 的 输 出 经 过 同 步 后 直 接 连 到 ACO 同 步 机 制 引 入 了 -2 个 时 钟 周 期 的 延 时 Bit 4 ACI: 模 拟 比 较 器 中 断 标 志 当 比 较 器 的 输 出 事 件 触 发 了 由 ACIS 及 ACIS 定 义 的 中 断 模 式 时,ACI 置 位 如 果 ACIE 和 SREG 寄 存 器 的 全 局 中 断 标 志 I 也 置 位, 那 么 模 拟 比 较 器 中 断 服 务 程 序 即 得 以 执 行, 同 时 ACI 被 硬 件 清 零 ACI 也 可 以 通 过 写 " 来 清 除 Bit 3 ACIE: 模 拟 比 较 器 中 断 使 能 当 ACIE 位 被 置 " 且 状 态 寄 存 器 中 的 全 局 中 断 标 志 I 也 被 置 位 时, 模 拟 比 较 器 中 断 被 激 活 否 则 中 断 被 禁 止 Bit 2 ACIC: 模 拟 比 较 器 输 入 捕 捉 使 能 ACIC 置 位 后 允 许 通 过 模 拟 比 较 器 来 触 发 T/C 的 输 入 捕 捉 功 能 此 时 比 较 器 的 输 出 被 直 接 连 接 到 输 入 捕 捉 的 前 端 逻 辑, 从 而 使 得 比 较 器 可 以 利 用 T/C 输 入 捕 捉 中 断 逻 辑 的 噪 声 抑 制 器 及 触 发 沿 选 择 功 能 ACIC 为 " 时 模 拟 比 较 器 及 输 入 捕 捉 功 能 之 间 没 有 任 何 联 系 为 了 使 比 较 器 可 以 触 发 T/C 的 输 入 捕 捉 中 断, 定 时 器 中 断 屏 蔽 寄 存 器 TIMSK 的 TICIE 必 须 置 位 Bits, ACIS, ACIS: 模 拟 比 较 器 中 断 模 式 选 择 这 两 位 确 定 触 发 模 拟 比 较 器 中 断 的 事 件 Table 7 给 出 了 不 同 的 设 置 Table 7. ACIS/ACIS 设 置 ACIS ACIS 中 断 模 式 比 较 器 输 出 变 化 即 可 触 发 中 断 保 留 比 较 器 输 出 的 下 降 沿 产 生 中 断 比 较 器 输 出 的 上 升 沿 产 生 中 断 需 要 改 变 ACIS/ACIS 时, 必 须 清 零 ACSR 寄 存 器 的 中 断 使 能 位 来 禁 止 模 拟 比 较 器 中 断 否 则 有 可 能 在 改 变 这 两 位 时 产 生 中 断 模 拟 比 较 器 多 工 输 入 可 以 选 择 ADC7.. 之 中 的 任 意 一 个 来 代 替 模 拟 比 较 器 的 负 极 输 入 端 ADC 复 用 器 可 用 来 完 成 这 个 功 能 当 然, 为 了 使 用 这 个 功 能 首 先 必 须 关 掉 ADC 如 果 模 拟 比 较 器 复 用 器 使 能 位 (SFIOR 中 的 ACME) 被 置 位, 且 ADC 也 已 经 关 掉 (ADCSRA 寄 存 器 的 ADEN 为 ), 8
则 可 以 通 过 ADMUX 寄 存 器 的 MUX2.. 来 选 择 替 代 模 拟 比 较 器 负 极 输 入 的 管 脚, 详 见 Table 72 如 果 ACME 清 零 或 ADEN 置 位, 则 模 拟 比 较 器 的 负 极 输 入 为 AIN () Table 72. 模 拟 比 较 器 复 用 输 入 ACME ADEN MUX2.. 模 拟 比 较 器 负 极 输 入 x xxx AIN xxx AIN ADC ADC ADC2 ADC3 ADC4 ADC5 ADC6 ADC7 Note:. 只 有 在 TQFP 与 MLF 封 装 下 ADC7..6 可 用 82 ATmega8(L)
ATmega8(L) 模 数 转 换 器 特 点 位 精 度.5 LSB 的 非 线 性 度 ± 2 LSB 的 绝 对 精 度 3-26 µs 的 转 换 时 间 最 高 分 辨 率 时 采 样 率 高 达 5 ksps 6 路 复 用 的 单 端 输 入 通 道 2 路 附 加 复 用 的 单 端 输 入 通 道 (TQFP 与 MLF 封 装 ) 可 选 的 左 对 齐 ADC 读 数 - V CC 的 ADC 输 入 电 压 范 围 可 选 的 2.56V ADC 参 考 电 压 连 续 转 换 或 单 次 转 换 模 式 ADC 转 换 结 束 中 断 基 于 睡 眠 模 式 的 噪 声 抑 制 器.ATmega8 有 一 个 位 的 逐 次 逼 近 型 ADC ADC 与 一 个 8 通 道 的 模 拟 多 路 复 用 器 连 接, 能 对 来 自 端 口 C 的 8 路 单 端 输 入 电 压 进 行 采 样 单 端 电 压 输 入 以 V (GND) 为 基 准 ADC 包 括 一 个 采 样 保 持 电 路, 以 确 保 在 转 换 过 程 中 输 入 到 ADC 的 电 压 保 持 恒 定 ADC 的 框 图 如 Figure 9 所 示 ADC 由 AVCC 引 脚 单 独 提 供 电 源 AVCC 与 V CC 之 间 的 偏 差 不 能 超 过 ±.3V 请 参 考 P 88 ADC 噪 声 抑 制 器 来 了 解 如 何 连 接 这 个 引 脚 标 称 值 为 2.56V 的 基 准 电 压, 以 及 AVCC, 都 位 于 器 件 之 内 基 准 电 压 可 以 通 过 在 AREF 引 脚 上 加 一 个 电 容 进 行 解 耦, 以 更 好 地 抑 制 噪 声 83
Figure 9. 模 数 转 换 器 方 框 图 ADC CONVERSION COMPLETE IRQ 8-BIT DATA BUS REFS ADC MULTIPLEXER SELECT (ADMUX) REFS ADLAR MUX3 MUX2 MUX MUX ADEN ADFR ADIF ADIF ADIE ADC CTRL. & STATUS REGISTER (ADCSRA) ADSC ADPS2 ADPS ADPS 5 ADC DATA REGISTER (ADCH/ADCL) ADC[9:] MUX DECODER PRESCALER AVCC AREF INTERNAL 2.56V REFERENCE CHANNEL SELECTION -BIT DAC CONVERSION LOGIC SAMPLE & HOLD COMPARATOR - + GND BANDGAP REFERENCE ADC7 ADC6 ADC5 ADC4 INPUT MUX ADC MULTIPLEXER OUTPUT ADC3 ADC2 ADC ADC ADC 通 过 逐 次 逼 近 的 方 法 将 输 入 的 模 拟 电 压 转 换 成 一 个 位 的 数 字 量 最 小 值 代 表 GND, 最 大 值 代 表 AREF 引 脚 上 的 电 压 再 减 去 LSB 通 过 写 ADMUX 寄 存 器 的 REFSn 位 可 以 把 AVCC 或 内 部 2.56V 的 参 考 电 压 连 接 到 AREF 引 脚 在 AREF 上 外 加 电 容 可 以 对 片 内 参 考 电 压 进 行 解 耦 以 提 高 噪 声 抑 制 性 能 模 拟 输 入 通 道 与 差 分 增 益 可 以 通 过 写 ADMUX 寄 存 器 的 MUX 位 来 选 择 任 何 ADC 输 入 引 脚, 像 GND 及 固 定 能 隙 参 考 电 压, 都 可 以 作 为 ADC 的 单 端 输 入 通 过 设 置 ADCSRA 寄 存 器 的 ADEN 即 可 启 动 ADC 只 有 当 ADEN 置 位 时 参 考 电 压 及 输 入 通 道 选 择 才 生 效 ADEN 清 零 时 ADC 并 不 耗 电, 因 此 建 议 在 进 入 节 能 睡 眠 模 式 之 前 关 闭 ADC ADC 转 换 结 果 为 位, 存 放 于 ADC 数 据 寄 存 器 ADCH 及 ADCL 中 默 认 情 况 下 转 换 结 果 为 右 对 齐, 但 可 通 过 设 置 ADMUX 寄 存 器 的 ADLAR 变 为 左 对 齐 如 果 要 求 转 换 结 果 左 对 齐, 且 最 高 只 需 8 位 的 转 换 精 度, 那 么 只 要 读 取 ADCH 就 足 够 了 否 则 要 先 读 ADCL, 再 读 ADCH, 以 保 证 数 据 寄 存 器 中 的 内 容 是 同 一 次 转 换 的 结 果 一 旦 读 出 ADCL, ADC 对 数 据 寄 存 器 的 寻 址 就 被 阻 止 了 也 就 是 说, 读 取 ADCL 之 后, 即 使 84 ATmega8(L)
ATmega8(L) 在 读 ADCH 之 前 又 有 一 次 ADC 转 换 结 束, 数 据 寄 存 器 的 数 据 也 不 会 更 新, 从 而 保 证 了 转 换 结 果 不 丢 失 ADCH 被 读 出 后, ADC 即 可 再 次 访 问 ADCH 及 ADCL 寄 存 器 ADC 转 换 结 束 可 以 触 发 中 断 即 使 由 于 转 换 发 生 在 读 取 ADCH 与 ADCL 之 间 而 造 成 ADC 无 法 访 问 数 据 寄 存 器, 并 因 此 丢 失 了 转 换 数 据, 中 断 仍 将 触 发 启 动 一 次 转 换 预 分 频 及 ADC 转 换 时 序 向 ADC 启 动 转 换 位 ADSC 位 写 " 可 以 启 动 单 次 转 换 在 转 换 过 程 中 此 位 保 持 为 高, 直 到 转 换 结 束, 然 后 被 硬 件 清 零 如 果 在 转 换 过 程 中 选 择 了 另 一 个 通 道, 那 么 ADC 会 在 改 变 通 道 前 完 成 这 一 次 转 换 使 用 ADC 中 断 标 志 作 为 触 发 源, 可 以 在 正 在 进 行 的 转 换 结 束 后 即 开 始 下 一 次 ADC 转 换 之 后 ADC 便 工 作 在 连 续 转 换 模 式, 持 续 地 进 行 采 样 并 对 ADC 数 据 寄 存 器 进 行 更 新 第 一 次 转 换 通 过 向 ADCSRA 寄 存 器 的 ADSC 写 来 启 动 在 此 模 式 下, 后 续 的 ADC 转 换 不 依 赖 于 ADC 中 断 标 志 ADIF 是 否 置 位 Figure 9. ADC 预 分 频 器 ADEN START CK Reset 7-BIT ADC PRESCALER CK/2 CK/4 CK/8 CK/6 CK/32 CK/64 CK/28 ADPS ADPS ADPS2 ADC CLOCK SOURCE 在 默 认 条 件 下, 逐 次 逼 近 电 路 需 要 一 个 从 5 khz 到 2 khz 的 输 入 时 钟 以 获 得 最 大 精 度 如 果 所 需 的 转 换 精 度 低 于 比 特, 那 么 输 入 时 钟 频 率 可 以 高 于 2 khz, 以 达 到 更 高 的 采 样 率 ADC 模 块 包 括 一 个 预 分 频 器, 它 可 以 由 任 何 超 过 khz 的 CPU 时 钟 来 产 生 可 接 受 的 ADC 时 钟 预 分 频 器 通 过 ADCSRA 寄 存 器 的 ADPS 进 行 设 置 置 位 ADCSRA 寄 存 器 的 ADEN 将 使 能 ADC, 预 分 频 器 开 始 计 数 只 要 ADEN 为, 预 分 频 器 就 持 续 计 数, 直 到 ADEN 清 零 ADCSRA 寄 存 器 的 ADSC 置 位 后, 单 端 转 换 在 下 一 个 ADC 时 钟 周 期 的 上 升 沿 开 始 启 动 正 常 转 换 需 要 3 个 ADC 时 钟 周 期 为 了 初 始 化 模 拟 电 路, ADC 使 能 (ADCSRA 寄 存 器 的 ADEN 置 位 ) 后 的 第 一 次 转 换 需 要 25 个 ADC 时 钟 周 期 在 普 通 的 ADC 转 换 过 程 中, 采 样 保 持 在 转 换 启 动 之 后 的.5 个 ADC 时 钟 开 始 ; 而 第 一 次 ADC 转 换 的 采 样 保 持 则 发 生 在 转 换 启 动 之 后 的 3.5 个 ADC 时 钟 转 换 结 束 后,ADC 结 果 被 送 入 ADC 数 据 寄 存 器, 且 ADIF 标 志 置 位 ADSC 同 时 清 零 ( 单 次 转 换 模 式 ) 之 后 软 件 可 以 再 次 置 位 ADSC 标 志, 从 而 在 ADC 的 第 一 个 上 升 沿 启 动 一 次 新 的 转 换 在 连 续 转 换 模 式 下, 当 ADSC 为 高 时, 只 要 转 换 一 结 束, 下 一 次 转 换 马 上 开 始 转 换 时 间 请 见 Table 73 85
Figure 92. ADC 时 序 图, 第 一 次 转 换 ( 单 次 转 换 模 式 ) First Conversion Next Conversion Cycle Number 2 2 3 4 5 6 7 8 9 2 2 22 23 24 25 2 3 ADC Clock ADEN ADSC ADIF ADCH MSB of Result ADCL LSB of Result MUX and REFS Update Sample & Hold Conversion Complete MUX and REFS Update Figure 93. ADC 时 序 图, 单 次 转 换 One Conversion Next Conversion Cycle Number 2 3 4 5 6 7 8 9 2 3 2 3 ADC Clock ADSC ADIF ADCH MSB of Result ADCL LSB of Result MUX and REFS Update Sample & Hold Conversion Complete MUX and REFS Update Figure 94. ADC 时 序 图, 连 续 转 换 One Conversion Next Conversion Cycle Number 2 3 2 3 4 ADC Clock ADSC ADIF ADCH MSB of Result ADCL LSB of Result Conversion Complete MUX and REFS Update Sample &Hold 86 ATmega8(L)
ATmega8(L) Table 73. ADC 转 换 时 间 条 件 采 样 & 保 持 ( 启 动 转 换 后 的 时 钟 周 期 数 ) 转 换 时 间 ( 周 期 ) 第 一 次 转 换 3.5 25 正 常 转 换, 单 端.5 3 改 变 通 道 或 基 准 源 ADMUX 寄 存 器 中 的 MUXn 及 REFS: 通 过 临 时 寄 存 器 实 现 了 单 缓 冲 CPU 可 对 此 临 时 寄 存 器 进 行 随 机 访 问 这 保 证 了 在 转 换 过 程 中 通 道 和 基 准 源 的 切 换 发 生 于 安 全 的 时 刻 在 转 换 启 动 之 前 通 道 及 基 准 源 的 选 择 可 随 时 进 行 一 旦 转 换 开 始 就 不 允 许 再 选 择 通 道 和 基 准 源 了, 从 而 保 证 ADC 有 充 足 的 采 样 时 间 在 转 换 完 成 (ADCSRA 寄 存 器 的 ADIF 置 位 ) 之 前 的 最 后 一 个 时 钟 周 期, 通 道 和 基 准 源 的 选 择 又 可 以 重 新 开 始 转 换 的 开 始 时 刻 为 ADSC 置 位 后 的 下 一 个 时 钟 的 上 升 沿 因 此, 建 议 用 户 在 置 位 ADSC 之 后 的 一 个 ADC 时 钟 周 期 里, 不 要 操 作 ADMUX 以 选 择 新 的 通 道 及 基 准 源 若 ADFR 及 ADEN 都 置 位, 则 中 断 事 件 可 以 在 任 意 时 刻 发 生 如 果 在 此 期 间 改 变 ADMUX 寄 存 器 的 内 容, 那 么 用 户 就 无 法 判 别 下 一 次 转 换 是 基 于 旧 的 设 置 还 是 最 新 的 设 置 在 以 下 时 刻 可 以 安 全 地 对 ADMUX 进 行 更 新 :. ADFR 或 ADEN 为 2. 在 转 换 过 程 中, 但 是 在 触 发 事 件 发 生 后 至 少 一 个 ADC 时 钟 周 期 3. 转 换 结 束 之 后, 但 是 在 作 为 触 发 源 的 中 断 标 志 清 零 之 前 如 果 在 上 面 提 到 的 任 一 种 情 况 下 更 新 ADMUX, 那 么 新 设 置 将 在 下 一 次 ADC 时 生 效 87
ADC 输 入 通 道 选 择 模 拟 通 道 时 请 注 意 以 下 指 导 方 针 : 工 作 于 单 次 转 换 模 式 时, 总 是 在 启 动 转 换 之 前 选 定 通 道 在 ADSC 置 位 后 的 一 个 ADC 时 钟 周 期 就 可 以 选 择 新 的 模 拟 输 入 通 道 了 但 是 最 简 单 的 办 法 是 等 待 转 换 结 束 后 再 改 变 通 道 在 连 续 转 换 模 式 下, 总 是 在 第 一 次 转 换 开 始 之 前 选 定 通 道 在 ADSC 置 位 后 的 一 个 ADC 时 钟 周 期 就 可 以 选 择 新 的 模 拟 输 入 通 道 了 但 是 最 简 单 的 办 法 是 等 待 转 换 结 束 后 再 改 变 通 道 然 而, 此 时 新 一 次 转 换 已 经 自 动 开 始 了, 下 一 次 的 转 换 结 果 反 映 的 是 以 前 选 定 的 模 拟 输 入 通 道 以 后 的 转 换 才 是 针 对 新 通 道 的 ADC 基 准 电 压 源 ADC 噪 声 抑 制 器 ADC 的 参 考 电 压 源 (V REF ) 反 映 了 ADC 的 转 换 范 围 若 单 端 通 道 电 平 超 过 了 V REF, 其 结 果 将 接 近 x3ff V REF 可 以 是 AVCC 内 部 2.56V 基 准 或 外 接 于 AREF 引 脚 的 电 压 AVCC 通 过 一 个 无 源 开 关 与 ADC 相 连 片 内 的 2.56V 参 考 电 压 由 能 隙 基 准 源 (V BG ) 通 过 内 部 放 大 器 产 生 无 论 是 哪 种 情 况, AREF 都 直 接 与 ADC 相 连, 通 过 在 AREF 与 地 之 间 外 加 电 容 可 以 提 高 参 考 电 压 的 抗 噪 性 V REF 可 通 过 高 输 入 内 阻 的 伏 特 表 在 AREF 引 脚 测 得 由 于 V REF 的 阻 抗 很 高, 因 此 只 能 连 接 容 性 负 载 如 果 将 一 个 固 定 电 源 接 到 AREF 引 脚, 那 么 用 户 就 不 能 选 择 其 他 的 基 准 源 了, 因 为 这 会 导 致 片 内 基 准 源 与 外 部 参 考 源 的 短 路 如 果 AREF 引 脚 没 有 联 接 任 何 外 部 参 考 源, 用 户 可 以 选 择 AVCC 或 2.56V 作 为 基 准 源 参 考 源 改 变 后 的 第 一 次 ADC 转 换 结 果 可 能 不 准 确, 建 议 用 户 不 要 使 用 这 一 次 的 转 换 结 果 ADC 的 噪 声 抑 制 器 使 其 可 以 在 睡 眠 模 式 下 进 行 转 换, 从 而 降 低 由 于 CPU 及 外 围 I/O 设 备 噪 声 引 入 的 影 响 噪 声 抑 制 器 可 在 ADC 降 噪 模 式 及 空 闲 模 式 下 使 用 为 了 使 用 这 一 特 性, 应 采 用 如 下 步 骤 :. 确 定 ADC 已 经 使 能, 且 没 有 处 于 转 换 状 态 工 作 模 式 应 该 为 单 次 转 换, 并 且 ADC 转 换 结 束 中 断 使 能 2. 进 入 ADC 降 噪 模 式 ( 或 空 闲 模 式 ) 一 旦 CPU 被 挂 起, ADC 便 开 始 转 换 3. 如 果 在 ADC 转 换 结 束 之 前 没 有 其 他 中 断 产 生, 那 么 ADC 中 断 将 唤 醒 CPU 并 执 行 ADC 转 换 结 束 中 断 服 务 程 序 如 果 在 ADC 转 换 结 束 之 前 有 其 他 的 中 断 源 唤 醒 了 CPU, 对 应 的 中 断 服 务 程 序 得 到 执 行 ADC 转 换 结 束 后 产 生 ADC 转 换 结 束 中 断 请 求 CPU 将 工 作 到 新 的 休 眠 指 令 得 到 执 行 进 入 除 空 闲 模 式 及 ADC 降 噪 模 式 之 外 的 其 他 休 眠 模 式 时, ADC 不 会 自 动 关 闭 在 进 入 这 些 休 眠 模 式 时, 建 议 将 ADEN 清 零 以 降 低 功 耗 88 ATmega8(L)
ATmega8(L) 模 拟 输 入 电 路 单 端 通 道 的 模 拟 输 入 电 路 见 Figure 95. 不 论 是 否 用 作 ADC 的 输 入 通 道, 输 入 到 ADCn 的 模 拟 信 号 都 受 到 引 脚 电 容 及 输 入 泄 露 的 影 响 用 作 ADC 的 输 入 通 道 时, 模 拟 信 号 源 必 须 通 过 一 个 串 联 电 阻 ( 输 入 通 道 的 组 合 电 阻 ) 驱 动 采 样 保 持 (S/H) 电 容 ADC 针 对 那 些 输 出 阻 抗 接 近 于 kω 或 更 小 的 模 拟 信 号 做 了 优 化 对 于 这 样 的 信 号 采 样 时 间 可 以 忽 略 不 计 若 信 号 具 有 更 高 的 阻 抗, 那 么 采 样 时 间 就 取 决 于 对 S/H 电 容 充 电 的 时 间 这 个 时 间 可 能 变 化 很 大 建 议 用 户 使 用 输 出 阻 抗 低 且 变 化 缓 慢 的 模 拟 信 号, 因 为 这 可 以 减 少 对 S/H 电 容 的 电 荷 传 输 频 率 高 于 奈 奎 斯 特 频 率 (f ADC /2) 的 信 号 源 不 能 用 于 任 何 一 个 通 道, 这 样 可 以 避 免 不 可 预 知 的 信 号 卷 积 造 成 的 失 真 在 把 信 号 输 入 到 ADC 之 前 最 好 使 用 一 个 低 通 滤 波 器 来 滤 掉 高 频 信 号 Figure 95. 模 拟 输 入 电 路 I IH ADCn.. kω C S/H = 4 pf I IL V CC /2 模 拟 噪 声 抑 制 技 术 设 备 内 部 及 外 部 的 数 字 电 路 都 会 产 生 电 磁 干 扰 (EMI), 从 而 影 响 模 拟 测 量 的 精 度 如 果 转 换 精 度 要 求 较 高, 那 么 可 以 通 过 以 下 方 法 来 减 少 噪 声 :. 模 拟 通 路 越 短 越 好 保 证 模 拟 信 号 线 位 于 模 拟 地 之 上, 并 使 它 们 与 高 速 切 换 的 数 字 信 号 线 分 开 2. 如 Figure 96 所 示, AVCC 应 通 过 一 个 LC 网 络 与 数 字 电 压 源 V CC 连 接 3. 使 用 ADC 噪 声 抑 制 器 来 降 低 来 自 CPU 的 干 扰 噪 声 4. 如 果 有 ADC[3..] 端 口 被 用 作 数 字 输 出, 那 么 必 须 保 证 在 转 换 进 行 过 程 中 它 们 不 会 有 电 平 的 切 换 而 使 用 两 线 接 口 (ADC4 与 ADC5) 将 影 响 ADC4 与 ADC5 的 转 换, 但 不 影 响 其 他 ADC 通 道 89
Figure 96. ADC 电 源 连 接 图 GND VCC PC5 (ADC5/SCL) PC4 (ADC4/SDA) PC3 (ADC3) PC2 (ADC2) PC (ADC) PC (ADC) ADC7 GND AREF ADC6 AVCC nf µh Analog Ground Plane PB5 ADC 精 度 定 义 一 个 n 位 的 单 端 ADC 将 GND 与 V REF 之 间 的 线 性 电 压 转 换 成 2 n 个 (LSBs) 不 同 的 数 字 量 最 小 的 转 换 码 为, 最 大 的 转 换 码 为 2 n - 以 下 几 个 参 数 描 述 了 与 理 想 情 况 之 间 的 偏 差 : 偏 移 : 第 一 次 转 换 (x 到 x) 与 理 想 转 换 (.5 LSB) 之 间 的 偏 差 理 想 情 况 : LSB Figure 97. 偏 移 误 差 Output Code Ideal ADC Actual ADC Offset Error V REF Input Voltage 9 ATmega8(L)
INL ATmega8(L) 增 益 误 差 : 调 整 偏 差 之 后, 最 后 一 次 转 换 (x3fe 到 x3ff) 与 理 想 情 况 ( 最 大 值 以 下.5 LSB) 之 间 的 偏 差 即 为 增 益 误 差 理 想 值 为 LSB Figure 98. 增 益 误 差 Output Code Gain Error Ideal ADC Actual ADC V REF Input Voltage 整 体 非 线 性 (INL): 调 整 偏 移 及 增 益 误 差 之 后, 所 有 实 际 转 换 与 理 想 转 换 之 间 的 最 大 误 差 即 为 INL 理 想 值 : LSB Figure 99. 整 体 非 线 性 (INL) Output Code Ideal ADC Actual ADC V REF Input Voltage 差 分 非 线 性 (DNL): 实 际 码 宽 ( 两 个 邻 近 转 换 之 间 的 码 间 距 ) 与 理 论 码 宽 ( LSB) 之 间 的 偏 差 理 论 值 : LSB 9
Figure. 差 分 非 线 性 (DNL) Output Code x3ff LSB x DNL V REF Input Voltage 量 化 误 差 : 由 于 输 入 电 压 被 量 化 成 有 限 位 的 数 码, 某 个 范 围 的 输 入 电 压 ( LSB) 被 转 换 为 相 同 的 数 码 量 化 误 差 总 是 为 ±.5 LSB 绝 对 精 度 : 所 有 实 际 转 换 ( 未 经 调 整 ) 与 理 论 转 换 之 间 的 最 大 偏 差 由 偏 移 增 益 误 差 差 分 误 差 非 线 性 及 量 化 误 差 构 成 理 想 值 为 ±.5 LSB ADC 转 换 结 果 转 换 结 束 后 (ADIF 为 高 ), 转 换 结 果 被 存 入 ADC 结 果 寄 存 器 (ADCL, ADCH) 单 次 转 换 的 结 果 如 下 : ADC = V IN 24 -------------------------- V REF 式 中,V IN 为 被 选 中 引 脚 的 输 入 电 压,V REF 为 参 考 电 压 ( 参 见 P 92Table 74 与 P 93Table 75 ) x 代 表 模 拟 地 电 平, x3ff 代 表 所 选 参 考 电 压 的 数 值 减 去 LSB ADC 多 工 选 择 寄 存 器 - ADMUX Bit 7 6 5 4 3 2 REFS REFS ADLAR MUX3 MUX2 MUX MUX ADMUX 读 / 写 R/W R/W R/W R R/W R/W R/W R/W 初 始 值 Bit 7:6 REFS:: 参 考 电 压 选 择 如 Table 74 所 示, 通 过 这 几 位 可 以 选 择 参 考 电 压 如 果 在 转 换 过 程 中 改 变 了 它 们 的 设 置, 只 有 等 到 当 前 转 换 结 束 (ADCSRA 寄 存 器 的 ADIF 置 位 ) 之 后 改 变 才 会 起 作 用 如 果 在 AREF 引 脚 上 施 加 了 外 部 参 考 电 压, 内 部 参 考 电 压 就 不 能 被 选 用 了 Table 74. ADC 参 考 电 压 选 择 REFS REFS 参 考 电 压 选 择 AREF, 内 部 Vref 关 闭 AVCC, AREF 引 脚 外 加 滤 波 电 容 保 留 2.56V 的 片 内 基 准 电 压 源, AREF 引 脚 外 加 滤 波 电 容 Bit 5 ADLAR: ADC 转 换 结 果 左 对 齐 92 ATmega8(L)
ATmega8(L) ADLAR 影 响 ADC 转 换 结 果 在 ADC 数 据 寄 存 器 中 的 存 放 形 式 ADLAR 置 位 时 转 换 结 果 为 左 对 齐, 否 则 为 右 对 齐 ADLAR 的 改 变 将 立 即 影 响 ADC 数 据 寄 存 器 的 内 容, 不 论 是 否 有 转 换 正 在 进 行 关 于 这 一 位 的 完 整 描 述 请 见 P 95 ADC 数 据 寄 存 器 - ADCL 及 ADCH Bits 3: MUX3:: 模 拟 通 道 选 择 位 通 过 这 几 位 的 设 置, 可 以 对 连 接 到 ADC 的 模 拟 输 入 进 行 选 择, 详 见 Table 75 如 果 在 转 换 过 程 中 改 变 这 几 位 的 值, 那 么 只 有 到 转 换 结 束 (ADCSRA 寄 存 器 的 ADIF 置 位 ) 后 新 的 设 置 才 有 效 Table 75. 输 入 通 道 选 择 MUX3.. 单 端 输 入 ADC ADC ADC2 ADC3 ADC4 ADC5 ADC6 ADC7.23V (V BG ) V (GND) 93
ADC 控 制 和 状 态 寄 存 器 A - ADCSRA Bit 7 6 5 4 3 2 ADEN ADSC ADFR ADIF ADIE ADPS2 ADPS ADPS ADCSRA 读 / 写 R/W R/W R/W R/W R/W R/W R/W R/W 初 始 值 Bit 7 ADEN: ADC 使 能 ADEN 置 位 即 启 动 ADC, 否 则 ADC 功 能 关 闭 在 转 换 过 程 中 关 闭 ADC 将 立 即 终 止 正 在 进 行 的 转 换 Bit 6 ADSC: ADC 开 始 转 换 在 单 次 转 换 模 式 下,ADSC 置 位 将 启 动 一 次 ADC 转 换 在 连 续 转 换 模 式 下,ADSC 置 位 将 启 动 首 次 转 换 第 一 次 转 换 ( 在 ADC 启 动 之 后 置 位 ADSC, 或 者 在 使 能 ADC 的 同 时 置 位 ADSC) 需 要 25 个 ADC 时 钟 周 期, 而 不 是 正 常 情 况 下 的 3 个 第 一 次 转 换 执 行 ADC 初 始 化 的 工 作 在 转 换 进 行 过 程 中 读 取 ADSC 的 返 回 值 为 ", 直 到 转 换 结 束 ADSC 清 零 不 产 生 任 何 动 作 Bit 5 ADFR: ADC 连 续 转 换 选 择 该 位 置 位 时, 运 行 在 连 续 转 换 模 式 该 模 式 下,ADC 不 断 对 数 据 寄 存 器 进 行 采 样 与 更 新 该 位 清 零, 终 止 连 续 转 换 模 式 Bit 4 ADIF: ADC 中 断 标 志 在 ADC 转 换 结 束, 且 数 据 寄 存 器 被 更 新 后, ADIF 置 位 如 果 ADIE 及 SREG 中 的 全 局 中 断 使 能 位 I 也 置 位,ADC 转 换 结 束 中 断 服 务 程 序 即 得 以 执 行, 同 时 ADIF 硬 件 清 零 此 外, 还 可 以 通 过 向 此 标 志 写 来 清 ADIF 要 注 意 的 是, 如 果 对 ADCSRA 进 行 读 - 修 改 - 写 操 作, 那 么 待 处 理 的 中 断 会 被 禁 止 这 也 适 用 于 SBI 及 CBI 指 令 Bit 3 ADIE: ADC 中 断 使 能 若 ADIE 及 SREG 的 位 I 置 位, ADC 转 换 结 束 中 断 即 被 使 能 94 ATmega8(L)
ATmega8(L) Bits 2: ADPS2:: ADC 预 分 频 器 选 择 位 由 这 几 位 来 确 定 XTAL 与 ADC 输 入 时 钟 之 间 的 分 频 因 子 Table 76. ADC 预 分 频 选 择 ADPS2 ADPS ADPS 分 频 因 子 2 2 4 8 6 32 64 28 ADC 数 据 寄 存 器 - ADCL 及 ADCH ADLAR = ADLAR = Bit 5 4 3 2 9 8 ADC9 ADC8 ADCH ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC ADC ADCL 7 6 5 4 3 2 读 / 写 R R R R R R R R R R R R R R R R 初 始 值 Bit 5 4 3 2 9 8 ADC9 ADC8 ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADCH ADC ADC ADCL 7 6 5 4 3 2 读 / 写 R R R R R R R R R R R R R R R R 初 始 值 ADC 转 换 结 束 后, 转 换 结 果 存 于 这 两 个 寄 存 器 之 中 如 果 采 用 差 分 通 道, 结 果 由 2 的 补 码 形 式 表 示 读 取 ADCL 之 后,ADC 数 据 寄 存 器 一 直 要 等 到 ADCH 也 被 读 出 才 可 以 进 行 数 据 更 新 因 此, 如 果 转 换 结 果 为 左 对 齐, 且 要 求 的 精 度 不 高 于 8 比 特, 那 么 仅 需 读 取 ADCH 就 足 够 了 否 则 必 须 先 读 出 ADCL 再 读 ADCH ADMUX 寄 存 器 的 ADLAR 及 MUXn 会 影 响 转 换 结 果 在 数 据 寄 存 器 中 的 表 示 方 式 如 果 ADLAR 为, 那 么 结 果 为 左 对 齐 ; 反 之 ( 系 统 缺 省 设 置 ), 结 果 为 右 对 齐 ADC9:: ADC 转 换 结 果 ADC 转 换 的 结 果, 细 节 见 P 92 ADC 转 换 结 果 95
支 持 引 导 装 入 程 序 - 在 写 的 同 时 可 以 读 (RWW, Read-While- Write) 的 自 我 编 程 能 力 特 点 应 用 程 序 Flash 区 以 及 引 导 程 序 Flash 区 应 用 程 序 区 引 导 程 序 区 (Boot Loader Section) - BLS RWW Flash 区 及 非 RWW Flash 区 Boot Loader 为 通 过 MCU 本 身 来 下 载 和 上 载 程 序 代 码 提 供 了 一 个 真 正 的 同 时 读 - 写 (Read- While-Write, 以 下 简 称 RWW) 自 编 程 机 制 这 一 特 点 使 得 系 统 可 以 在 MCU 的 控 制 下, 通 过 驻 留 于 程 序 Flash 的 Boot Loader, 灵 活 地 进 行 应 用 软 件 升 级 Boot Loader 可 以 使 用 任 何 器 件 具 有 的 数 据 接 口 和 相 关 的 协 议 获 得 代 码 并 把 代 码 ( 程 序 ) 写 入 Flash, 或 者 从 程 序 存 储 器 读 取 代 码 Boot Loader 区 的 程 序 可 以 写 整 个 Flash, 包 括 Boot Loader 区 本 身 因 而 Boot Loader 可 以 对 其 自 身 进 行 修 改, 甚 至 将 自 己 擦 除 Boot Loader 存 储 器 空 间 的 大 小 可 以 通 过 熔 丝 位 进 行 配 置 Boot Loader 具 有 两 套 程 序 加 密 位, 各 自 可 以 独 立 设 置, 给 用 户 提 供 了 选 择 保 护 级 的 灵 活 性 RWW 自 编 程 灵 活 的 Boot 存 储 区 配 置 高 度 的 安 全 性 ( 有 单 独 的 Boot 锁 定 位 实 现 灵 活 的 程 序 保 护 ) 有 独 立 的 熔 丝 位 用 于 选 择 复 位 向 量 () 优 化 的 页 大 小 代 码 优 化 的 算 法 有 效 的 RWW 支 持 Note:. 页 是 Flash 的 一 个 部 分, 由 数 个 字 节 组 成 ( 见 P 23Table 93 ), 在 编 程 过 程 中 使 用 页 的 组 织 结 构 不 影 响 正 常 的 操 作 Flash 由 两 个 区 构 成, 应 用 区 和 Boot Loader 区 ( 见 Figure 2) 两 个 区 的 存 储 空 间 大 小 由 BOOTSZ 熔 丝 位 配 置, 如 P 27Table 82 和 Figure 2 所 示 由 于 两 个 区 使 用 不 同 的 锁 定 位, 所 以 可 以 具 有 不 同 的 加 密 级 别 应 用 区 是 Flash 用 来 存 储 应 用 代 码 的 区 域 应 用 区 的 保 护 级 别 通 过 应 用 Boot 锁 定 位 (Boot 锁 定 位 ) 确 定, 详 见 P 99Table 78 由 于 SPM 指 令 在 应 用 区 执 行 时 是 无 效 的, 所 以 应 用 区 不 能 用 来 存 储 Boot Loader 代 码 应 用 区 用 来 存 储 应 用 代 码, 而 Boot Loader 软 件 必 须 保 存 在 BLS 这 是 因 为 只 有 在 BLS 运 行 时 SPM 指 令 才 有 效 SPM 指 令 可 以 访 问 整 个 Flash, 包 括 BLS 本 身 Boot Loader 区 的 保 护 级 别 通 过 Boot Loader 锁 定 位 (Boot 锁 定 位 ) 确 定, 详 见 P 99Table 79 CPU 是 否 支 持 RWW, 或 者 CPU 是 否 在 利 用 Boot Loader 软 件 进 行 代 码 更 新 时 停 止, 取 决 于 被 编 程 的 是 哪 个 地 址 除 了 前 面 所 述 的 通 过 BOOTSZ 熔 丝 位 配 置 的 两 个 区 之 外,Flash 还 可 以 分 成 两 个 固 定 的 区 同 时 读 - 写 (RWW) 区 和 非 同 时 读 - 写 (NRWW) 区 RWW- 和 NRWW 的 分 界 在 P 27Table 83 和 P 98Figure 2 给 出 两 个 区 的 主 要 区 别 是 : 对 RWW 区 内 的 页 进 行 擦 除 或 写 操 作 时 可 以 读 NRWW 区 对 NRWW 区 内 的 页 进 行 擦 除 或 写 操 作 时, CPU 停 止 注 意,Boot Loader 软 件 工 作 时, 用 户 软 件 不 能 读 取 位 于 RWW 区 内 的 任 何 代 码 "RWW 区 指 的 是 被 编 程 ( 擦 除 或 写 ) 的 那 个 存 储 区, 而 不 是 利 用 Boot Loader 软 件 进 行 代 码 更 新 过 程 中 实 际 被 读 取 的 那 部 分 RWW 区 如 果 Boot Loader 软 件 是 对 RWW 区 内 的 某 一 页 进 行 编 程, 则 可 以 从 Flash 中 读 取 代 码, 但 只 限 于 NRWW 区 内 的 代 码 在 Flash 编 程 期 间, 用 户 软 件 必 须 保 证 没 有 对 RWW 区 的 读 访 问 如 果 用 户 软 件 在 编 程 过 程 中 试 图 读 取 位 于 RWW 区 的 代 码 ( 如 通 过 call/jmp/lpm 指 令 或 中 断 ), 软 件 可 能 会 终 止 于 一 个 未 知 状 态 为 了 避 免 这 种 情 况 的 发 生, 需 要 禁 止 中 断 或 将 其 转 移 到 Boot Loader 区 Boot Loader 总 是 位 于 NRWW 存 储 区 只 要 RWW 区 处 于 不 能 读 访 问 的 状 态, 存 储 程 序 存 储 器 控 制 和 状 态 寄 存 器 (SPMCSR) 的 RWW 区 忙 标 志 位 RWWSB 置 位 编 程 结 束 后, 要 在 读 取 位 于 RWW 区 的 代 码 之 前 通 过 软 件 清 除 RWWSB 具 体 如 何 清 除 RWWSB 请 参 见 P 2 保 存 程 序 存 储 器 控 制 寄 存 器 -SPMCR 96 ATmega8(L)
ATmega8(L) 非 RWW 区 -NRWW 在 Boot Loader 软 件 更 新 RWW 区 的 某 一 页 时, 可 以 读 取 位 于 NRWW 区 的 代 码 当 Boot Loader 代 码 更 新 NRWW 区 时, 在 整 个 页 擦 除 或 写 操 作 过 程 中 CPU 被 挂 起 Table 77. RWW 的 特 点 编 程 过 程 中 Z 指 针 寻 址 哪 个 区? 编 程 过 程 中 可 以 读 取 哪 个 区? CPU 挂 起 吗? 支 持 RWW 吗? RWW 区 NRWW 区 不 是 NRWW 区 无 是 不 Figure. RWW 与 NRWW Read-While-Write (RWW) Section Z-pointer Addresses RWW section Code Located in NRWW Section Can be Read during the Operation No Read-While-Write (NRWW) Section Z-pointer Addresses NRWW section CPU is Halted during the Operation 97
() Figure 2. 存 储 器 区 Program Memory BOOTSZ = '' $ Program Memory BOOTSZ = '' $ No Read-While-Write Section Read-While-Write Section No Read-While-Write Section Read-While-Write Section Application Flash Section Application Flash Section Boot Loader Flash Section Program Memory BOOTSZ = '' Application Flash Section Application Flash Section Boot Loader Flash Section End RWW Start NRWW End Application Start Boot Loader Flashend $ End RWW Start NRWW End Application Start Boot Loader Flashend No Read-While-Write Section Read-While-Write Section No Read-While-Write Section Read-While-Write Section Application Flash Section Application Flash Section Boot Loader Flash Section Program Memory BOOTSZ = '' Application flash Section Boot Loader Flash Section End RWW Start NRWW End Application Start Boot Loader Flashend $ End RWW, End Application Start NRWW, Start Boot Loader Flashend Note:. 上 图 中 的 参 数 在 P 27Table 82 中 给 出 引 导 程 序 区 锁 定 位 如 果 不 需 要 Boot Loader 功 能, 则 整 个 Flash 都 可 以 为 应 用 代 码 所 用 Boot Loader 具 有 两 套 可 以 独 立 设 置 的 Boot 锁 定 位 用 户 可 以 灵 活 地 选 择 不 同 的 代 码 保 护 方 式 用 户 可 以 选 择 : 保 护 整 个 Flash 区, 不 让 MCU 进 行 软 件 升 级 不 允 许 MCU 升 级 Boot Loader Flash 区 不 允 许 MCU 升 级 应 用 Flash 区 允 许 MCU 升 级 整 个 Flash 区 详 细 内 容 请 参 见 Table 78 与 Table 79 Boot 锁 定 位 可 以 通 过 软 件 串 行 或 并 行 编 程 进 行 设 置, 但 只 能 通 过 芯 片 擦 除 命 令 清 除 通 用 的 写 锁 定 位 ( 锁 定 位 模 式 2) 不 限 制 通 过 SPM 指 令 对 Flash 进 行 编 程 与 此 类 似, 通 用 的 读 / 写 锁 定 位 ( 锁 定 位 模 式 3) 也 不 限 制 通 过 LPM/SPM 指 令 对 Flash 进 行 读 / 写 访 问 98 ATmega8(L)
ATmega8(L) Table 78. Boot 锁 定 位 保 护 模 式 ( 应 用 区 ) () BLB 模 式 BLB2 BLB 保 护 允 许 SPM/LPM 指 令 访 问 应 用 区 2 不 允 许 SPM 指 令 对 应 用 区 进 行 写 操 作 3 4 不 允 许 SPM 指 令 对 应 用 区 进 行 写 操 作, 也 不 允 许 运 行 于 Boot Loader 区 的 LPM 指 令 从 应 用 区 读 取 数 据 若 中 断 向 量 位 于 Boot Loader 区, 那 么 执 行 应 用 区 代 码 时 中 断 是 禁 止 的 不 允 许 运 行 于 Boot Loader 区 的 LPM 指 令 从 应 用 区 读 取 数 据 若 中 断 向 量 位 于 Boot Loader 区, 那 么 执 行 应 用 区 代 码 时 中 断 是 禁 止 的 Note:. 表 示 未 被 编 程, 表 示 已 编 程 Table 79. Boot 锁 定 位 保 护 模 式 (Boot Loader 区 ) () BLB 模 式 BLB2 BLB 保 护 允 许 SPM/LPM 指 令 访 问 Boot Loader 区 2 不 允 许 SPM 指 令 对 Boot Loader 区 进 行 写 操 作 3 4 不 允 许 SPM 指 令 对 Boot Loader 区 进 行 写 操 作, 也 不 允 许 运 行 于 应 用 区 的 LPM 指 令 从 Boot Loader 区 读 取 数 据 若 中 断 向 量 位 于 应 用 区, 那 么 执 行 Boot Loader 区 代 码 时 中 断 是 禁 止 的 不 允 许 运 行 于 应 用 区 的 LPM 指 令 从 Boot Loader 区 读 取 数 据 若 中 断 向 量 位 于 应 用 区, 那 么 执 行 Boot Loader 区 代 码 时 中 断 是 禁 止 的 Note:. 表 示 未 被 编 程, 表 示 已 编 程 进 入 引 导 程 序 通 过 跳 转 指 令 或 从 应 用 区 调 用 的 方 式 可 以 进 入 Boot Loader 这 些 操 作 可 以 由 一 些 触 发 信 号 启 动, 比 如 通 过 USART 或 SPI 接 口 接 收 到 了 相 关 的 命 令 另 外, 可 以 通 过 编 程 Boot 复 位 熔 丝 位 使 得 复 位 向 量 指 向 Boot 区 的 起 始 地 址 这 样, 复 位 后 Boot Loader 立 即 就 启 动 了 加 载 了 应 用 代 码 后, 程 序 开 始 执 行 应 用 代 码 MCU 本 身 不 能 改 变 熔 丝 位 的 设 置 也 就 是 说, 一 旦 Boot 复 位 熔 丝 位 被 编 程, 复 位 向 量 将 一 直 指 向 Boot 区 的 起 始 地 址 熔 丝 位 只 能 通 过 串 行 或 并 行 编 程 的 方 法 来 改 变 99
Table 8. Boot 复 位 熔 丝 位 () BOOTRST 复 位 地 址 复 位 向 量 = 应 用 区 复 位 ( 地 址 x) 复 位 向 量 =Boot Loader 复 位 ( 见 P 27Table 82 ) Note:. 表 示 未 编 程, 表 示 已 编 程 保 存 程 序 存 储 器 控 制 寄 存 器 - SPMCR 存 贮 程 序 存 储 控 制 器 和 状 态 寄 存 器 包 括 了 控 制 Boot Loader 操 作 所 需 的 控 制 位 Bit 7 6 5 4 3 2 SPMIE RWWSB RWWSRE BLBSET PGWRT PGERS SPMEN SPMCR 读 / 写 R/W R R R/W R/W R/W R/W R/W 初 始 值 Bit 7 SPMIE: SPM 中 断 使 能 SPMIE 置 位 后, 如 果 状 态 寄 存 器 的 I 位 也 置 位,SPM 中 断 即 被 使 能 只 要 SPMCSR 寄 存 器 的 SPMEN 清 零, SPM 中 断 将 被 执 行 Bit 6 RWWSB:RWW 区 忙 标 志 启 动 对 RWW 区 的 自 编 程 ( 页 擦 除 或 页 写 入 ) 操 作 时, RWWSB 被 硬 件 置 RWWSB 置 位 时 不 能 访 问 RWW 区 自 编 程 操 作 完 成 后, 如 果 RWWSRE 位 为, RWWSB 位 将 被 清 除 另 外, 启 动 页 加 载 操 作 将 使 RWWSB 位 自 动 清 零 Bit 5 Res: 保 留 在 ATmega8 中 为 保 留 位, 读 返 回 值 为 " Bit 4 RWWSRE:RWW 区 读 使 能 RWW 区 处 于 编 程 ( 页 擦 除 或 页 写 入 ) 状 态 时,RWW 区 的 读 操 作 (RWWSB 被 硬 件 置 " ) 将 被 阻 塞 用 户 软 件 必 须 等 到 编 程 结 束 (SPMEN 清 零 ) 才 能 重 新 使 能 RWW 区 如 果 RWWSRE 位 和 SPMEN 同 时 被 写 入 ", 则 在 紧 接 着 的 四 个 时 钟 周 期 内 的 SPM 指 令 将 再 次 使 能 RWW 区 如 果 Flash 忙 于 页 擦 除 或 页 写 入 (SPMEN 置 位 ),RWW 区 不 能 被 使 能 如 果 Flash 加 载 与 RWWSRE 写 操 作 同 时 发 生, 则 Flash 加 载 操 作 终 止, 加 载 的 数 据 亦 将 丢 失 Bit 3 BLBSET: Boot 锁 定 位 设 置 如 果 这 一 位 和 SPMEN 同 时 置 位, 发 生 于 紧 接 着 的 四 个 时 钟 周 期 内 的 SPM 指 令 会 根 据 R 中 的 数 据 设 置 Boot 锁 定 位 R 中 的 数 据 和 Z 指 针 的 地 址 信 息 被 忽 略 锁 定 位 设 置 完 成, 或 在 四 个 时 钟 周 期 内 没 有 SPM 指 令 被 执 行 时, BLBSET 自 动 清 零 在 SPMCSR 寄 存 器 的 BLBSET 和 SPMEN 置 位 后 的 三 个 周 期 内 运 行 的 LPM 指 令 将 读 取 锁 定 位 或 熔 丝 位 ( 取 决 于 Z 指 针 的 Z) 并 送 到 目 的 寄 存 器 详 见 P 24 以 软 件 方 式 读 取 熔 丝 位 和 锁 定 位 Bit 2 PGWRT: 页 写 入 如 果 这 一 位 和 SPMEN 同 时 置 位, 发 生 于 紧 接 着 的 四 个 时 钟 周 期 内 的 SPM 指 令 执 行 页 写 功 能, 将 临 时 缓 冲 器 中 存 储 的 数 据 写 入 Flash 页 地 址 取 自 Z 指 针 的 高 位 部 分 R 和 R 的 数 据 则 被 忽 略 页 写 操 作 完 成, 或 在 四 个 时 钟 周 期 内 没 有 SPM 指 令 被 执 行 时,PGWRT 自 动 清 零 如 果 页 写 对 象 为 NRWW 区, 在 整 个 页 写 操 作 过 程 中 CPU 停 止 Bit PGERS: 页 擦 除 如 果 这 一 位 和 SPMEN 同 时 置 位, 发 生 于 紧 接 着 的 四 个 时 钟 周 期 内 的 SPM 指 令 执 行 页 擦 除 功 能 页 地 址 取 自 Z 指 针 的 高 位 部 分 R 和 R 的 数 据 则 被 忽 略 页 擦 除 操 作 完 成, 或 在 四 个 时 钟 周 期 内 没 有 SPM 指 令 被 执 行 时,PGERS 自 动 清 零 如 果 页 写 对 象 为 NRWW 区, 在 整 个 页 擦 除 操 作 过 程 中 CPU 停 止 Bit SPMEN: 存 贮 程 序 存 储 器 使 能 2 ATmega8(L)
ATmega8(L) 这 一 位 在 紧 接 着 的 四 个 时 钟 周 期 内 使 能 SPM 指 令 如 果 将 这 一 位 和 RWWSRE BLBSET PGWRT 或 PGERS 之 一 同 时 置 位, 则 如 上 所 述, 接 下 来 的 SPM 指 令 将 有 特 殊 的 含 义 如 果 只 有 SPMEN 置 位, 那 么 接 下 来 的 SPM 指 令 将 把 R:R 中 的 数 据 存 储 到 由 Z 指 针 确 定 的 临 时 页 缓 冲 器 Z 指 针 的 LSB 被 忽 略 SPM 指 令 完 成, 或 在 四 个 时 钟 周 期 内 没 有 SPM 指 令 被 执 行 时, SPMEN 自 动 清 零 在 页 擦 除 和 页 写 过 程 中 SPMEN 保 持 为 直 到 操 作 完 成 在 低 五 位 中 写 入 除 或 之 外 的 任 何 组 合 都 无 效 在 自 编 程 时 访 问 Flash Z 指 针 用 于 SPM 命 令 的 寻 址 Bit 5 4 3 2 9 8 ZH (R3) Z5 Z4 Z3 Z2 Z Z Z9 Z8 ZL (R3) Z7 Z6 Z5 Z4 Z3 Z2 Z Z 7 6 5 4 3 2 由 于 Flash 存 储 器 是 以 页 的 形 式 组 织 ( P 23Table 93 ) 起 来 的, 程 序 计 数 器 可 看 作 由 两 个 部 分 构 成 : 其 一 为 实 现 页 内 寻 址 的 低 位 部 分 ; 其 次 为 实 现 页 寻 址 的 高 位 部 分, 如 Figure 3 所 示 由 于 页 擦 除 和 页 写 操 作 的 寻 址 是 相 互 独 立 的, 因 此 保 证 Boot Loader 软 件 在 页 擦 除 和 页 写 操 作 时 寻 址 相 同 的 页 是 最 重 要 的 一 旦 编 程 操 作 开 始 启 动, 地 址 就 被 锁 存, 然 后 Z 指 针 可 以 用 作 其 他 用 途 了 唯 一 不 使 用 Z 指 针 的 SPM 操 作 是 设 置 Boot Loader 锁 定 位 Z 指 针 的 内 容 被 忽 略 LPM 指 令 也 使 用 Z 指 针 来 保 存 地 址 由 于 这 个 指 令 的 寻 址 逐 字 节 地 进 行, 所 以 Z 指 针 的 LSB 位 ( 位 Z) 也 使 用 到 了 () Figure 3. SPM 的 寻 址 BIT 5 Z - REGISTER ZPCMSB ZPAGEMSB PROGRAM COUNTER PCMSB PCPAGE PAGEMSB PCWORD PROGRAM MEMORY PAGE PAGE ADDRESS WITHIN THE FLASH WORD ADDRESS WITHIN A PAGE PAGE INSTRUCTION WORD PCWORD[PAGEMSB:]: 2 PAGEEND Notes:. 图 中 所 用 的 不 同 的 变 量 在 P 28Table 84 中 列 出 2. PCPAGE 与 PCWORD 列 于 P 23Table 93 2
Flash 的 自 编 程 通 过 SPM 执 行 页 擦 除 装 载 临 时 缓 冲 器 ( 页 加 载 ) 执 行 页 写 操 作 利 用 SPM 中 断 在 更 新 BLS 时 需 要 考 虑 的 问 题 在 自 编 程 时 防 止 读 取 RWW 区 程 序 存 储 器 的 更 新 以 页 的 方 式 进 行 在 用 临 时 页 缓 冲 器 存 储 的 数 据 对 一 页 存 储 器 进 行 编 程 时, 首 先 要 将 这 一 页 擦 除 SPM 指 令 以 一 次 一 个 字 的 方 式 将 数 据 写 入 临 时 页 缓 冲 器 临 时 页 缓 冲 器 的 写 入 可 以 在 页 擦 除 命 令 之 前 完 成, 也 可 以 在 页 擦 除 和 页 写 操 作 之 间 完 成 方 案, 在 页 擦 除 前 写 缓 冲 器 : 写 临 时 页 缓 冲 器 执 行 页 擦 除 操 作 执 行 页 写 操 作 方 案 2, 在 页 擦 除 后 写 缓 冲 器 : 执 行 页 擦 除 操 作 写 临 时 页 缓 冲 器 执 行 页 写 操 作 如 果 只 需 要 改 变 页 的 一 部 分, 则 在 页 擦 除 之 前 必 须 将 页 中 其 他 部 分 存 储 起 来 ( 如 保 存 于 临 时 页 缓 冲 区 中 ), 然 后 再 写 回 Flash 使 用 方 案 时, Boot Loader 提 供 了 一 个 有 效 的 读 - 修 改 - 写 特 性, 允 许 用 户 软 件 首 先 读 取 页 中 的 内 容, 然 后 对 内 容 做 必 要 的 改 变, 接 着 把 修 改 后 的 数 据 写 回 Flash 如 果 使 用 方 案 2, 则 无 法 读 取 旧 数 据, 因 为 页 已 经 被 擦 除 了 临 时 页 缓 冲 区 可 以 随 机 寻 址 保 证 在 页 擦 除 和 页 写 操 作 中 寻 址 相 同 的 页 是 很 关 键 的 汇 编 代 码 的 例 子 请 参 见 P 26 一 个 简 单 的 引 导 程 序 汇 编 代 码 执 行 页 擦 除 操 作 首 先 需 要 设 置 Z 指 针 与 RAMPZ 的 地 址 信 息, 然 后 将 X 写 入 SPMCSR, 最 后 在 其 后 的 四 个 时 钟 周 期 内 执 行 SPM R 和 R 中 的 数 据 被 忽 略 页 地 址 必 须 写 入 Z 寄 存 器 的 PCPAGE Z 指 针 的 其 他 位 被 忽 略 擦 除 RWW 区 的 页 : 在 页 擦 除 过 程 中 可 以 读 取 NRWW 区 擦 除 NRWW 区 的 页 : 在 操 作 过 程 中 CPU 停 止 写 一 个 指 令 字 首 先 需 要 设 置 Z 指 针 的 地 址 信 息, 以 及 将 指 令 字 写 入 R:R, 然 后 将 写 入 SPMCSR, 最 后 在 其 后 的 四 个 时 钟 周 期 内 执 行 SPM Z 寄 存 器 中 PCWORD 的 内 容 用 来 寻 址 临 时 缓 冲 区 页 写 操 作 完 成, 或 置 位 SPMCSR 寄 存 器 的 RWWSRE 将 使 临 时 缓 冲 区 自 动 擦 除 系 统 复 位 也 会 擦 除 临 时 缓 冲 区 但 是 如 果 不 清 除 临 时 缓 冲 区 就 只 能 对 每 个 地 址 进 行 一 次 写 操 作 Note: 如 果 EEPROM 在 SPM 页 下 载 中 间 写 操 作, 所 有 下 载 数 据 丢 失 执 行 页 写 操 作 首 先 需 要 设 置 Z 指 针 与 RAMPZ 的 地 址 信 息, 然 后 将 X 写 入 SPMCSR, 最 后 在 其 后 的 四 个 时 钟 周 期 内 执 行 SPM R 和 R 中 的 数 据 被 忽 略 页 地 址 必 须 写 入 Z 寄 存 器 的 PCPAGE Z 指 针 的 其 他 位 被 忽 略 擦 除 RWW 区 的 页 : 在 页 擦 除 过 程 中 可 以 读 取 NRWW 区 擦 除 NRWW 区 的 页 : 在 页 写 过 程 中 CPU 停 止 如 果 SPM 中 断 使 能, 则 SPMCSR 寄 存 器 的 SPMEN 清 零 将 产 生 中 断 这 意 味 着 软 件 可 以 利 用 中 断 来 代 替 对 SPMCSR 寄 存 器 的 查 询 使 用 SPM 中 断 时, 要 将 中 断 向 量 移 到 BLS, 以 避 免 RWW 区 读 禁 止 时 中 断 程 序 却 访 问 它 如 何 移 动 中 断 向 量 请 见 P 43 中 断 通 过 不 编 程 Boot 锁 定 位 的 方 式 来 更 新 Boot Loader 区 时 需 要 给 予 格 外 关 注 对 Boot Loader 本 身 进 行 的 误 操 作 会 破 坏 整 个 Boot Loader, 造 成 软 件 无 法 更 新 如 果 程 序 不 需 要 改 变 Boot Loader, 建 议 对 Boot 锁 定 位 编 程, 以 防 止 不 小 心 改 变 了 Boot Loader 在 自 编 程 过 程 中 ( 页 擦 除 或 页 写 ), 对 RWW 区 的 访 问 被 阻 塞 用 户 软 件 要 避 免 此 情 况 发 生 RWW 区 忙 将 使 SPMCSR 寄 存 器 的 RWWSB 置 位 在 自 编 程 时, 如 P 43 中 断 所 述, 中 断 向 量 表 应 该 移 到 BLS 中, 或 者 禁 止 中 断 编 程 结 束 后, 在 寻 址 RWW 区 之 前 用 22 ATmega8(L)
ATmega8(L) 户 软 件 必 须 对 RWWSRE 写 来 清 零 RWWSB 例 子 请 见 P 26 一 个 简 单 的 引 导 程 序 汇 编 代 码 23
通 过 SPM 设 置 引 导 程 序 锁 定 位 设 置 Boot Loader 锁 定 位 首 先 要 给 R 赋 予 期 望 的 数 据, 然 后 将 X 写 入 SPMCSR 寄 存 器, 并 在 紧 接 着 的 四 个 时 钟 周 期 内 执 行 SPM 指 令 唯 一 可 访 问 的 锁 定 位 是 Boot Loader 锁 定 位 利 用 这 个 锁 定 位 可 以 阻 止 MCU 对 应 用 程 序 和 Boot Loader 软 件 的 更 新 Bit 7 6 5 4 3 2 R BLB2 BLB BLB2 BLB 不 同 的 Boot Loader 锁 定 位 设 置 对 Flash 访 问 的 影 响 请 参 见 Table 78 与 Table 79 如 果 R 的 5..2 位 为, 并 且 在 SPMCSR 寄 存 器 的 BLBSET 和 SPMEN 置 位 之 后 的 四 个 周 期 内 执 行 了 SPM 指 令, 相 应 的 Boot 锁 定 位 将 被 编 程 此 操 作 不 使 用 Z 指 针, 但 出 于 兼 容 性 的 考 虑, 建 议 将 Z 指 针 赋 值 为 x( 与 读 lo ck 位 的 操 作 相 同 ) 同 样 出 于 兼 容 性 的 考 虑, 建 议 在 写 锁 定 位 时 将 R 中 的 7 6 和 第 位 置 " 在 编 程 锁 定 位 的 过 程 中 可 以 自 由 访 问 整 个 Flash 区 写 EEPROM 将 阻 止 写 SPMCR 以 软 件 方 式 读 取 熔 丝 位 和 锁 定 位 EEPROM 写 操 作 会 阻 塞 对 Flash 的 编 程, 也 会 阻 塞 对 熔 丝 位 和 锁 定 位 的 读 操 作 建 议 用 户 在 对 SPMCR 寄 存 器 进 行 写 操 作 之 前 首 先 检 查 EECR 寄 存 器 的 状 态 位 EEWE, 确 保 此 位 以 被 清 除 熔 丝 位 和 锁 定 位 可 以 通 过 软 件 读 取 读 锁 定 位 时, 需 要 将 x 赋 予 给 Z 指 针 并 且 置 位 SPMCSR 寄 存 器 的 BLBSET 和 SPMEN 在 SPMCR 操 作 之 后 的 三 个 CPU 周 期 内 执 行 的 LPM 指 令 将 把 锁 定 位 的 值 将 加 载 到 目 的 寄 存 器 读 锁 定 位 操 作 结 束, 或 者 在 三 个 CPU 周 期 内 没 有 执 行 LPM 指 令, 或 在 四 个 CPU 周 期 内 没 有 执 行 SPM 指 令,BLBSET 和 SPMEN 位 将 自 动 硬 件 清 零 BLBSET 和 SPMEN 清 零 后, LPM 将 按 照 指 令 手 册 中 所 描 述 的 那 样 工 作 Bit 7 6 5 4 3 2 Rd BLB2 BLB BLB2 BLB LB2 LB 读 取 熔 丝 位 低 字 节 的 算 法 和 上 述 读 取 锁 定 位 的 算 法 类 似 要 读 取 熔 丝 位 低 字 节, 需 要 将 x 赋 予 给 Z 指 针 并 且 置 位 SPMCR 寄 存 器 的 BLBSET 和 SPMEN 在 SPMCSR 操 作 之 后 的 三 个 CPU 周 期 内 执 行 的 LPM 指 令 将 把 熔 丝 位 低 位 字 节 的 值 (FLB) 加 载 到 目 的 寄 存 器 更 详 细 的 说 明 及 熔 丝 位 低 位 字 节 映 射 的 细 节 请 参 见 P 2Table 88 Bit 7 6 5 4 3 2 Rd FLB7 FLB6 FLB5 FLB4 FLB3 FLB2 FLB FLB 类 似 的, 读 取 熔 丝 位 高 位 字 节 时, 需 要 将 x3 赋 予 给 Z 指 针 并 且 置 位 SPMCR 寄 存 器 的 BLBSET 和 SPMEN 在 SPMCSR 操 作 之 后 的 三 个 CPU 周 期 内 执 行 的 LPM 指 令 将 把 熔 丝 位 高 位 字 节 的 值 (FHB) 加 载 到 目 的 寄 存 器 更 详 细 的 说 明 及 熔 丝 位 高 位 字 节 映 射 的 细 节 请 参 见 P 2Table 87 Bit 7 6 5 4 3 2 Rd FHB7 FHB6 FHB5 FHB4 FHB3 FHB2 FHB FHB 被 编 程 的 熔 丝 位 和 锁 定 位 的 读 返 回 值 为 " 未 被 编 程 的 熔 丝 位 和 锁 定 位 的 读 返 回 值 为 " 防 止 Flash 的 内 容 损 毁 V CC 低 于 工 作 电 压 时,CPU 和 Flash 正 常 工 作 无 法 保 证,Flash 的 内 容 可 能 受 到 破 坏 这 个 问 题 对 于 应 用 于 板 级 系 统 的 独 立 Flash 一 样 存 在 所 以 也 要 采 用 同 样 的 解 决 方 案 电 压 太 低 时 有 两 种 情 况 可 以 破 坏 Flash 内 容 第 一, Flash 写 过 程 需 要 一 个 最 低 电 压 第 二, 电 压 太 低 时 CPU 本 身 会 错 误 地 执 行 指 令 遵 循 以 下 设 计 建 议 可 以 避 免 Flash 被 破 坏 ( 采 用 其 中 之 一 就 足 够 了 ): 24 ATmega8(L)
ATmega8(L). 如 果 系 统 不 需 要 更 新 Boot Loader, 建 议 编 程 Boot Loader 锁 定 位 以 防 止 Boot Loader 软 件 更 新 2. 电 源 电 压 不 足 期 间, 保 持 AVR RESET 为 低 : 采 用 的 方 式 为 : 如 果 工 作 电 压 与 检 测 电 平 相 匹 配, 可 以 使 能 BOD 功 能 ; 否 则 可 以 使 用 外 部 复 位 保 护 电 路 如 果 在 写 操 作 进 行 中 发 生 了 复 位, 只 要 电 源 电 压 足 够, 写 操 作 还 会 完 成 3. 低 电 压 期 间 保 持 AVR 内 核 处 于 掉 电 休 眠 模 式 这 样 可 以 防 止 CPU 解 码 并 执 行 指 令, 有 效 地 保 护 SPMCR 寄 存 器, 从 而 防 止 Flash 被 无 意 识 得 修 改 掉 使 用 SPM 时 的 Flash 编 程 时 间 片 内 校 准 的 RC 振 荡 器 用 于 Flash 寻 址 时 序 控 制 Table 8 给 出 了 CPU 访 问 Flash 的 典 型 编 程 时 间 Table 8. SPM 编 程 时 间 符 号 最 小 编 程 时 间 最 大 编 程 时 间 Flash 写 操 作 ( 通 过 SPM 实 现 页 擦 除 页 写 及 写 锁 定 位 ) 3.7 ms 4.5 ms 25
一 个 简 单 的 引 导 程 序 汇 编 代 码 ;- 本 例 程 将 RAM 中 的 一 页 数 据 写 入 Flash ; Y 指 针 指 向 RAM 的 第 一 个 数 据 单 元 ;Z 指 针 指 向 Flash 的 第 一 个 数 据 单 元 ;- 本 例 程 没 有 包 括 错 误 处 理 ;- 该 程 序 必 须 放 置 于 Boot 区 ( 至 少 Do_spm 子 程 序 是 如 此 ) ; 在 自 编 程 过 程 中 ( 页 擦 除 和 页 写 操 作 ) 只 能 读 访 问 NRWW 区 的 代 码 ;- 使 用 的 寄 存 器 :r r temp (r6) temp2 (r7) looplo (r24) ; loophi (r25) spmcrval (r2) ; 在 程 序 中 不 包 括 寄 存 器 内 容 的 保 护 和 恢 复 ; 在 牺 牲 代 码 大 小 的 情 况 下 可 以 优 化 寄 存 器 的 使 用 ;- 假 设 中 断 向 量 表 位 于 Boot loader 区, 或 者 中 断 被 禁 止.equ PAGESIZEB = PAGESIZE*2 ;PAGESIZEB 是 以 字 节 为 单 位 的 页 大 小, 不 是 以 字 为 单 位.org SMALLBOOTSTART Write_page: ; 页 擦 除 ldi spmcrval, (<<PGERS) (<<SPMEN) rcall Do_spm 26 ATmega8(L) ; 重 新 使 能 RWW 区 ldi spmcrval, (<<RWWSRE) (<<SPMEN) rcall Do_spm ; 将 数 据 从 RAM 转 移 到 Flash 页 缓 冲 区 ldi looplo, low(pagesizeb) ; 初 始 化 循 环 变 量 ldi loophi, high(pagesizeb) ;PAGESIZEB<=256 时 不 需 要 此 操 作 Wrloop: ld r, Y+ ld r, Y+ ldi spmcrval, (<<SPMEN) rcall Do_spm adiw ZH:ZL, 2 sbiw loophi:looplo, 2 ;PAGESIZEB<=256 时 请 使 用 subi brne Wrloop ; 执 行 页 写 subi ZL, low(pagesizeb) ; 恢 复 指 针 sbci ZH, high(pagesizeb) ;PAGESIZEB<=256 时 不 需 要 此 操 作 ldi spmcrval, (<<PGWRT) (<<SPMEN) rcall Do_spm ; 重 新 使 能 RWW 区 ldi spmcrval, (<<RWWSRE) (<<SPMEN) rcall Do_spm ; 读 回 数 据 并 检 查, 为 可 选 操 作 ldi looplo, low(pagesizeb) ; 初 始 化 循 环 变 量 ldi loophi, high(pagesizeb) ;PAGESIZEB<=256 时 不 需 要 此 操 作 subi YL, low(pagesizeb) ; 恢 复 指 针 sbci YH, high(pagesizeb) Rdloop: lpm r, Z+ ld r, Y+ cpse r, r rjmp Error sbiw loophi:looplo, ;PAGESIZEB<=256 时 请 使 用 subi brne Rdloop ; 返 回 到 RWW 区 ; 确 保 RWW 区 已 经 可 以 安 全 读 取
ATmega8(L) Return: in temp, SPMCR sbrs temp, RWWSB ; 若 RWWSB 为 "", 说 明 RWW 区 还 没 有 准 备 好 ret ; 重 新 使 能 RWW 区 ldi spmcrval, (<<RWWSRE) (<<SPMEN) rcall Do_spm rjmp Return Do_spm: ; 检 查 先 前 的 SPM 操 作 是 否 已 经 完 成 Wait_spm: in temp, SPMCR sbrc temp, SPMEN rjmp Wait_spm ; 输 入 :spmcrval 决 定 了 SPM 操 作 ; 禁 止 中 断, 保 存 状 态 标 志 in temp2, SREG cli ; 确 保 没 有 EEPROM 写 操 作 Wait_ee: sbic EECR, EEWE rjmp Wait_ee ; SPM 时 间 序 列 out SPMCR, spmcrval spm ; 恢 复 SREG ( 如 果 中 断 原 本 是 使 能 的, 则 使 能 中 断 ) out SREG, temp2 ret ATmega8 引 导 程 序 参 数 自 编 程 描 述 中 所 用 的 参 数 在 Table 82 到 Table 84 中 给 出 Table 82. Boot 区 大 小 配 置 BOOTSZ BOOTSZ Boot 区 大 小 页 数 应 用 Flash 区 Boot Loader Flash 区 应 用 区 结 束 地 址 Boot 复 位 地 址 ( Boot Loader 起 始 地 址 ) 28 字 4 x - xf7f xf8 - xfff xf7f xf8 256 字 8 x - xeff xf - xfff xeff xf 52 字 6 x - xdff xe - xfff xdff xe 2 字 32 Note: 不 同 的 BOOTSZ 熔 丝 位 配 置 请 参 见 Figure 2 Table 83. RWW 界 限 x - xbff xc - xfff xbff xc Flash 区 页 数 寻 址 范 围 同 时 读 - 写 区 (RWW) 96 x - xbff 非 同 时 读 - 写 区 (NRWW) 32 xc - xfff 27
关 于 两 个 区 的 详 细 说 明 请 见 P 97 非 RWW 区 - NRWW 与 P 96 RWW 区 Table 84. Figure 3 中 所 用 变 量 的 说 明 及 Z 指 针 的 映 射 变 量 相 应 的 Z 指 针 数 () 据 描 述 PCMSB 程 序 计 数 器 的 最 高 位 ( 程 序 计 数 器 为 2 位 PC[:]) PAGEMSB 4 用 于 页 内 字 寻 址 的 最 高 位 ( 一 页 有 64 个 字, 需 要 5 位 PC [4:]) ZPCMSB Z2 Z 寄 存 器 与 PCMSB 对 应 的 位 由 于 没 有 使 用 Z, ZPCMSB 等 于 PCMSB + ZPAGEMSB Z5 Z 寄 存 器 与 PAGEMSB 对 应 的 位 由 于 没 有 使 用 Z, ZPAGEMSB 等 于 PAGEMSB + PCPAGE PC[:5] Z2:Z6 程 序 计 数 器 页 地 址 : 在 页 擦 除 和 页 写 操 作 中 进 行 页 选 择 PCWORD PC[4:] Z5:Z 程 序 计 数 器 字 地 址 : 为 填 充 临 时 缓 冲 区 进 行 字 选 择 ( 在 页 写 过 程 中 必 须 为 ) Note:. Z5:Z3 不 计 Z: 对 所 有 的 SPM 命 令 都 为 ", 对 LPM 指 令 的 位 选 择 关 于 自 编 程 过 程 中 Z 指 针 的 使 用 请 参 见 P 2 在 自 编 程 时 访 问 Flash 28 ATmega8(L)
ATmega8(L) 存 储 器 编 程 程 序 及 数 据 存 储 器 锁 定 位 ATmega8 提 供 了 6 个 锁 定 位, 根 据 其 被 编 程 ( ) 还 是 没 有 被 编 程 ( ) 的 情 况 可 以 获 得 Table 86 列 出 的 附 加 性 能 锁 定 位 只 能 通 过 芯 片 擦 除 命 令 擦 写 为 Table 85. 锁 定 位 字 节 锁 定 位 字 节 位 号 描 述 默 认 值 () Note:. 表 示 未 编 程, 表 示 被 编 程 7 ( 未 编 程 ) 6 ( 未 编 程 ) BLB2 5 Boot 锁 定 位 ( 未 编 程 ) BLB 4 Boot 锁 定 位 ( 未 编 程 ) BLB2 3 Boot 锁 定 位 ( 未 编 程 ) BLB 2 Boot 锁 定 位 ( 未 编 程 ) LB2 锁 定 位 ( 未 编 程 ) LB 锁 定 位 ( 未 编 程 ) (2) Table 86. 锁 定 位 保 护 模 式 存 储 器 锁 定 位 LB 模 式 LB2 LB 保 护 类 型 没 有 使 能 存 储 器 保 护 特 性 2 3 BLB 模 式 BLB2 BLB 在 并 行 和 串 行 编 程 模 式 中 Flash 和 EEPROM 的 进 一 步 编 程 被 禁 止, 熔 丝 位 被 锁 定 () 在 并 行 和 串 行 编 程 模 式 中 Flash 和 EEPROM 的 进 一 步 编 程 () 及 验 证 被 禁 止, 锁 定 位 和 熔 丝 位 被 锁 定 SPM 和 LPM 对 应 用 区 的 访 问 没 有 限 制 2 不 允 许 SPM 对 应 用 区 进 行 写 操 作 3 4 BLB 模 式 BLB2 BLB 不 允 许 SPM 指 令 对 应 用 区 进 行 写 操 作, 也 不 允 许 运 行 于 Boot Loader 区 的 LPM 指 令 从 应 用 区 读 取 数 据 若 中 断 向 量 位 于 Boot Loader 区, 那 么 执 行 应 用 区 代 码 时 中 断 是 禁 止 的 不 允 许 运 行 于 Boot Loader 区 的 LPM 指 令 从 应 用 区 读 取 数 据 若 中 断 向 量 位 于 Boot Loader 区, 那 么 执 行 应 用 区 代 码 时 中 断 是 禁 止 的 允 许 SPM/LPM 指 令 访 问 Boot Loader 区 29
(2) Table 86. 锁 定 位 保 护 模 式 存 储 器 锁 定 位 2 不 允 许 SPM 指 令 对 Boot Loader 区 进 行 写 操 作 3 4 保 护 类 型 Notes:. 在 编 程 锁 定 位 前 先 编 程 熔 丝 位 2. 表 示 未 被 编 程, 表 示 被 编 程 不 允 许 SPM 指 令 对 Boot Loader 区 进 行 写 操 作, 也 不 允 许 运 行 于 应 用 区 的 LPM 指 令 从 Boot Loader 区 读 取 数 据 若 中 断 向 量 位 于 应 用 区, 那 么 执 行 Boot Loader 区 代 码 时 中 断 是 禁 止 的 不 允 许 运 行 于 应 用 区 的 LPM 指 令 从 Boot Loader 区 读 取 数 据 若 中 断 向 量 位 于 应 用 区, 那 么 执 行 Boot Loader 区 代 码 时 中 断 是 禁 止 的 熔 丝 位 ATmega8 有 两 个 熔 丝 位 字 节 Table 87-Table 88 简 单 地 描 述 了 所 有 熔 丝 位 的 功 能 以 及 他 们 是 如 何 映 射 到 熔 丝 字 节 的 如 果 熔 丝 位 被 编 程 则 读 返 回 值 为 Table 87. 熔 丝 位 高 字 节 熔 丝 高 字 节 位 号 描 述 默 认 值 RSTDISBL (4) 7 WDTON 6 若 PC6 为 I/O 引 脚 或 RESET 引 脚 选 择 WDT 开 ( 未 编 程, PC6 为 RESET- 引 脚 ) ( 未 编 程, 通 过 WDTCR 使 WDT 使 能 ) SPIEN () 5 使 能 串 行 程 序 和 数 据 下 载 ( 已 编 程,SPI 编 程 使 能 ) CKOPT (2) 4 振 荡 器 选 项 ( 未 编 程 ) EESAVE 3 执 行 芯 片 擦 除 时 EEPROM 的 内 容 保 留 BOOTSZ 2 选 择 Boot 区 大 小 ( 详 见 Table 82) ( 已 编 程 ) (3) BOOTSZ 选 择 Boot 区 大 小 ( 详 见 Table 82 ) ( 已 编 程 ) (3) BOOTRST 选 择 复 位 向 量 ( 未 编 程 ) ( 未 编 程, EEPROM 内 容 不 保 留 ) Notes:. 在 SPI 串 行 编 程 模 式 下 SPIEN 熔 丝 位 不 可 访 问 2. CKOPT 熔 丝 位 功 能 由 CKSEL 位 设 置 决 定, 详 见 P 23 时 钟 源 3. BOOTSZ.. 默 认 值 为 最 大 Boot 大 小, 详 见 P 27Table 82 4. 当 对 RSTDISBL 熔 丝 位 编 程, 并 行 编 程 使 用 其 他 熔 丝 位 或 执 行 其 他 编 程 模 式 Table 88. 熔 丝 位 低 位 字 节 熔 丝 位 低 位 字 节 位 号 描 述 默 认 值 BODLEVEL 7 BOD 触 发 电 平 ( 未 编 程 ) BODEN 6 BOD 使 能 ( 未 编 程, BOD 禁 用 ) SUT 5 选 择 启 动 时 间 ( 未 编 程 ) () SUT 4 选 择 启 动 时 间 ( 已 编 程 ) () CKSEL3 3 选 择 时 钟 源 ( 已 编 程 ) (2) CKSEL2 2 选 择 时 钟 源 ( 已 编 程 ) (2) CKSEL 选 择 时 钟 源 ( 已 编 程 ) (2) CKSEL 选 择 时 钟 源 ( 未 编 程 ) (2) 2 ATmega8(L)
ATmega8(L) Notes:. 对 于 默 认 时 钟 源,SUT.. 的 默 认 值 给 出 最 大 的 启 动 时 间 详 细 内 容 见 P 27Table 2. CKSEL3.. 的 默 认 设 置 导 致 了 片 内 RC 振 荡 器 运 行 于 MHz 详 细 内 容 见 P 23Table 2 熔 丝 位 的 状 态 不 受 芯 片 擦 除 命 令 的 影 响 如 果 锁 定 位 (LB) 被 编 程 则 熔 丝 位 被 锁 定 在 编 程 锁 定 位 前 先 编 程 熔 丝 位 锁 存 熔 丝 位 的 数 据 标 识 字 节 标 定 字 节 芯 片 进 入 编 程 模 式 时 熔 丝 位 的 值 被 锁 存 其 间 熔 丝 位 的 改 变 不 会 生 效, 直 到 器 件 退 出 编 程 模 式 不 过 这 不 适 用 于 EESAVE 熔 丝 位 它 一 旦 被 编 程 立 即 起 作 用 在 正 常 工 作 模 式 中 器 件 上 电 时 熔 丝 位 也 被 锁 存 所 有 的 Atmel 微 控 制 器 都 具 有 一 个 三 字 节 的 标 识 代 码 用 来 区 分 器 件 型 号 这 个 代 码 可 以 通 过 串 行 和 并 行 模 式 读 取, 也 可 以 在 芯 片 被 锁 定 时 读 取 这 三 个 字 节 分 别 存 储 于 三 个 独 立 的 地 址 空 间 ATmega8 标 识 字 节 为 :. x: xe ( 表 示 由 Atmel 公 司 生 产 ) 2. x: x93 ( 表 示 芯 片 包 含 8 KB Flash 存 储 器 ) 3. x2: x7 ( 表 示 这 是 ATmega8) ATmega8 内 部 RC 振 荡 器 的 有 四 个 不 同 的 校 准 值 保 存 于 校 准 字 节 这 个 字 节 位 于 标 识 地 址 空 间 x x x2 及 x3 的 高 位 字 节, 分 别 标 定 2 4 8 MHz 在 复 位 期 间, MHz 的 标 定 值 被 自 动 写 入 OSCCAL 寄 存 器 若 需 要 其 他 频 率 标 定 值, 则 需 手 动 完 成, 详 见 P 28 振 荡 器 标 定 寄 存 器 - OSCCAL 2
并 行 编 程 参 数, 引 脚 映 射 及 命 令 信 号 名 称 这 部 分 描 述 了 如 何 对 ATmega8 的 Flash 程 序 存 储 器, EEPROM 数 据 存 储 器, 存 储 锁 定 位 及 熔 丝 位 进 行 并 行 编 程 和 校 验 除 非 另 有 说 明, 脉 冲 宽 度 至 少 为 25 ns 在 这 一 节 ATmega8 的 相 关 引 脚 以 并 行 编 程 信 号 的 名 称 进 行 引 用, 如 Figure 4 与 Table 89 所 示 表 中 没 有 描 述 的 引 脚 沿 用 原 来 的 称 谓 XA/XA 决 定 了 给 XTAL 引 脚 一 个 正 脉 冲 时 所 执 行 的 操 作 具 体 编 码 请 见 Table 9 给 WR 或 OE 输 入 脉 冲 时 所 加 载 的 命 令 决 定 了 要 执 行 的 操 作 具 体 命 令 请 参 见 Table 92 Figure 4. 并 行 编 程 +5V RDY/BSY OE PD PD2 VCC +5V WR PD3 AVCC BS XA PD4 PD5 PC[:]:PB[5:] DATA XA PD6 PAGEL PD7 +2 V BS2 RESET PC2 XTAL GND Table 89. 引 脚 名 称 映 射 编 程 模 式 信 号 的 名 称 引 脚 名 称 I/O 功 能 RDY/BSY PD O : 芯 片 忙 于 编 程, : 芯 片 等 待 新 的 命 令 OE PD2 I 输 出 使 能 ( 低 电 平 有 效 ). WR PD3 I 写 脉 冲 ( 低 电 平 有 效 ). BS PD4 I XA PD5 I XTAL 动 作 位 XA PD6 I XTAL 动 作 位 字 节 选 择 ( 选 择 低 位 字 节, 选 择 高 位 字 节 ). PAGEL PD7 I 加 载 程 序 存 储 器 和 EEPROM 数 据 页 BS2 PC2 I 字 节 选 择 2( 选 择 低 位 字 节, 选 择 第 二 个 高 位 字 节 ) DATA {PC[:]: PB[5:]} I/O 双 向 数 据 总 线 (OE 为 低 时 输 出 ) 22 ATmega8(L)
ATmega8(L) Table 9. 进 入 编 程 模 式 所 需 要 的 引 脚 数 据 引 脚 符 号 数 值 PAGEL Prog_enable[3] XA Prog_enable[2] XA Prog_enable[] BS Prog_enable[] Table 9. XA 和 XA 的 编 码 XA XA 给 XTAL 施 加 脉 冲 激 发 的 动 作 加 载 Flash 或 EEPROM 地 址 ( 通 过 BS 确 定 是 高 位 还 是 低 位 字 节 ) 加 载 数 据 ( 通 过 BS 决 定 是 高 位 还 是 低 位 闪 存 数 据 字 节 ) 加 载 命 令 无 操 作, 空 闲 Table 92. 命 令 字 节 编 码 命 令 字 节 执 行 的 命 令 芯 片 擦 除 写 熔 丝 位 写 锁 定 位 写 Flash 写 EEPROM 读 标 识 字 节 和 校 准 字 节 读 熔 丝 位 和 锁 定 位 读 Flash 读 EEPROM Table 93. 一 页 包 含 的 字 和 Flash 中 的 页 数 Flash 大 小 页 大 小 PCWORD 页 号 PCPAGE PCMSB 4K 字 (8K 字 节 ) 32 字 PC[4:] 28 PC[:5] Table 94. 一 页 包 含 的 字 和 EEPROM 中 的 页 数 EEPROM 大 小 页 大 小 PCWORD 页 数 PCPAGE EEAMSB 52 字 节 4 字 节 EEA[:] 28 EEA[8:2] 8 并 行 编 程 进 入 编 程 模 式 通 过 下 面 的 算 法 进 入 并 行 编 程 模 式 : 23
. 在 V CC 及 GND 之 间 提 供 4.5-5.5V 的 电 压, 并 至 少 等 待 µs 2. 将 RESET 拉 低, 并 至 少 改 变 XTAL 电 平 6 次 3. 将 P 23Table 9 中 列 出 的 的 Prog_enable 引 脚 置 为 "", 并 等 待 至 少 ns 4. 给 RESET 提 供.5-2.5V 的 电 压 在 向 RESET 提 供 +2V 电 压 后 的 ns 内, Prog_enable 引 脚 的 任 何 行 为 都 会 导 致 芯 片 无 法 进 入 编 程 模 式 注 意, 如 果 通 过 对 RSTDISBL 熔 丝 位 的 编 程 将 RESET 引 脚 禁 用, 或 选 择 外 部 晶 体 或 外 部 RC, 它 不 可 能 提 供 合 格 的 XTAL 脉 冲 在 这 种 情 况 下, 应 采 取 如 下 算 法 :. 设 置 列 于 P 23Table 9 的 Prog_enable 引 脚 为 2. 在 V CC 与 GND 间 提 供 电 压 4.5-5.5V 同 时 在 RESET 上 提 供.5-2.5V 电 压 3. 等 待 ns 4. 对 熔 丝 位 重 编 程, 保 证 外 部 时 钟 源 作 为 系 统 时 钟 (CKSEL3: = b) 如 果 锁 定 位 已 编 程, 在 改 变 熔 丝 前 必 须 执 行 芯 片 擦 除 指 令 5. 通 过 降 低 器 件 功 率 或 置 RESET 引 脚 为 b 来 退 出 编 程 模 式 6. 用 前 面 讲 到 的 算 法 进 入 编 程 模 式 进 行 高 效 编 程 需 要 考 虑 的 问 题 在 编 程 过 程 中, 加 载 的 命 令 及 地 址 保 持 不 变 为 了 实 现 高 效 的 编 程 应 考 虑 以 下 因 素 : 对 多 个 存 储 单 元 进 行 读 或 写 操 作 时, 命 令 仅 需 加 载 一 次 当 需 要 写 入 的 数 据 为 xff 时 可 以 跳 过, 因 为 这 就 是 执 行 全 片 擦 除 命 令 后 Flash 及 EEPROM( 除 非 EESAVE 熔 丝 位 被 编 程 ) 的 内 容 只 有 在 编 程 或 读 取 Flash 及 EEPROM 中 新 的 256 字 时 才 需 要 用 到 地 址 高 位 字 节 在 读 标 识 字 节 时 也 需 考 虑 这 一 点 芯 片 擦 除 芯 片 擦 除 操 作 会 擦 除 Flash 及 EEPROM () 存 储 器 以 及 锁 定 位 程 序 存 储 器 没 有 擦 除 结 束 之 前 锁 定 位 不 会 复 位 全 片 擦 除 不 影 响 熔 丝 位 芯 片 擦 除 命 令 必 须 在 编 程 Flash 与 / 或 EEPROM 之 前 完 成 Note:. 如 果 EESAVE 熔 丝 位 被 编 程, 那 么 在 芯 片 擦 除 时 EEPRPOM 不 受 影 响 加 载 " 芯 片 擦 除 命 令 的 过 程 :. 将 XA XA 置 为 " 以 启 动 命 令 加 载 2. 将 BS 置 为 " 3. DATA 赋 值 为 这 是 芯 片 擦 除 命 令 4. 给 XTAL 提 供 一 个 正 脉 冲, 进 行 命 令 加 载 5. 给 WR 提 供 一 个 负 脉 冲, 启 动 芯 片 擦 除 RDY/BSY 变 低 6. 等 待 RDY/BSY 变 高, 然 后 才 能 加 载 新 的 命 令 对 Flash 进 行 编 程 Flash 是 以 页 的 形 式 组 织 起 来 的, 如 P 23Table 93 所 示 编 程 Flash 时, 程 序 数 据 被 锁 存 到 页 缓 冲 区 中 这 样 一 整 页 的 程 序 数 据 可 以 同 时 得 到 编 程 下 面 的 步 骤 描 述 了 如 何 对 Flash 进 行 编 程 : A. 加 载 " 写 Flash" 命 令 :. 将 XA XA 置 为 "", 启 动 命 令 加 载 2. 将 BS 置 " 3. DATA 赋 值 为, 这 是 写 Flash 命 令 4. 给 XTAL 提 供 一 个 正 脉 冲 以 加 载 命 令 B. 加 载 地 址 低 位 字 节 :. 将 XA XA 置 为 "", 启 动 地 址 加 载 2. 将 BS 置 ", 选 择 低 位 地 址 24 ATmega8(L)
ATmega8(L) 3. DATA 赋 值 为 地 址 低 位 字 节 (x - xff) 4. 给 XTAL 提 供 一 个 正 脉 冲, 加 载 地 址 低 位 字 节 C. 加 载 数 据 低 位 字 节 :. 将 XA XA 置 为 "", 启 动 数 据 加 载 2. DATA 赋 值 为 数 据 低 位 字 节 (x - xff) 3. 给 XTAL 提 供 一 个 正 脉 冲, 加 载 数 据 字 节 D. 加 载 数 据 高 位 字 节 :. 将 BS 置 为 ", 选 择 数 据 高 位 字 节 2. 将 XA XA 置 为 "", 启 动 数 据 加 载 3. DATA 赋 值 为 数 据 高 位 字 节 (x - xff) 4. 给 XTAL 提 供 一 个 正 脉 冲, 进 行 数 据 字 节 加 载 E. 锁 存 数 据 :. 将 BS 置 为 ", 选 择 数 据 高 位 字 节 2. 给 PAGEL 提 供 一 个 正 脉 冲, 锁 存 数 据 ( 见 Figure 6 信 号 波 形 ) F. 重 复 B 到 E 操 作, 直 到 整 个 缓 冲 区 填 满 或 此 页 中 所 有 的 数 据 都 已 加 载 地 址 信 息 中 的 低 位 用 于 页 内 寻 址, 高 位 用 于 FLASH 页 的 寻 址, 详 见 P 26Figure 5 如 果 页 内 寻 址 少 于 8 位 ( 页 地 址 < 256), 那 么 进 行 页 写 操 作 时 地 址 低 字 节 中 的 高 位 用 于 页 寻 址 G. 加 载 地 址 高 位 字 节 :. 将 XA XA 置 为 ", 启 动 地 址 加 载 操 作 2. 将 BS 置 为 ", 选 择 高 位 地 址 3. DATA 赋 值 为 地 址 高 位 字 节 (x - xff) 4. 给 XTAL 提 供 一 个 正 脉 冲, 加 载 地 址 高 位 字 节 H. 编 程 一 页 数 据 :. 置 BS = 2. 给 WR 提 供 一 个 负 脉 冲, 对 整 页 数 据 进 行 编 程, RDY/BSY 变 低 3. 等 待 RDY/BSY 变 高 ( 见 Figure 6 信 号 波 形 ) I. 重 复 B 到 H 的 操 作, 直 到 整 个 Flash 编 程 结 束 或 者 所 有 的 数 据 都 被 编 程 J. 结 束 页 编 程 :. 将 XA XA 置 为 ", 启 动 命 令 加 载 操 作 2. DATA 赋 值 为 " ", 这 是 不 操 作 指 令 3. 给 XTAL 提 供 一 个 正 脉 冲, 加 载 命 令, 内 部 写 信 号 复 位 25
() Figure 5. 对 以 页 为 组 织 单 位 的 Flash 进 行 寻 址 PROGRAM COUNTER PCMSB PCPAGE PAGEMSB PCWORD PROGRAM MEMORY PAGE PAGE ADDRESS WITHIN THE FLASH WORD ADDRESS WITHIN A PAGE PAGE INSTRUCTION WORD PCWORD[PAGEMSB:]: 2 PAGEEND Note:. PCPAGE 及 PCWORD 列 于 P 23Table 93 Figure 6. Flash 编 程 波 形 () F A B C D E B C D E G H DATA x ADDR. LOW DATA LOW DATA HIGH XX ADDR. LOW DATA LOW DATA HIGH XX ADDR. HIGH XX XA XA BS XTAL WR RDY/BSY RESET +2V OE PAGEL BS2 Note:. 不 用 考 虑 "XX", 各 个 大 写 字 母 对 应 于 前 面 描 述 的 Flash 编 程 阶 段 对 EEPROM 进 行 编 程 如 P 23Table 94 所 示, EEPROM 也 以 页 为 单 位 编 程 EEPROM 时, 编 程 数 据 锁 存 于 页 缓 冲 区 中 这 样 可 以 同 时 对 一 页 数 据 进 行 编 程 EEPROM 数 据 存 储 器 编 程 算 法 如 下 ( 命 令 地 址 及 数 据 加 载 的 细 节 请 参 见 P 24 对 Flash 进 行 编 程 ): 26 ATmega8(L)
ATmega8(L). A: 加 载 命 令 2. G: 加 载 地 址 高 位 字 节 (x - xff) 3. B: 加 载 地 址 低 位 字 节 (x - xff) 4. C: 加 载 数 据 (x - xff) 5. E: 锁 存 数 据 ( 给 PAGEL 提 供 一 个 正 脉 冲 ) K: 重 复 步 骤 3 到 5, 直 到 整 个 缓 冲 区 填 满 L: 对 EEPROM 页 进 行 编 程 :. 将 BS 置 2. 给 WR 提 供 一 个 负 脉 冲, 开 始 对 EEPROM 页 进 行 编 程, RDY/BSY 变 低 3. 等 到 RDY/BSY 变 高 再 对 下 一 页 进 行 编 程 ( 见 Figure 7 信 号 波 形 ) Figure 7. EEPROM 编 程 波 形 K A G B C E B C E L DATA x ADDR. HIGH ADDR. LOW DATA XX ADDR. LOW DATA XX XA XA BS XTAL WR RDY/BSY RESET +2V OE PAGEL BS2 读 取 Flash 读 Flash 存 储 器 的 过 程 如 下 ( 命 令 及 地 址 加 载 细 节 见 P 24 对 Flash 进 行 编 程 ):. A: 加 载 命 令 2. G: 加 载 地 址 高 位 字 节 (x - xff) 3. B: 加 载 地 址 低 位 字 节 (x - xff) 4. 将 OE 置, BS 置, 然 后 从 DATA 读 出 Flash 字 的 低 位 字 节 5. 将 BS 置, 然 后 从 DATA 读 出 Flash 字 的 高 位 字 节 6. 将 OE 置 读 取 EEPROM 读 存 储 器 的 步 骤 如 下 ( 命 令 及 地 址 加 载 细 节 见 P 24 对 Flash 进 行 编 程 ):. A: 加 载 命 令 2. G: 加 载 地 址 高 位 字 节 (x - xff) 3. B: 加 载 地 址 低 位 字 节 (x - xff) 4. 将 OE 置 ", BS 置 ", 然 后 从 DATA 读 出 EEPROM 数 据 字 节 27
5. 将 OE 置 对 熔 丝 位 的 低 位 进 行 编 程 对 熔 丝 低 位 的 编 程 步 骤 如 下 ( 命 令 及 数 据 加 载 细 节 见 P 24 对 Flash 进 行 编 程 ):. A: 加 载 命 令 2. C: 加 载 数 据 低 字 节, 若 某 一 位 为 " 表 示 需 要 进 行 编 程, 否 则 需 要 擦 除 3. 置 BS 为, BS2 为 4. 给 WR 提 供 一 个 负 脉 冲, 并 等 待 RDY/BSY 变 高 28 ATmega8(L)
ATmega8(L) 对 熔 丝 位 的 高 位 进 行 编 程 对 熔 丝 高 位 的 编 程 步 骤 如 下 ( 命 令 及 数 据 加 载 细 节 见 P 24 对 Flash 进 行 编 程 ):. A: 加 载 命 令 2. C: 加 载 数 据 高 字 节, 若 某 一 位 为 " 表 示 需 要 进 行 编 程, 否 则 需 要 擦 除 3. 将 BS 置 " BS2 置 ", 选 择 高 位 数 据 字 节 4. 给 WR 提 供 一 个 负 脉 冲 并 等 待 RDY/BSY 变 高 5. 将 BS 置 ", 选 择 低 位 字 节 对 锁 定 位 进 行 编 程 锁 定 位 编 程 步 骤 如 下 ( 命 令 及 数 据 加 载 细 节 见 P 24 对 Flash 进 行 编 程 ):. A: 加 载 命 令 2. C: 加 载 数 据 低 字 节, 位 n 为 " 表 示 此 锁 定 位 需 要 编 程 3. 给 WR 提 供 一 个 负 脉 冲 并 等 待 RDY/BSY 变 高 锁 定 位 只 能 通 过 芯 片 擦 除 命 令 来 清 除 读 取 熔 丝 位 和 锁 定 位 读 取 熔 丝 位 及 锁 定 位 的 步 骤 如 下 ( 命 令 加 载 细 节 见 P 24 对 Flash 进 行 编 程 ):. A: 加 载 命 令 2. 将 OE BS2 和 BS 置 ", 然 后 从 DATA 读 取 熔 丝 低 位 的 状 态 (" 表 示 已 编 程 ) 3. 将 OE 置 ",BS2 和 BS 置, 然 后 从 DATA 读 取 熔 丝 高 位 的 状 态 (" 表 示 已 编 程 ) 4. 将 OE 置 ",BS2 置 ",BS 置, 然 后 从 DATA 读 取 锁 定 位 的 状 态 (" 表 示 已 编 程 ) 5. 将 OE 置 Figure 8. 读 操 作 过 程 中 BS BS2 与 熔 丝 位 及 锁 定 位 的 对 应 关 系 Fuse low byte DATA Lock bits Fuse high byte BS BS2 29
读 取 标 识 字 节 读 取 标 识 字 节 的 算 法 如 下 ( 命 令 与 地 址 加 载 参 考 P 24 对 Flash 进 行 编 程 ):. A: 加 载 命 令 2. B: 加 载 地 址 低 字 节 x - x2 3. 将 OE BS 置 ", 然 后 从 DATA 读 取 标 识 字 节 4. 将 OE 置 " 读 取 标 定 字 节 读 取 校 准 字 节 的 算 法 如 下 ( 命 令 与 地 址 加 载 参 考 P 24 对 Flash 进 行 编 程 ):. A: 加 载 命 令 2. B: 加 载 地 址 低 字 节 3. 将 OE 置 ", BS 置, 然 后 从 DATA 读 取 校 准 字 节 4. 将 OE 置 并 行 编 程 特 性 Figure 9. 并 行 编 程 时 序, 包 括 一 些 常 规 的 时 序 要 求 t XLWL XTAL t XHXL Data & Contol (DATA, XA/, BS, BS2) t DVXH t XLDX t BVPH t PLBX PAGEL t PHPL t BVWL t WLBX WR RDY/BSY t PLWL t WL WH WLRL t WLRH () Figure. 并 行 编 程 时 序, 有 时 序 要 求 的 加 载 序 列 LOAD ADDRESS (LOW BYTE) LOAD DATA (LOW BYTE) LOAD DATA LOAD DATA (HIGH BYTE) LOAD ADDRESS (LOW BYTE) t XLXH t XLPH t PLXH XTAL BS PAGEL DATA ADDR (Low Byte) DATA (Low Byte) DATA (High Byte) ADDR (Low Byte) XA XA Note:. Figure 9 给 出 的 时 序 要 求 (t DVXH t XHXL 及 t XLDX ) 也 适 用 于 加 载 操 作 22 ATmega8(L)
ATmega8(L) Figure. 并 行 编 程 时 序, 有 时 序 要 求 的 读 序 列 ( 同 一 页 ) () LOAD ADDRESS (LOW BYTE) READ DATA (LOW BYTE) READ DATA (HIGH BYTE) LOAD ADDRESS (LOW BYTE) t XLOL XTAL t BVDV BS t OLDV OE t OHDZ DATA ADDR (Low Byte) DATA (Low Byte) DATA (High Byte) ADDR (Low Byte) XA XA Note:. Figure 9 给 出 的 时 序 要 求 ( 即 t DVXH t XHXL 及 t XLDX ) 也 适 用 于 读 操 作 Table 95. 并 行 编 程 参 数, V CC = 5V ± % 符 号 参 数 V PP 编 程 使 能 电 压.5 2.5 V I PP 编 程 使 能 电 流 25 µa t DVXH 在 XTAL 为 高 之 前 数 据 及 控 制 有 效 67 ns t XLXH 从 XTAL 低 到 XTAL 高 2 ns t XHXL XTAL 为 高 时 的 脉 宽 5 ns t XLDX XTAL 为 低 之 后 数 据 及 控 制 保 持 67 ns t XLWL 从 XTAL 低 到 WR 低 ns t XLPH 从 XTAL 低 到 PAGEL 高 ns t PLXH 从 PAGEL 低 到 XTAL 高 5 ns t BVPH PAGEL 为 高 之 前 BS 有 效 67 ns t PHPL PAGEL 为 高 时 的 脉 宽 5 ns t PLBX PAGEL 为 低 之 后 BS 保 持 67 ns t WLBX WR 为 低 之 后 BS2/ 保 持 67 ns t PLWL 从 PAGEL 低 到 WR 为 低 67 ns t BVWL BS 有 效 至 WR 为 低 67 ns t WLWH WR 为 低 时 的 脉 宽 5 ns t WLRL 从 WR 低 到 RDY/BSY 为 低 µs t WLRH t WLRH_CE () 从 WR 低 到 RDY/BSY 为 高 (2) 从 WR 低 到 RDY/BSY 为 高, 芯 片 擦 除 操 作 最 小 值 典 型 值 最 大 值 单 位 3.7 4.5 ms 7.5 9 ms t XLOL 从 XTAL 低 到 OE 为 低 ns 22
Table 95. 并 行 编 程 参 数, V CC = 5V ± % (Continued) 符 号 参 数 t BVDV BS 有 效 至 DATA 有 效 25 ns t OLDV 从 OE 低 到 DATA 有 效 25 ns t OHDZ 从 OE 低 到 DATA 为 高 阻 态 25 ns 最 小 值 典 型 值 Notes:. 在 进 行 Flash EEPROM 熔 丝 位 及 锁 定 位 写 操 作 时 t WLRH 有 效 2. 在 执 行 芯 片 擦 除 操 作 时 t WLRH_CE 有 效 最 大 值 单 位 串 行 下 载 当 RESET 为 低 电 平 时, 可 以 通 过 串 行 SPI 总 线 对 Flash 及 EEPROM 进 行 编 程 串 行 接 口 包 括 SCK MOSI( 输 入 ) 及 MISO( 输 出 ) RESET 为 低 之 后, 应 在 执 行 编 程 / 擦 除 操 作 之 前 执 行 编 程 允 许 指 令 P 222Table 96 列 出 了 SPI 编 程 所 需 引 脚 的 映 射 不 是 所 有 的 器 件 都 使 用 SPI 引 脚 专 用 于 内 部 SPI 接 口 串 行 编 程 引 脚 映 射 Table 96. 串 行 编 程 映 射 符 号 引 脚 I/O 说 明 MOSI PB3 I 连 续 数 据 输 入 MISO PB4 O 连 续 数 据 输 出 SCK PB5 I 连 续 时 钟 () Figure 2. 串 行 编 程 及 校 验 +2.7-5.5V VCC MOSI MISO SCK PB3 PB4 PB5 XTAL AVCC +2.7-5.5V (2) RESET GND 222 ATmega8(L) Notes:. 如 果 芯 片 由 片 内 振 荡 器 提 供 时 钟, 那 么 就 不 用 在 XTAL 引 脚 上 连 接 时 钟 源 2. V CC -.3V < AVCC < V CC +.3V, 但 是 AVCC 必 须 在 2.7-5.5V 范 围 内 编 程 EEPROM 时, MCU 在 自 定 时 的 编 程 操 作 中 会 插 入 一 个 自 动 擦 除 周 期, 从 而 无 需 执 行 芯 片 擦 除 命 令 芯 片 擦 除 操 作 将 程 序 存 储 器 及 EEPROM 的 内 容 都 擦 除 为 xff 时 钟 通 过 CKSEL 熔 丝 位 确 定 串 行 时 钟 (SCK) 的 最 小 低 电 平 时 间 和 最 小 高 电 平 时 间 要 满 足 如 下 要 求 : 低 :> f ck < 2 MHz 时 为 2 个 CPU 时 钟 周 期,f ck 2 MHz 时 为 3 个 CPU 时 钟 周 期 高 :> f ck < 2 MHz 时 为 2 个 CPU 时 钟 周 期,f ck 2 MHz 时 为 3 个 CPU 时 钟 周 期 串 行 编 程 算 法 向 ATmega8 串 行 写 入 数 据 时, 数 据 在 SCK 的 上 升 沿 得 以 锁 存
ATmega8(L) 从 ATmega8 读 取 数 据 时, 数 据 在 SCK 的 下 降 沿 输 出 时 序 细 节 见 Figure 3 在 串 行 编 程 模 式 下 对 ATmega8 进 行 编 程 及 校 验 时, 应 遵 循 以 下 的 步 骤 ( 见 Table 98 中 的 4 字 节 指 令 格 式 ):. 上 电 顺 序 : 在 RESET 及 SCK 为 " 时, 向 V CC 及 GND 供 电 在 一 些 系 统 中, 编 程 器 不 能 保 证 在 上 电 时 SCK 保 持 为 低 在 这 种 情 况 下, SCK 拉 低 之 后 应 在 RESET 加 一 正 脉 冲, 而 且 这 个 脉 冲 至 少 要 维 持 2 个 CPU 时 钟 周 期 2. 上 电 之 后 等 待 至 少 2 ms, 然 后 向 MOSI 引 脚 输 入 串 行 编 程 使 能 指 令 以 使 能 串 行 编 程 3. 通 信 不 同 步 将 造 成 串 行 编 程 指 令 不 工 作 同 步 之 后, 在 发 送 编 程 使 能 指 令 的 第 三 个 字 节 时, 第 二 个 字 节 的 内 容 (x53) 将 被 反 馈 回 来 不 论 反 馈 的 内 容 正 确 与 否, 指 令 的 4 个 字 节 必 须 全 部 传 输 如 果 x53 未 被 反 馈, 则 需 要 向 RESET 提 供 一 个 正 脉 冲 以 开 始 新 的 编 程 使 能 指 令 4. Flash 的 编 程 以 一 次 一 页 的 方 式 进 行, 页 大 小 见 P 23Table 93 在 执 行 加 载 程 序 存 储 页 指 令 时, 通 过 5 LSB 的 地 址 信 息, 数 据 以 字 节 为 单 位 加 载 到 存 储 页 为 保 证 加 载 的 正 确 性, 应 先 向 给 定 地 址 传 送 数 据 低 字 节, 之 后 是 高 字 节 程 序 存 储 页 通 过 地 址 的 高 7 位 以 及 写 程 序 存 储 器 页 指 令 获 得 数 据 如 果 不 使 用 查 询 的 方 式, 那 么 在 操 作 下 一 页 数 据 之 前 应 等 待 至 少 t WD_FLASH 的 时 间 ( 见 Table 97) 注 意 : 在 写 操 作 完 成 前 对 其 进 行 除 读 以 外 的 其 他 指 令, 会 导 致 编 程 错 误 5. 提 供 了 地 址 及 数 据 信 息 之 后, 适 合 的 写 指 令 将 以 字 节 为 单 位 对 EEPROM 编 程 EEPROM 存 储 单 元 总 是 在 写 入 新 数 据 之 前 自 动 擦 除 如 果 不 使 用 查 询 的 方 式, 那 么 在 操 作 下 一 页 数 据 之 前 应 等 待 至 少 t WD_EEPROM 的 时 间 ( 见 Table 97) 对 于 全 片 擦 除 之 后 的 芯 片, 数 据 为 xff 的 不 需 要 编 程 6. 可 通 过 读 指 令 来 校 验 任 何 一 个 存 储 单 元 的 内 容 数 据 从 串 行 输 出 口 MISO 输 出 7. 编 程 结 束 后 可 以 将 RESET 拉 高 开 始 正 常 操 作 8. 下 电 序 列 ( 如 果 需 要 ): 将 RESET 置 切 断 V CC 223
Flash 的 数 据 轮 询 当 Flash 正 处 于 某 一 页 的 编 程 状 态 时, 读 取 此 页 中 的 内 容 将 得 到 xff 编 程 结 束 后, 被 编 程 的 数 据 即 可 以 正 确 读 出 通 过 这 种 方 法 可 以 确 定 何 时 可 以 写 下 一 页 由 于 整 个 页 是 同 时 编 程 的, 这 一 页 中 的 任 何 一 个 地 址 都 可 以 用 来 查 询 Flash 数 据 查 询 不 适 用 于 数 据 xff 因 此, 在 编 程 xff 时, 用 户 至 少 要 等 待 t WD_FLASH 才 能 进 行 下 一 页 的 编 程 由 于 全 片 擦 除 将 所 有 的 单 元 擦 为 xff, 所 以 编 程 数 据 为 xff 时 可 以 跳 过 这 个 操 作 t WD_FLASH 的 值 见 Table 97 EEPROM 的 数 据 轮 询 当 EEPROM 正 在 处 理 一 个 字 节 的 编 程 操 作 时, 读 取 此 地 址 将 返 回 xff 编 程 结 束 后, 被 编 程 的 数 据 即 可 以 正 确 读 出 这 一 方 法 可 用 来 判 断 何 时 可 以 写 下 一 个 字 节 数 据 查 询 对 数 据 xff 无 效 但 用 户 应 该 考 虑 到, 全 片 擦 除 将 所 有 的 单 元 擦 为 xff, 所 以 编 程 数 据 为 xff 时 可 以 跳 过 这 个 操 作 不 过 这 不 适 用 于 全 片 擦 除 时 EEPROM 内 容 被 保 留 的 情 况 用 户 若 在 此 时 编 程 xff, 在 进 行 下 一 字 节 编 程 之 前 至 少 等 待 t WD_EEPROM 的 时 间 t WD_EEPROM 的 值 见 Table 97 Table 97. 写 下 一 个 Flash 或 EEPROM 单 元 之 前 的 最 小 等 待 时 间 符 号 t WD_FUSE t WD_FLASH t WD_EEPROM t WD_ERASE 最 小 等 待 时 间 4.5 ms 4.5 ms 9. ms 9. ms Figure 3. 串 行 编 程 波 形 图 SERIAL DATA INPUT (MOSI) MSB LSB SERIAL DATA OUTPUT (MISO) MSB LSB SERIAL CLOCK INPUT (SCK) SAMPLE 224 ATmega8(L)
ATmega8(L) Table 98. 串 行 编 程 指 令 集 指 令 Note: 指 令 格 式 字 节 字 节 2 字 节 3 字 节 4 编 程 使 能 xxxx xxxx xxxx xxxx RESET 拉 低 后 使 能 串 行 编 程 芯 片 擦 除 x xxxx xxxx xxxx xxxx xxxx 擦 除 EEPROM 及 Flash 读 程 序 存 储 器 H aaaa bbbb bbbb oooo oooo 从 字 地 址 为 a:b 的 程 序 存 储 器 读 取 H( 高 或 低 字 节 ) 数 据 的 o 加 载 程 序 存 储 器 页 H xxxx xxxb bbbb iiii iiii 向 字 地 址 为 b 的 程 序 存 储 页 H( 高 或 低 字 节 ) 写 入 数 据 i 应 先 写 低 字 节 再 写 高 字 节 写 程 序 存 储 器 页 aaaa bbbx xxxx xxxx xxxx 在 地 址 a:b 加 载 程 序 存 储 页 读 EEPROM 存 储 器 xx xxxa bbbb bbbb oooo oooo 从 EEPROM 的 地 址 a:b 处 读 出 数 据 o 写 EEPROM 存 储 器 xx xxxa bbbb bbbb iiii iiii 向 EEPROM 地 址 a:b 处 中 写 入 数 据 i 读 锁 定 位 xxxx xxxx xxoo oooo 读 锁 定 位 为 已 编 程, " 为 未 编 程 细 节 见 P 29Table 85 写 锁 定 位 x xxxx xxxx xxxx ii iiii 写 锁 定 位 写 表 示 编 程 锁 定 位 细 节 见 P 29Table 85 读 标 识 字 节 xx xxxx xxxx xxbb oooo oooo 从 地 址 b 读 取 标 识 字 节 o 写 熔 丝 位 xxxx xxxx iiii iiii 表 示 已 编 程, 表 示 未 编 程 见 P 2Table 88 写 高 熔 丝 位 读 熔 丝 位 读 高 熔 丝 位 xxxx xxxx iiii iiii 表 示 已 编 程, 表 示 未 编 程 见 P 2Table 87 xxxx xxxx oooo oooo 读 熔 丝 位 表 示 已 编 程, 表 示 未 编 程 细 节 见 P 2Table 88 xxxx xxxx oooo oooo 读 熔 丝 高 位 表 示 已 编 程, 表 示 未 编 程 细 节 见 P 2Table 87 读 校 准 字 节 xx xxxx bb oooo oooo 读 校 准 字 节 a = 地 址 高 位,b = 地 址 低 位, H = - 低 字 节, - 高 字 节, o = 数 据 输 出, i = 数 据 输 入,x = 任 意 值 SPI 串 行 编 程 特 性 对 SPI 模 块 特 性, 请 参 见 P 23 SPI 时 序 特 性 操 作 225
电 气 特 性 Note: 本 手 册 中 包 含 的 典 型 数 据 是 基 于 其 他 同 工 艺 的 AVR 控 制 器 特 性 的 仿 真 芯 片 的 最 小 值 与 最 大 值 针 对 特 性 值 有 效 绝 对 极 限 值 * 工 作 温 度... -55 C ~ +25 C 存 储 温 度...-65 C ~ +5 C 各 个 引 脚 对 地 的 电 压, 除 了 RESET... -.5V ~ V CC +.5V *NOTICE: 如 果 强 制 芯 片 在 超 出 绝 对 极 限 值 表 中 所 列 的 条 件 之 下 工 作 可 能 造 成 器 件 的 永 久 损 坏 这 仅 是 工 作 应 力 的 极 限 并 不 表 示 器 件 可 以 工 作 于 表 中 所 列 条 件 之 下, 或 是 那 些 超 越 工 作 范 围 明 确 规 定 的 其 他 条 件 之 下 长 时 间 工 作 于 绝 对 极 限 值 可 能 会 影 响 器 件 的 寿 命 RESET 引 脚 对 地 的 电 压... -.5V ~ +3.V 最 大 工 作 电 压... 6.V 每 个 I/O 引 脚 上 的 直 流 电 流... 4. ma V CC 与 GND 引 脚 上 的 直 流 电 流... 2. ma 直 流 特 性 T A = -4 C ~ 85 C, V CC = 2.7V ~ 5.5V ( 除 非 另 外 说 明 ) 符 号 参 数 条 件 最 小 值 典 型 值 最 大 值 单 位 V IL 输 入 低 电 压 除 XTAL 引 脚 -.5.2 V CC () V IL 输 入 低 电 压 XTAL 引 脚, 外 部 时 钟 -.5. V CC () V IH 输 入 高 电 压 除 了 XTAL 和 RESET 引 脚.6 V CC (2) V CC +.5 V V IH 输 入 高 电 压 XTAL 引 脚, 外 部 时 钟.8 V CC (2) V CC +.5 V IH2 输 入 高 电 压 RESET 引 脚.9 V CC (2) V CC +.5 V V OL V OH I IL I IH (3) 输 出 低 电 压 ( 端 口 A,B,C,D) 输 出 高 电 压 ( 端 口 A,B,C,D) 输 入 漏 电 流 I/O 引 脚 输 入 漏 电 流 I/O 引 脚 I OL = 2 ma, V CC = 5V I OL = ma, V CC = 3V I OH = -2 ma, V CC = 5V I OH = - ma, V CC = 3V V CC = 5.5V, 引 脚 为 低 电 平 ( 绝 对 值 ) V CC = 5.5V, 引 脚 为 高 电 平 ( 绝 对 值 ) 4.2 2.2.7.5 V V V V V V V µa µa R RST Reset 引 脚 上 拉 电 阻 3 8 kω R pu I/O 引 脚 上 拉 电 阻 2 5 kω 226 ATmega8(L)
ATmega8(L) T A = -4 C ~ 85 C, V CC = 2.7V ~ 5.5V ( 除 非 另 外 说 明 ) 符 号 参 数 条 件 最 小 值 I CC V ACIO I ACLK t ACID 工 作 电 流 掉 电 模 式 (5) 模 拟 比 较 器 输 入 偏 置 电 压 模 拟 比 较 器 输 入 泄 漏 电 流 模 拟 比 较 器 传 输 延 迟 正 常 4 MHz, V CC = 3V (ATmega8L) 正 常 8 MHz, V CC = 5V (ATmega8) 空 闲 4 MHz, V CC = 3V (ATmega8L) 空 闲 8 MHz, V CC = 5V (ATmega8) 5 ma 5 ma 2 ma 7 ma WDT 使 能, V CC = 3V 28 µa WDT 禁 止, V CC = 3V 3 µa V CC = 5V V in = V CC /2 V CC = 5V V in = V CC /2 V CC = 2.7V V CC = 4.V 典 型 值 最 大 值 单 位 2 mv -5 5 na Notes:. 最 大 值 表 示 保 证 引 脚 读 取 数 值 为 低 时 的 最 高 值 2. 最 小 值 表 示 保 证 引 脚 读 取 数 值 为 高 时 的 最 低 值 3. 虽 然 在 稳 定 状 态 条 件 ( 非 瞬 态 ) 下 每 个 I/O 端 口 都 可 以 吸 收 比 测 试 条 件 下 更 多 的 电 流 (2 ma,v CC = 5V 以 及 ma,v CC = 3V), 但 是 需 要 遵 循 以 下 要 求 : PDIP 封 装 : ] 所 有 端 口 的 IOL 总 和 不 能 超 过 4 ma 2] 端 口 C - C5 的 IOL 总 和 不 能 超 过 2 ma 3] 端 口 B - B7 C6 D - D7 及 XTAL2 的 IOL 总 和 不 能 超 过 ma TQFP 与 MLF 封 装 : ] 所 有 端 口 的 IOL 总 和 不 能 超 过 4 ma 2] 端 口 C - C5 的 IOL 总 和 不 能 超 过 2 ma 3] 端 口 C6 D - D4 的 IOL 总 和 不 能 超 过 3 ma 4] 端 口 B - B7 D5 - D7 的 IOL 总 和 不 能 超 过 3 ma 如 果 IOL 超 出 了 测 试 条 件, VOL 可 能 超 过 指 标 不 保 证 引 脚 可 以 吸 收 比 列 于 此 处 的 测 试 条 件 更 大 的 电 流 4. 虽 然 在 稳 定 状 态 条 件 ( 非 瞬 态 ) 下 每 个 I/O 端 口 都 可 以 输 出 比 测 试 条 件 下 更 多 的 电 流 (2 ma,v CC = 5V 以 及 ma,v CC = 3V), 但 是 需 要 遵 循 以 下 要 求 : PDIP 封 装 : ] 所 有 端 口 的 IOH 总 和 不 能 超 过 4 ma 2] 端 口 C - C5 的 IOH 总 和 不 能 超 过 ma 3] 端 口 B - B7 C6 D - D7 及 XTAL2 的 IOH 总 和 不 能 超 过 ma TQFP 与 MLF 封 装 : ] 所 有 端 口 的 IOH 总 和 不 能 超 过 4 ma 2] 端 口 C - C5 的 IOH 总 和 不 能 超 过 2 ma 3] 端 口 C6 D - D4 的 IOH 总 和 不 能 超 过 3 ma 4] 端 口 B - B7 D5 - D7 的 IOH 总 和 不 能 超 过 3 ma 如 果 IOH 超 出 了 测 试 条 件, VOH 可 能 超 过 指 标 不 保 证 引 脚 可 以 输 出 比 列 于 此 处 的 测 试 条 件 更 大 的 电 流 5. 掉 电 模 式 下 的 最 小 V CC 为 2.5V 75 5 ns 227
外 部 时 钟 驱 动 波 形 Figure 4. 外 部 时 钟 驱 动 波 形 V IH V IL 外 部 时 钟 驱 动 Table 99. 外 部 时 钟 驱 动 V CC = 2.7V - 5.5V V CC = 4.5V - 5.5V 符 号 参 数 最 小 值 最 大 值 最 小 值 最 大 值 单 位 /t CLCL 振 荡 器 频 率 8 6 MHz t CLCL 时 钟 周 期 25 62.5 ns t CHCX 高 电 平 时 间 5 25 ns t CLCX 低 电 平 时 间 5 25 ns t CLCH 上 升 时 间.6.5 µs t CHCL 下 降 时 间.6.5 µs t CLCL 时 钟 周 期 的 变 化 2 2 % Table. 外 部 RC 振 荡 器, 典 型 频 率 R [kω] () C [pf] f (2) 47 87 khz 33 22 65 khz 22 2. MHz Notes:. R 的 取 值 范 围 为 3 kω - kω,c 至 少 应 该 为 2 pf 表 中 C 值 包 括 引 脚 电 容,C 值 随 封 装 形 式 而 变 化 2. 频 率 因 封 装 形 式 与 板 层 的 不 同 而 不 同 228 ATmega8(L)
ATmega8(L) 两 线 串 行 接 口 特 性 Table 描 述 了 连 接 到 两 线 串 行 总 线 上 的 器 件 的 要 求 ATmega8 的 两 线 接 口 满 足 或 超 出 此 处 列 出 的 要 求 时 序 符 号 请 参 考 Figure 5 Table. 两 线 串 行 总 线 要 求 符 号 参 数 条 件 最 小 值 最 大 值 单 位 V IL 输 入 低 电 压 -.5.3 V CC V V IH 输 入 高 电 压.7 V CC V CC +.5 V V hys () 施 密 特 触 发 器 输 入 的 迟 滞 电 压.5 V CC (2) Notes:. 对 于 ATmega8, 此 参 数 是 特 性 参 数, 没 有 经 过 % 的 测 试 2. 只 有 当 f SCL > khz 时 才 需 要 3. C b = 总 线 的 一 条 线 的 电 容 4. f CK = CPU 时 钟 频 率 V V OL () 输 出 低 电 压 3 ma 漏 电 流.4 V t r () t of () SDA 和 SCL 的 上 升 时 间 2 +.C b (3)(2) 由 V IHmin 到 V ILmax 的 输 出 下 降 时 间 pf < C b < 4 pf (3) 2 +.C b (3)(2) 3 ns 25 ns t SP () 输 入 滤 波 器 抑 制 的 尖 峰 时 间 5 (2) ns I i 每 个 I/O 引 脚 的 输 入 电 流.V CC < V i <.9V CC - µa C i () 每 个 I/O 引 脚 的 电 容 pf f SCL SCL 时 钟 频 率 f CK (4) > max(6f SCL, 25kHz) (5) 4 khz Rp 上 拉 电 阻 值 t HD;STA START 条 件 的 保 持 时 间 ( 重 复 ) t LOW t HIGH t SU;STA t HD;DAT t SU;DAT t SU;STO t BUF SCL 时 钟 的 低 电 平 时 间 SCL 时 钟 的 高 电 平 时 间 重 复 STARTS 条 件 的 建 立 时 间 数 据 保 持 时 间 数 据 建 立 时 间 STOP 条 件 的 建 立 时 间 STOP 和 START 之 间 的 总 线 空 闲 时 间 f SCL khz f SCL > khz V CC,4V ----------------------------- 3mA V CC,4V ----------------------------- 3mA ns ------------------ Ω C b 3ns --------------- Ω C b f SCL khz 4. µs f SCL > khz.6 µs f SCL khz (6) 4.7 µs f SCL > khz (7).3 µs f SCL khz 4. µs f SCL > khz.6 µs f SCL khz 4.7 µs f SCL > khz.6 µs f SCL khz 3.45 µs f SCL > khz.9 µs f SCL khz 25 ns f SCL > khz ns f SCL khz 4. µs f SCL > khz.6 µs f SCL khz 4.7 µs f SCL > khz.3 µs 229
t HD;STA t HD;DAT tsu;dat t SU;STO 5. 此 要 求 适 用 于 ATmega8 所 有 的 两 线 串 行 接 口 的 操 作 其 他 连 接 到 两 线 串 行 总 线 的 器 件 只 需 要 满 足 一 般 的 f SCL 要 求 即 可 6. ATmega8 两 线 串 行 接 口 实 际 产 生 的 低 电 平 时 间 为 (/f SCL - 2/f CK ) 因 此 为 了 严 格 满 足 f SCL = khz 时 低 电 平 时 间 的 要 求 f CK 必 须 大 于 6 MHz 7. ATmega8 两 线 串 行 接 口 实 际 产 生 的 低 电 平 时 间 为 (/f SCL - 2/f CK ) 因 此 在 f CK = 8 MHz, 且 f SCL > 38 khz 时 低 电 平 时 间 无 法 严 格 满 足 要 求 然 而, ATmega8 可 以 与 其 他 ATmega8 以 全 速 (4 khz) 进 行 通 讯 若 其 他 器 件 具 有 合 适 的 t LOW 接 受 裕 量 也 可 以 做 到 这 一 点 Figure 5. 两 线 串 行 总 线 时 序 t of t HIGH t r t LOW t LOW SCL t SU;STA SDA t BUF SPI 时 序 特 性 具 体 信 息 请 参 见 Figure 6 和 Figure 7 Table 2. SPI 时 序 参 数 说 明 模 式 最 小 值 典 型 值 SCK 周 期 主 机 见 Table 5 2 SCK 高 / 低 电 平 主 机 占 空 比 5% 3 上 升 / 下 降 时 间 主 机 3.6 4 建 立 时 间 主 机 5 保 持 时 间 主 机 最 大 值 6 输 出 到 SCK 主 机.5 t SCK 7 SCK 到 输 出 主 机 8 SCK 到 输 出 高 电 平 主 机 9 SS 低 到 输 出 从 机 5 SCK 周 期 从 机 4 t ck ns SCK 高 / 低 电 平 从 机 2 t ck 2 上 升 / 下 降 时 间 从 机.6 3 建 立 时 间 从 机 4 保 持 时 间 从 机 5 SCK 到 输 出 从 机 5 6 SCK 到 SS 高 从 机 2 7 SS 高 到 三 态 从 机 8 SS 低 到 SCK 从 机 2 t ck Note:. SPI 编 程 模 式 中, 最 小 的 SCK 高 / 低 周 期 为 : f CK < 2 MHz:- 2t CLCL f CK > 2 MHz:- 3t CLCL 23 ATmega8(L)
ATmega8(L) Figure 6. SPI 接 口 时 序 要 求 ( 主 机 模 式 ) SS 6 SCK (CPOL = ) 2 2 SCK (CPOL = ) 4 5 3 MISO (Data Input) MSB 7... LSB 8 MOSI (Data Output) MSB... LSB Figure 7. SPI 接 口 时 序 要 求 ( 从 机 模 式 ) SS 8 9 6 SCK (CPOL = ) SCK (CPOL = ) 3 4 2 MOSI (Data Input) MSB 5... LSB 7 MISO (Data Output) MSB... LSB X 23
交 流 特 性 Table 3. ADC 特 性 参 数 () 符 号 参 数 条 件 最 小 值 Notes:. 数 值 仅 作 为 参 考 2. AV CC 的 最 小 值 为 2.7V 3. AV CC 的 最 大 值 为 5.5V () 典 型 值 () 最 大 值 分 辨 率 单 极 性 转 换 Bits 绝 对 精 度 ( 包 括 INL, DNL, 量 化 误 差, Gain, 与 偏 置 误 差 ) 积 分 非 线 性 (INL) 差 分 非 线 性 (DNL) 增 益 误 差 偏 置 误 差 单 极 性 转 换 V REF = 4V, V CC = 4V ADC 时 钟 = 2 khz 单 极 性 转 换 V REF = 4V, V CC = 4V ADC 时 钟 = MHz 单 位.75 LSB 3 LSB 单 极 性 转 换 V REF = 4V, V CC = 4V ADC 时 钟 = 2 khz.75 LSB 单 极 性 转 换 V REF = 4V, V CC = 4V ADC 时 钟 = 2 khz.5 LSB 单 极 性 转 换 V REF = 4V, V CC = 4V ADC 时 钟 = 2 khz 单 极 性 转 换 V REF = 4V, V CC = 4V ADC 时 钟 = 2 khz LSB LSB 转 换 时 间 连 续 转 换 3 26 µs 时 钟 频 率 5 khz AV CC 模 拟 电 压 V CC -.3 (2) V CC +.3 (3) V V REF 参 考 电 压 2. AV CC V V IN 模 拟 电 压 GND V REF V 输 入 带 宽 38.5 khz V INT 内 部 电 压 基 准 2.3 2.56 2.7 V R REF 参 考 输 入 端 电 阻 32 kω R AIN 模 拟 输 入 电 阻 55 MΩ 232 ATmega8(L)
ATmega8(L) ATmega8 典 型 特 性 工 作 电 流 下 面 图 表 给 出 了 典 型 数 据 这 些 数 据 在 产 生 过 程 没 有 进 行 测 试 所 有 的 电 流 测 量 数 据 都 是 在 所 有 的 I/O 引 脚 配 置 为 输 入 且 内 部 上 拉 电 阻 使 能 的 条 件 下 测 得 的 时 钟 源 为 外 部 正 弦 波 发 生 器 产 生 的 满 幅 值 正 弦 波 掉 电 模 式 下 的 电 流 与 时 钟 无 关 电 流 与 多 个 因 素 有 关, 如 : 工 作 电 压 工 作 频 率 I/O 引 脚 的 负 载 及 电 平 转 换 频 率 执 行 的 代 码 和 环 境 温 度 主 要 因 素 为 工 作 电 压 和 工 作 频 率 容 性 负 载 引 脚 的 电 流 可 以 通 过 公 式 C L *V CC *f 进 行 估 计 式 中, C L 为 负 载 电 容, V CC 为 工 作 电 压, f 为 引 脚 的 平 均 开 关 频 率 器 件 的 特 性 参 数 为 比 测 试 上 限 更 高 的 频 率 下 的 数 据 但 是 不 保 证 器 件 在 比 定 货 信 息 标 明 的 工 作 频 率 更 高 的 频 率 功 能 正 常 工 作 掉 电 模 式 下 看 门 狗 使 能 与 看 门 狗 禁 止 之 间 的 电 流 差 异 即 是 看 门 狗 定 时 器 所 需 的 工 作 电 流 Figure 8. 工 作 电 流 和 工 作 频 率 (. -. MHz) 的 关 系 3 ACTIVE SUPPLY CURRENT vs. FREQUENCY. -. MHz ICC (ma) 2.5 2.5 5.5V 5.V 4.5V 4.V 3.3V 3.V 2.7V.5..2.3.4.5.6.7.8.9 Frequency (MHz) 233
Figure 9. 工 作 电 流 和 工 作 频 率 ( - 2 MHz) 的 关 系 3 25 2 ACTIVE SUPPLY CURRENT vs. FREQUENCY - 2 MHz 5.5V 5.V 4.5V ICC (ma) 5 5 2.7V 3.V 3.3V 2 4 6 8 2 4 6 8 2 Frequency (MHz) Figure 2. 工 作 电 流 和 V CC 的 关 系 ( 内 部 RC 振 荡 器, 8 MHz) 8 ACTIVE SUPPLY CURRENT vs. V CC INTERNAL RC OSCILLATOR, 8 MHz 6 4 2-4 C 25 C 85 C ICC (ma) 8 6 4 2 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 234 ATmega8(L)
ATmega8(L) Figure 2. 工 作 电 流 和 V CC 的 关 系 ( 内 部 RC 振 荡 器, 4 MHz) 2 ACTIVE SUPPLY CURRENT vs. V CC INTERNAL RC OSCILLATOR, 4 MHz ICC (ma) 8 6-4 C 25 C 85 C 4 2 2.5 3 3.5 4 4.5 5 5.5 V CC (V) Figure 22. 工 作 电 流 和 V CC 的 关 系 ( 内 部 RC 振 荡 器, 2 MHz) 6 5 4 ACTIVE SUPPLY CURRENT vs. V CC INTERNAL RC OSCILLATOR, 2 MHz 25 C -4 C 85 C ICC (ma) 3 2 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 235
Figure 23. 工 作 电 流 和 V CC 的 关 系 ( 内 部 RC 振 荡 器, MHz) 3.5 ACTIVE SUPPLY CURRENT vs. V CC INTERNAL RC OSCILLATOR, MHz 3 2.5 25 C -4 C 85 C ICC (ma) 2.5.5 2.5 3 3.5 4 4.5 5 5.5 V CC (V) Figure 24. 工 作 电 流 和 V CC 的 关 系 (32 khz 外 部 晶 振 ) 2 ACTIVE SUPPLY CURRENT vs. V CC 32kHz EXTERNAL OSCILLATOR 8 25 C ICC (ua) 6 4 2 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 236 ATmega8(L)
ATmega8(L) 空 闲 模 式 电 流 Figure 25. 空 闲 模 式 电 流 和 工 作 频 率 (. -. MHz) 的 关 系 ICC (ma).7.6.5.4.3.2 IDLE SUPPLY CURRENT vs. FREQUENCY. -. MHz 5.5V 5.V 4.5V 4.V 3.3V 3.V 2.7V...2.3.4.5.6.7.8.9 Frequency (MHz) Figure 26. 空 闲 模 式 电 流 和 工 作 频 率 ( - 2 MHz) 的 关 系 4 2 IDLE SUPPLY CURRENT vs. FREQUENCY - 2 MHz 5.5V 5.V 4.5V ICC (ma) 8 6 4.V 4 3.3V 2 3.V 2.7V 2 4 6 8 2 4 6 8 2 Frequency (MHz) 237
Figure 27. 空 闲 模 式 电 流 和 V CC 的 关 系 ( 内 部 RC 振 荡 器, 8 MHz) 8 7 6 IDLE SUPPLY CURRENT vs. V CC INTERNAL RC OSCILLATOR, 8 MHz -4 C 25 C 85 C 5 ICC (ma) 4 3 2 2.5 3 3.5 4 4.5 5 5.5 V CC (V) Figure 28. 空 闲 模 式 电 流 和 V CC 的 关 系 ( 内 部 RC 振 荡 器, 4 MHz) 4 3.5 3 IDLE SUPPLY CURRENT vs. V CC INTERNAL RC OSCILLATOR, 4 MHz -4 C 25 C 85 C 2.5 ICC (ma) 2.5.5 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 238 ATmega8(L)
ATmega8(L) Figure 29. 空 闲 模 式 电 流 和 V CC 的 关 系 ( 内 部 RC 振 荡 器, 2 MHz).8.6.4.2 IDLE SUPPLY CURRENT vs. V CC INTERNAL RC OSCILLATOR, 2 MHz -4 C 85 C 25 C ICC (ma).8.6.4.2 2.5 3 3.5 4 4.5 5 5.5 V CC (V) Figure 3. 空 闲 模 式 电 流 和 V CC 的 关 系 ( 内 部 RC 振 荡 器, MHz) ICC (ma).9.8.7.6.5.4.3.2. IDLE SUPPLY CURRENT vs. V CC INTERNAL RC OSCILLATOR, MHz 85 C 25 C -4 C 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 239
Figure 3. 空 闲 模 式 电 流 和 V CC 的 关 系 (32 khz 外 部 晶 振 ) 4 IDLE SUPPLY CURRENT vs. V CC 32kHz EXTERNAL OSCILLATOR 35 25 C 3 25 ICC (ua) 2 5 5 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 掉 电 模 式 电 流 Figure 32. 掉 电 模 式 电 流 和 V CC 的 关 系 ( 看 门 狗 定 时 器 禁 用 ) 2.5 POWER-DOWN SUPPLY CURRENT vs. V CC WATCHDOG TIMER DISABLED 85 C 2 ICC (ua).5-4 C 25 C.5 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 24 ATmega8(L)
ATmega8(L) Figure 33. 掉 电 模 式 电 流 和 V CC 的 关 系 ( 看 门 狗 定 时 器 使 能 ) 8 POWER-DOWN SUPPLY CURRENT vs. V CC WATCHDOG TIMER ENABLED 7 6 85 C 25 C -4 C 5 ICC (ua) 4 3 2 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 省 电 模 式 电 流 Figure 34. 省 电 模 式 电 流 和 V CC 的 关 系 ( 看 门 狗 定 时 器 禁 用 ) 25 POWER-SAVE SUPPLY CURRENT vs. V CC WATCHDOG TIMER DISABLED 2 25 C ICC (ua) 5 5 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 24
Standby 模 式 电 流 Figure 35. Standby 模 式 电 流 和 V CC 的 关 系 (455 khz 谐 振 器, 看 门 狗 定 时 器 禁 用 ) 8 STANDBY SUPPLY CURRENT vs. V CC 455 khz RESONATOR, WATCHDOG TIMER DISABLED 7 6 5 ICC (ua) 4 3 2 2.5 3 3.5 4 4.5 5 5.5 V CC (V) Figure 36. Standby 模 式 电 流 和 V CC 的 关 系 ( MHz 谐 振 器, 看 门 狗 定 时 器 禁 用 ) 7 STANDBY SUPPLY CURRENT vs. V CC MHz RESONATOR, WATCHDOG TIMER DISABLED 6 5 ICC (ua) 4 3 2 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 242 ATmega8(L)
ATmega8(L) Figure 37. Standby 模 式 电 流 和 V CC 的 关 系 (2 MHz 谐 振 器, 看 门 狗 定 时 器 禁 用 ) 9 STANDBY SUPPLY CURRENT vs. V CC 2 MHz RESONATOR, WATCHDOG TIMER DISABLED 8 7 6 ICC (ua) 5 4 3 2 2.5 3 3.5 4 4.5 5 5.5 V CC (V) Figure 38. Standby 模 式 电 流 和 V CC 的 关 系 (2 MHz Xtal, 看 门 狗 定 时 器 禁 用 ) 9 STANDBY SUPPLY CURRENT vs. V CC 2 MHz XTAL, WATCHDOG TIMER DISABLED 8 7 6 ICC (ua) 5 4 3 2 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 243
Figure 39. Standby 模 式 电 流 和 V CC 的 关 系 (4 MHz 谐 振 器, 看 门 狗 定 时 器 禁 用 ) 4 STANDBY SUPPLY CURRENT vs. V CC 4 MHz RESONATOR, WATCHDOG TIMER DISABLED 2 ICC (ua) 8 6 4 2 2.5 3 3.5 4 4.5 5 5.5 V CC (V) Figure 4. Standby 模 式 电 流 和 V CC 的 关 系 (4 MHz Xtal, 看 门 狗 定 时 器 禁 用 ) 4 STANDBY SUPPLY CURRENT vs. V CC 4 MHz XTAL, WATCHDOG TIMER DISABLED 2 ICC (ua) 8 6 4 2 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 244 ATmega8(L)
ATmega8(L) Figure 4. Standby 模 式 电 流 和 V CC 的 关 系 (6 MHz 谐 振 器, 看 门 狗 定 时 器 禁 用 ) 6 STANDBY SUPPLY CURRENT vs. V CC 6 MHz RESONATOR, WATCHDOG TIMER DISABLED 4 2 ICC (ua) 8 6 4 2 2.5 3 3.5 4 4.5 5 5.5 V CC (V) Figure 42. Standby 模 式 电 流 和 V CC 的 关 系 (6 MHz Xtal, 看 门 狗 定 时 器 禁 用 ) 2 STANDBY SUPPLY CURRENT vs. V CC 6 MHz XTAL, WATCHDOG TIMER DISABLED ICC (ua) 8 6 4 2 8 6 4 2 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 245
引 脚 上 拉 Figure 43. I/O 引 脚 上 拉 电 阻 电 流 和 输 入 电 压 的 关 系 (V CC = 5V) 6 85 C 4 2-4 C 25 C I/O PIN PULL-UP RESISTOR CURRENT vs. INPUT VOLTAGE Vcc = 5V IIO (ua) 8 6 4 2 2 3 4 5 6 V OP (V) Figure 44. I/O 引 脚 上 拉 电 阻 电 流 和 输 入 电 压 的 关 系 (V CC = 2.7V) 9 I/O PIN PULL-UP RESISTOR CURRENT vs. INPUT VOLTAGE Vcc = 2.7V 8 85 C 25 C 7-4 C 6 IIO (ua) 5 4 3 2.5.5 2 2.5 3 V OP (V) 246 ATmega8(L)
ATmega8(L) Figure 45. 复 位 (Reset) 引 脚 上 拉 电 阻 电 流 和 Reset 引 脚 电 压 的 关 系 (V CC = 5V) - 4 C 8 RESET PULL-UP RESISTOR CURRENT vs. RESET PIN VOLTAGE Vcc = 5V 25 C 85 C IRESET (ua) 6 4 2 2 V RESET (V) Figure 46. 复 位 (Reset) 引 脚 上 拉 电 阻 电 流 和 Reset 引 脚 电 压 的 关 系 (V CC = 2.7V) 45-4 C 4 35 3 85 C 25 C RESET PULL-UP RESISTOR CURRENT vs. RESET PIN VOLTAGE Vcc = 2.7V IRESET (ua) 25 2 5 5.5.5 2 2.5 V RESET (V) 247
驱 动 能 力 Figure 47. I/O 引 脚 源 电 流 和 输 出 电 压 的 关 系 (V CC = 5V) 8 7 6 5 I/O PIN SOURCE CURRENT vs. OUTPUT VOLTAGE Vcc = 5V -4 C 25 C 85 C IOH (ma) 4 3 2 V OH (V) Figure 48. I/O 引 脚 源 电 流 和 输 出 电 压 的 关 系 (V CC = 2.7V) 3 25 2 I/O PIN SOURCE CURRENT vs. OUTPUT VOLTAGE Vcc = 2.7V -4 C 25 C 85 C IOH (ma) 5 5.5.5 2 2.5 3 V OH (V) 248 ATmega8(L)
ATmega8(L) Figure 49. I/O 引 脚 漏 电 流 和 输 出 电 压 的 关 系 (V CC = 5V) 9 I/O PIN SINK CURRENT vs. OUTPUT VOLTAGE Vcc = 5V IOL (ma) 8 7 6 5 4-4 C 25 C 85 C 3 2.5.5 2 2.5 V OL (V) Figure 5. I/O 引 脚 漏 电 流 和 输 出 电 压 的 关 系 (V CC = 2.7V) 35 I/O PIN SINK CURRENT vs. OUTPUT VOLTAGE Vcc = 2.7V IOL (ma) 3 25 2 5-4 C 25 C 85 C 5.5.5 2 2.5 V OL (V) 249
Figure 5. Reset 引 脚 作 为 I/O 引 脚 源 电 流 与 输 出 电 压 的 关 系 (V CC = 5V) 4 RESET PIN AS I/O - SOURCE CURRENT vs. OUTPUT VOLTAGE Vcc = 5V Current (ma) 3.5 3 2.5 2.5-4 C 25 C 85 C.5 2 2.5 3 3.5 4 4.5 V OH (V) Figure 52. Reset 引 脚 作 为 I/O 引 脚 源 电 流 与 输 出 电 压 的 关 系 (V CC = 2.7V) 5 RESET PIN AS I/O - SOURCE CURRENT vs. OUTPUT VOLTAGE Vcc = 2.7V 4.5 25 C -4 C 4 3.5 Current (ma) 3 2.5 2.5.5 85 C.5.5 2 2.5 V OH (V) 25 ATmega8(L)
ATmega8(L) Figure 53. Reset 引 脚 作 为 I/O 引 脚 漏 电 流 与 输 出 电 压 的 关 系 (V CC = 5V) Current (ma) 4 2 8 6 RESET PIN AS I/O - SINK CURRENT vs. OUTPUT VOLTAGE Vcc = 5V -4 C 25 C 85 C 4 2.5.5 2 2.5 V OL (V) Figure 54. Reset 引 脚 作 为 I/O 引 脚 漏 电 流 与 输 出 电 压 的 关 系 (V CC = 2.7V) Current (ma) 4.5 4 3.5 3 2.5 2.5 RESET PIN AS I/O - SINK CURRENT vs. OUTPUT VOLTAGE Vcc = 2.7V -4 C 25 C 85 C.5.5.5 2 2.5 V OL (V) 25
引 脚 门 限 及 滞 后 Figure 55. I/O 引 脚 输 入 门 限 电 压 和 V CC 的 关 系 (V IH, I/O 引 脚 读 出 值 为 ) 2.5 I/O PIN INPUT THRESHOLD VOLTAGE vs. V CC VIH, IO PIN READ AS '' 2-4 C 85 C 25 C Threshold (V).5.5 2.5 3 3.5 4 4.5 5 5.5 V CC (V) Figure 56. I/O 引 脚 输 入 门 限 电 压 和 V CC 的 关 系 (V IL, I/O 引 脚 读 出 值 为 ) 2 I/O PIN INPUT THRESHOLD VOLTAGE vs. V CC VIL, IO PIN READ AS ''.5-4 C 25 C 85 C Threshold (V).5 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 252 ATmega8(L)
ATmega8(L) Figure 57. I/O 引 脚 输 入 迟 滞 和 V CC 的 关 系.7 I/O PIN INPUT HYSTERESIS vs. V CC Input Hysteresis (V).6.5.4.3.2 85 C -4 C 25 C. 2.5 3 3.5 4 4.5 5 5.5 V CC (V) Figure 58. Reset 引 脚 作 为 I/O 输 入 门 限 电 压 和 V CC 的 关 系 (V IH,Reset 引 脚 读 出 值 为 ) 4 3.5 3 RESET PIN AS I/O - INPUT THRESHOLD VOLTAGE vs. V CC VIH, RESET PIN READ AS '' -4 C 85 C 25 C Threshold (V) 2.5 2.5.5 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 253
Figure 59. Reset 引 脚 作 为 I/O 输 入 门 限 电 压 和 V CC 的 关 系 (V IL,Reset 引 脚 读 出 值 为 ) 2.5 2 RESET PIN AS I/O - INPUT THRESHOLD VOLTAGE vs. V CC VIL, RESET PIN READ AS '' 85 C 25 C -4 C Threshold (V).5.5 2.5 3 3.5 4 4.5 5 5.5 V CC (V) Figure 6. Reset 引 脚 作 为 I/O 引 脚 迟 滞 和 V CC 的 关 系 2 RESET PIN AS I/O - PIN HYSTERESIS vs. V CC Input Hysteresis (V).5-4 C 85 C 25 C.5 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 254 ATmega8(L)
ATmega8(L) Figure 6. Reset 输 入 门 限 电 压 和 V CC 的 关 系 (V IH,Reset 引 脚 读 出 值 为 ) 2.5 RESET INPUT THRESHOLD VOLTAGE vs. V CC VIH, RESET PIN READ AS '' 2-4 C 25 C 85 C Threshold (V).5.5 2.5 3 3.5 4 4.5 5 5.5 V CC (V) Figure 62. Reset 输 入 门 限 电 压 和 V CC 的 关 系 (V IL,Reset 引 脚 读 出 值 为 ) 2.5 RESET INPUT THRESHOLD VOLTAGE vs. V CC VIL, RESET PIN READ AS '' Threshold (V) 2.5 85 C 25 C -4 C.5 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 255
Figure 63. Reset 输 入 迟 滞 和 V CC 的 关 系 RESET INPUT PIN HYSTERESIS vs. V CC Input Hysteresis (V).8.6.4.2-4 C 25 C 85 C 2 2.5 3 3.5 4 4.5 5 5.5 V CC (V) BOD 门 限 值 与 模 拟 比 较 器 偏 移 量 Figure 64. BOD 门 限 值 和 温 度 的 关 系 (BOD 电 平 为 4.V) 4.3 BOD THRESHOLDS vs. TEMPERATURE BODLEVEL IS 4.V 4.2 Rising V CC Threshold (V) 4. 4 3.9 Falling V CC 3.8 3.7-5 -4-3 -2-2 3 4 5 6 7 8 9 Temperature ( C) 256 ATmega8(L)
ATmega8(L) Figure 65. BOD 门 限 值 和 温 度 的 关 系 (BOD 电 平 为 2.7v) 2.8 BOD THRESHOLDS vs. TEMPERATURE BODLEVEL IS 2.7V 2.7 Rising V CC Threshold (V) 2.6 2.5 Falling V CC 2.4-5 -4-3 -2-2 3 4 5 6 7 8 9 Temperature ( C) Figure 66. 能 隙 电 压 和 V CC 的 关 系.35 BANDGAP VOLTAGE vs. V CC.3-4 Bandgap Voltage (V).35.3 85 25.295.29 2.5 3 3.5 4 4.5 5 5.5 Vcc (V) 257
Figure 67. 模 拟 比 较 器 偏 置 电 压 和 共 模 电 压 的 关 系 (V CC = 5V).3 ANALOG COMPARATOR OFFSET VOLTAGE vs. COMMON MODE VOLTAGE V CC = 5V.2 Comparator Offset Voltage (V). -. -.2 -.3 -.4 85 25 C -.5-4 -.6.5.5 2 2.5 3 3.5 4 4.5 5 Common Mode Voltage (V) Figure 68. 模 拟 比 较 器 偏 置 电 压 和 共 模 电 压 的 关 系 (V CC = 2.7V).3 ANALOG COMPARATOR OFFSET VOLTAGE vs. COMMON MODE VOLTAGE V CC = 2.7V.2 Comparator Offset Voltage (V). -. -.2 -.3 85 25 -.4-4 -.5.5.5 2 2.5 3 Common Mode Voltage (V) 258 ATmega8(L)
ATmega8(L) 内 部 振 荡 器 速 率 Figure 69. 看 门 狗 振 荡 器 频 率 和 V CC 的 关 系 WATCHDOG OSCILLATOR FREQUENCY vs. V CC 26 24 22-4 C 25 C 85 C 2 FRC (khz) 8 6 4 2 2.5 3 3.5 4 4.5 5 5.5 V CC (V) Figure 7. 校 准 的 8 MHz RC 振 荡 器 频 率 和 温 度 的 关 系 CALIBRATED 8MHz RC OSCILLATOR FREQUENCY vs. TEMPERATURE FRC (MHz) 8.5 8.3 8. 7.9 7.7 7.5 7.3 5.5V 4.V 2.7V 7. 6.9 6.7 6.5-6 -4-2 2 4 6 8 Temperature ( C) 259
Figure 7. 校 准 的 8 MHz RC 振 荡 器 频 率 和 V CC 的 关 系 CALIBRATED 8MHz RC OSCILLATOR FREQUENCY vs. V CC FRC (MHz) 8.5 8.3 8. 7.9 7.7 7.5 7.3-4 C 25 C 85 C 7. 6.9 6.7 6.5 2.5 3 3.5 4 4.5 5 5.5 V CC (V) Figure 72. 校 准 的 8 MHz RC 振 荡 器 频 率 和 Osccal 数 值 的 关 系 6 CALIBRATED 8MHz RC OSCILLATOR FREQUENCY vs. OSCCAL VALUE 4 2 FRC (MHz) 8 6 4 6 32 48 64 8 96 2 28 44 6 76 92 28 224 24 OSCCAL VALUE 26 ATmega8(L)
ATmega8(L) Figure 73. 校 准 的 4 MHz RC 振 荡 器 频 率 和 温 度 的 关 系 4.2 CALIBRATED 4MHz RC OSCILLATOR FREQUENCY vs. TEMPERATURE 4. 4 5.5V 4.V FRC (MHz) 3.9 3.8 2.7V 3.7 3.6 3.5-6 -4-2 2 4 6 8 Temperature ( C) Figure 74. 校 准 的 4 MHz RC 振 荡 器 频 率 和 V CC 的 关 系 4.2 CALIBRATED 4MHz RC OSCILLATOR FREQUENCY vs. V CC FRC (MHz) 4. 4 3.9 3.8-4 C 25 C 85 C 3.7 3.6 3.5 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 26
Figure 75. 校 准 的 4 MHz RC 振 荡 器 频 率 和 Osccal 数 值 的 关 系 8 CALIBRATED 4MHz RC OSCILLATOR FREQUENCY vs. OSCCAL VALUE 7 6 FRC (MHz) 5 4 3 2 6 32 48 64 8 96 2 28 44 6 76 92 28 224 24 OSCCAL VALUE Figure 76. 校 准 的 2 MHz RC 振 荡 器 频 率 和 温 度 的 关 系 2. CALIBRATED 2MHz RC OSCILLATOR FREQUENCY vs. TEMPERATURE 2.5 5.5V 2 4.V FRC (MHz).95.9 2.7V.85.8-6 -4-2 2 4 6 8 Temperature ( C) 262 ATmega8(L)
ATmega8(L) Figure 77. 校 准 的 2 MHz RC 振 荡 器 频 率 和 V CC 的 关 系 2.2 CALIBRATED 2MHz RC OSCILLATOR FREQUENCY vs. V CC FRC (MHz) 2. 2.9-4 C 25 C 85 C.8.7 2.5 3 3.5 4 4.5 5 5.5 V CC (V) Figure 78. 校 准 的 2 MHz RC 振 荡 器 频 率 和 Osccal 数 值 的 关 系 3.8 CALIBRATED 2MHz RC OSCILLATOR FREQUENCY vs. OSCCAL VALUE 3.3 2.8 FRC (MHz) 2.3.8.3.8 6 32 48 64 8 96 2 28 44 6 76 92 28 224 24 OSCCAL VALUE 263
Figure 79. 校 准 的 MHz RC 振 荡 器 频 率 和 温 度 的 关 系 CALIBRATED MHz RC OSCILLATOR FREQUENCY vs. TEMPERATURE.4.2 5.5V 4.V FRC (MHz).98.96 2.7V.94.92.9-6 -4-2 2 4 6 8 Temperature ( C) Figure 8. 校 准 的 MHz RC 振 荡 器 频 率 和 V CC 的 关 系. CALIBRATED MHz RC OSCILLATOR FREQUENCY vs. V CC FRC (MHz).5-4 C 25 C 85 C.95.9 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 264 ATmega8(L)
ATmega8(L) Figure 8. 校 准 的 MHz RC 振 荡 器 频 率 和 Osccal 数 值 的 关 系.9 CALIBRATED MHz RC OSCILLATOR FREQUENCY vs. OSCCAL VALUE.7.5 FRC (MHz).3..9.7.5 6 32 48 64 8 96 2 28 44 6 76 92 28 224 24 OSCCAL VALUE 外 围 设 备 耗 电 流 Figure 82. BOD 电 流 和 V CC 的 关 系 BROWN-OUT DETECTOR CURRENT vs. V CC 3 25 ICC (ua) 2 5-4 C 25 C 85 C 5 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 265
Figure 83. ADC 电 流 和 V CC 的 关 系 (AREF = AV CC ) 45 ADC CURRENT vs. V CC AREF = AVCC 4 35 3-4 C 85 C 25 C ICC (ua) 25 2 5 5 2.5 3 3.5 4 4.5 5 5.5 V CC (V) Figure 84. AREF 外 部 参 考 电 流 和 V CC 的 关 系 25 AREF EXTERNAL REFERENCE CURRENT vs. V CC ICC (ua) 2 5 25 C -4 C 85 C 5 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 266 ATmega8(L)
ATmega8(L) Figure 85. 32 khz TOSC 电 流 与 V CC 的 关 系 ( 看 门 狗 定 时 器 禁 用 ) 25 32 khz TOSC CURRENT vs. V CC WATCHDOG TIMER DISABLED 2 25 C 5 ICC (ua) 5 2.5 3 3.5 4 4.5 5 5.5 V CC (V) Figure 86. 看 门 狗 定 时 器 电 流 与 V CC 的 关 系 8 WATCHDOG TIMER CURRENT vs. V CC 7 6 85 C 25 C -4 C 5 ICC (ua) 4 3 2 2 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 267
Figure 87. 模 拟 比 较 器 电 流 与 V CC 的 关 系 ANALOG COMPARATOR CURRENT vs. V CC 9 8 7 85 C 25 C -4 C 6 ICC (ua) 5 4 3 2 2.5 3 3.5 4 4.5 5 5.5 V CC (V) Figure 88. 编 程 电 流 和 V CC 的 关 系 PROGRAMMING CURRENT vs. V CC ICC (ma) 7 6 5 4 3-4 C 25 C 85 C 2 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 268 ATmega8(L)
ATmega8(L) 复 位 与 复 位 脉 宽 耗 电 流 Figure 89. 复 位 电 流 与 V CC 的 关 系 (. -. MHz, 包 括 通 过 复 位 上 拉 电 阻 的 电 流 ) ICC (ma) 4 3.5 3 2.5 2.5 RESET SUPPLY CURRENT vs. V CC. - MHz, EXCLUDING CURRENT THROUGH THE RESET PULL-UP 5.5V 5.V 4.5V 4.V 3.3V 3.V 2.7V.5..2.3.4.5.6.7.8.9 Frequency (MHz) Figure 9. 复 位 电 流 与 V CC 的 关 系 ( - 2 MHz, 包 括 通 过 复 位 上 拉 电 阻 的 电 流 ) 25 RESET SUPPLY CURRENT vs. V CC - 2 MHz, EXCLUDING CURRENT THROUGH THE RESET PULL-UP 5.5V ICC (ma) 2 5 3.3V 5.V 4.5V 5 3.V 2.7V 2 4 6 8 2 4 6 8 2 Frequency (MHz) 269
Figure 9. 复 位 脉 宽 与 V CC 的 关 系 RESET PULSE WIDTH vs. V CC 4 2 Pulsewidth (ns) 8 6 4 2 85 C 25 C -4 C 2.5 3 3.5 4 4.5 5 5.5 V CC (V) 27 ATmega8(L)
ATmega8(L) 寄 存 器 概 述 地 址 名 称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit Bit 页 码 x3f (x5f) SREG I T H S V N Z C 9 x3e (x5e) SPH SP SP9 SP8 x3d (x5d) SPL SP7 SP6 SP5 SP4 SP3 SP2 SP SP x3c (x5c) 保 留 x3b (x5b) GICR INT INT IVSEL IVCE 46, 63 x3a (x5a) GIFR INTF INTF 64 x39 (x59) TIMSK OCIE2 TOIE2 TICIE OCIEA OCIEB TOIE TOIE 68, 94, 3 x38 (x58) TIFR OCF2 TOV2 ICF OCFA OCFB TOV TOV 69, 94, 3 x37 (x57) SPMCR SPMIE RWWSB RWWSRE BLBSET PGWRT PGERS SPMEN 2 x36 (x56) TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN TWIE 58 x35 (x55) MCUCR SE SM2 SM SM ISC ISC ISC ISC 3, 62 x34 (x54) MCUCSR WDRF BORF EXTRF PORF 38 x33 (x53) TCCR CS2 CS CS 68 x32 (x52) TCNT T/C (8 位 ) 68 x3 (x5) OSCCAL 振 荡 器 校 准 寄 存 器 28 x3 (x5) SFIOR ACME PUD PSR2 PSR 55, 7, 4, 8 x2f (x4f) TCCRA COMA COMA COMB COMB FOCA FOCB WGM WGM 89 x2e (x4e) TCCRB ICNC ICES WGM3 WGM2 CS2 CS CS 92 x2d (x4d) TCNTH T/C 计 数 器 寄 存 器 高 字 节 92 x2c (x4c) TCNTL T/C 计 数 器 寄 存 器 低 字 节 92 x2b (x4b) OCRAH T/C 输 出 比 较 寄 存 器 A 高 字 节 93 x2a (x4a) OCRAL T/C 输 出 比 较 寄 存 器 A 低 字 节 93 x29 (x49) OCRBH T/C 输 出 比 较 寄 存 器 B 高 字 节 93 x28 (x48) OCRBL T/C 输 出 比 较 寄 存 器 B 低 字 节 93 x27 (x47) ICRH T/C 输 入 捕 获 寄 存 器 高 字 节 94 x26 (x46) ICRL T/C 输 入 捕 获 寄 存 器 低 字 节 94 x25 (x45) TCCR2 FOC2 WGM2 COM2 COM2 WGM2 CS22 CS2 CS2 8 x24 (x44) TCNT2 T/C2 (8 位 ) x23 (x43) OCR2 T/C2 输 出 比 较 寄 存 器 x22 (x42) ASSR AS2 TCN2UB OCR2UB TCR2UB x2 (x4) WDTCR WDCE WDE WDP2 WDP WDP 4 x2 () (x4) () UBRRH URSEL UBRR[:8] 45 UCSRC URSEL UMSEL UPM UPM USBS UCSZ UCSZ UCPOL 43 xf (x3f) EEARH EEAR8 7 xe (x3e) EEARL EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR EEAR 7 xd (x3d) EEDR EEPROM 数 据 寄 存 器 7 xc (x3c) EECR EERIE EEMWE EEWE EERE 7 xb (x3b) xa (x3a) x9 (x39) 保 留 保 留 保 留 x8 (x38) PORTB PORTB7 PORTB6 PORTB5 PORTB4 PORTB3 PORTB2 PORTB PORTB 6 x7 (x37) DDRB DDB7 DDB6 DDB5 DDB4 DDB3 DDB2 DDB DDB 6 x6 (x36) PINB PINB7 PINB6 PINB5 PINB4 PINB3 PINB2 PINB PINB 6 x5 (x35) PORTC PORTC6 PORTC5 PORTC4 PORTC3 PORTC2 PORTC PORTC 6 x4 (x34) DDRC DDC6 DDC5 DDC4 DDC3 DDC2 DDC DDC 6 x3 (x33) PINC PINC6 PINC5 PINC4 PINC3 PINC2 PINC PINC 6 x2 (x32) PORTD PORTD7 PORTD6 PORTD5 PORTD4 PORTD3 PORTD2 PORTD PORTD 6 x (x3) DDRD DDD7 DDD6 DDD5 DDD4 DDD3 DDD2 DDD DDD 6 x (x3) PIND PIND7 PIND6 PIND5 PIND4 PIND3 PIND2 PIND PIND 6 xf (x2f) SPDR SPI 数 据 寄 存 器 2 xe (x2e) SPSR SPIF WCOL SPI2X 2 xd (x2d) SPCR SPIE SPE DORD MSTR CPOL CPHA SPR SPR 9 xc (x2c) UDR USART I/O 数 据 寄 存 器 4 xb (x2b) UCSRA RXC TXC UDRE FE DOR PE U2X MPCM 42 xa (x2a) UCSRB RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8 42 x9 (x29) UBRRL USART 波 特 率 寄 存 器 低 字 节 45 x8 (x28) ACSR ACD ACBG ACO ACI ACIE ACIC ACIS ACIS 8 x7 (x27) ADMUX REFS REFS ADLAR MUX3 MUX2 MUX MUX 92 x6 (x26) ADCSRA ADEN ADSC ADFR ADIF ADIE ADPS2 ADPS ADPS 94 x5 (x25) ADCH ADC 数 据 寄 存 器 高 字 节 95 x4 (x24) ADCL ADC 数 据 寄 存 器 低 字 节 95 x3 (x23) TWDR 两 线 串 行 接 口 数 据 寄 存 器 6 x2 (x22) TWAR TWA6 TWA5 TWA4 TWA3 TWA2 TWA TWA TWGCE 6 27
寄 存 器 概 述 地 址 名 称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit Bit 页 码 x (x2) TWSR TWS7 TWS6 TWS5 TWS4 TWS3 TWPS TWPS 6 x (x2) TWBR 两 线 串 行 接 口 位 率 寄 存 器 58 Notes:. 如 何 访 问 UBRRH 与 UCSRC 请 参 见 USART 的 说 明 2. 为 了 和 将 来 器 件 兼 容, 访 问 保 留 位 时 应 该 写 保 留 的 I/O 地 址 不 可 以 执 行 写 操 作 3. 一 些 状 态 标 志 可 以 通 过 写 入 逻 辑 来 清 除 需 要 注 意 的 是, 不 同 于 大 多 数 其 他 的 AVR,CBI 和 SBI 指 令 只 对 一 些 特 殊 位 有 效, 因 此 可 以 对 那 些 包 含 标 志 位 的 寄 存 器 进 行 操 作 CBI 和 SBI 指 令 可 使 用 的 范 围 只 能 是 地 址 为 x - xf 的 寄 存 器 272 ATmega8(L)
ATmega8(L) 指 令 集 概 述 指 令 操 作 数 说 明 操 作 标 志 # 时 钟 数 算 数 和 逻 辑 指 令 ADD Rd, Rr 无 进 位 加 法 Rd Rd + Rr Z,C,N,V,H ADC Rd, Rr 带 进 位 加 法 Rd Rd + Rr + C Z,C,N,V,H ADIW Rdl,K 立 即 数 与 字 相 加 Rdh:Rdl Rdh:Rdl + K Z,C,N,V,S 2 SUB Rd, Rr 无 进 位 减 法 Rd Rd - Rr Z,C,N,V,H SUBI Rd, K 减 立 即 数 Rd Rd - K Z,C,N,V,H SBC Rd, Rr 带 进 位 减 法 Rd Rd - Rr - C Z,C,N,V,H SBCI Rd, K 带 进 位 减 立 即 数 Rd Rd - K - C Z,C,N,V,H SBIW Rdl,K 从 字 中 减 立 即 数 Rdh:Rdl Rdh:Rdl - K Z,C,N,V,S 2 AND Rd, Rr 逻 辑 与 Rd Rd Rr Z,N,V ANDI Rd, K 与 立 即 数 的 逻 辑 与 操 作 Rd Rd K Z,N,V OR Rd, Rr 逻 辑 或 Rd Rd v Rr Z,N,V ORI Rd, K 与 立 即 数 的 逻 辑 或 操 作 Rd Rd v K Z,N,V EOR Rd, Rr 异 或 Rd Rd Rr Z,N,V COM Rd 的 补 码 Rd xff Rd Z,C,N,V NEG Rd 2 的 补 码 Rd x Rd Z,C,N,V,H SBR Rd,K 设 置 寄 存 器 的 位 Rd Rd v K Z,N,V CBR Rd,K 寄 存 器 位 清 零 Rd Rd (xff - K) Z,N,V INC Rd 加 一 操 作 Rd Rd + Z,N,V DEC Rd 减 一 操 作 Rd Rd Z,N,V TST Rd 测 试 是 否 为 零 或 负 Rd Rd Rd Z,N,V CLR Rd 寄 存 器 清 零 Rd Rd Rd Z,N,V SER Rd 寄 存 器 置 位 Rd xff None MUL Rd, Rr 无 符 号 数 乘 法 R:R Rd x Rr Z,C 2 MULS Rd, Rr 有 符 号 数 乘 法 R:R Rd x Rr Z,C 2 MULSU Rd, Rr 有 符 号 数 与 无 符 号 数 乘 法 R:R Rd x Rr Z,C 2 FMUL Rd, Rr 无 符 号 小 数 乘 法 R:R (Rd x Rr) << Z,C 2 FMULS Rd, Rr 有 符 号 小 数 乘 法 R:R (Rd x Rr) << Z,C 2 FMULSU Rd, Rr 有 符 号 小 数 与 无 符 号 小 数 乘 法 R:R (Rd x Rr) << Z,C 2 跳 转 指 令 RJMP k 相 对 跳 转 PC PC + k + 无 2 IJMP 间 接 跳 转 到 (Z) PC Z 无 2 RCALL k 相 对 子 程 序 调 用 PC PC + k + 无 3 ICALL 间 接 调 用 (Z) PC Z 无 3 RET 子 程 序 返 回 PC STACK 无 4 RETI 中 断 返 回 PC STACK I 4 CPSE Rd,Rr 比 较, 相 等 则 跳 过 下 一 条 指 令 if (Rd = Rr) PC PC + 2 or 3 无 / 2 / 3 CP Rd,Rr 比 较 Rd Rr Z, N,V,C,H CPC Rd,Rr 带 进 位 比 较 Rd Rr C Z, N,V,C,H CPI Rd,K 与 立 即 数 比 较 Rd K Z, N,V,C,H SBRC Rr, b 寄 存 器 位 为 " 则 跳 过 下 一 条 指 令 if (Rr(b)=) PC PC + 2 or 3 无 / 2 / 3 SBRS Rr, b 寄 存 器 位 为 " 则 跳 过 下 一 条 指 令 if (Rr(b)=) PC PC + 2 or 3 无 / 2 / 3 SBIC P, b I/O 寄 存 器 位 为 " 则 跳 过 下 一 条 指 令 if (P(b)=) PC PC + 2 or 3 无 / 2 / 3 SBIS P, b I/O 寄 存 器 位 为 " 则 跳 过 下 一 条 指 令 if (P(b)=) PC PC + 2 or 3 无 / 2 / 3 BRBS s, k 状 态 寄 存 器 位 为 " 则 跳 过 下 一 条 指 令 if (SREG(s) = ) then PC PC+k + 无 / 2 BRBC s, k 状 态 寄 存 器 位 为 " 则 跳 过 下 一 条 指 令 if (SREG(s) = ) then PC PC+k + 无 / 2 BREQ k 相 等 则 跳 转 if (Z = ) then PC PC + k + 无 / 2 BRNE k 不 相 等 则 跳 转 if (Z = ) then PC PC + k + 无 / 2 BRCS k 进 位 位 为 " 则 跳 转 if (C = ) then PC PC + k + 无 / 2 BRCC k 进 位 位 为 " 则 跳 转 if (C = ) then PC PC + k + 无 / 2 BRSH k 大 于 或 等 于 则 跳 转 if (C = ) then PC PC + k + 无 / 2 BRLO k 小 于 则 跳 转 if (C = ) then PC PC + k + 无 / 2 BRMI k 负 则 跳 转 if (N = ) then PC PC + k + 无 / 2 BRPL k 正 则 跳 转 if (N = ) then PC PC + k + 无 / 2 BRGE k 有 符 号 数 大 于 或 等 于 则 跳 转 if (N V= ) then PC PC + k + 无 / 2 BRLT k 有 符 号 数 负 则 跳 转 if (N V= ) then PC PC + k + 无 / 2 BRHS k 半 进 位 位 为 " 则 跳 转 if (H = ) then PC PC + k + 无 / 2 BRHC k 半 进 位 位 为 " 则 跳 转 if (H = ) then PC PC + k + 无 / 2 BRTS k T 为 " 则 跳 转 if (T = ) then PC PC + k + 无 / 2 BRTC k T 为 " 则 跳 转 if (T = ) then PC PC + k + 无 / 2 BRVS k 溢 出 标 志 为 " 则 跳 转 if (V = ) then PC PC + k + 无 / 2 BRVC k 溢 出 标 志 为 " 则 跳 转 if (V = ) then PC PC + k + 无 / 2 273
指 令 集 概 述 指 令 操 作 数 说 明 操 作 标 志 # 时 钟 数 BRIE k 中 断 使 能 再 跳 转 if ( I = ) then PC PC + k + 无 / 2 BRID k 中 断 禁 用 再 跳 转 if ( I = ) then PC PC + k + 无 / 2 数 据 传 送 指 令 MOV Rd, Rr 寄 存 器 间 复 制 Rd Rr 无 MOVW Rd, Rr 复 制 寄 存 器 字 Rd+:Rd Rr+:Rr 无 LDI Rd, K 加 载 立 即 数 Rd K 无 LD Rd, X 加 载 间 接 寻 址 数 据 Rd (X) 无 2 LD Rd, X+ 加 载 间 接 寻 址 数 据, 然 后 地 址 加 一 Rd (X), X X + 无 2 LD Rd, - X 地 址 减 一 后 加 载 间 接 寻 址 数 据 X X -, Rd (X) 无 2 LD Rd, Y 加 载 间 接 寻 址 数 据 Rd (Y) 无 2 LD Rd, Y+ 加 载 间 接 寻 址 数 据, 然 后 地 址 加 一 Rd (Y), Y Y + 无 2 LD Rd, - Y 地 址 减 一 后 加 载 间 接 寻 址 数 据 Y Y -, Rd (Y) 无 2 LDD Rd,Y+q 加 载 带 偏 移 量 的 间 接 寻 址 数 据 Rd (Y + q) 无 2 LD Rd, Z 加 载 间 接 寻 址 数 据 Rd (Z) 无 2 LD Rd, Z+ 加 载 间 接 寻 址 数 据, 然 后 地 址 加 一 Rd (Z), Z Z+ 无 2 LD Rd, -Z 地 址 减 一 后 加 载 间 接 寻 址 数 据 Z Z -, Rd (Z) 无 2 LDD Rd, Z+q 加 载 带 偏 移 量 的 间 接 寻 址 数 据 Rd (Z + q) 无 2 LDS Rd, k 从 SRAM 加 载 数 据 Rd (k) 无 2 ST X, Rr 以 间 接 寻 址 方 式 存 储 数 据 (X) Rr 无 2 ST X+, Rr 以 间 接 寻 址 方 式 存 储 数 据, 然 后 地 址 加 一 (X) Rr, X X + 无 2 ST - X, Rr 地 址 减 一 后 以 间 接 寻 址 方 式 存 储 数 据 X X -, (X) Rr 无 2 ST Y, Rr 加 载 间 接 寻 址 数 据 (Y) Rr 无 2 ST Y+, Rr 加 载 间 接 寻 址 数 据, 然 后 地 址 加 一 (Y) Rr, Y Y + 无 2 ST - Y, Rr 地 址 减 一 后 加 载 间 接 寻 址 数 据 Y Y -, (Y) Rr 无 2 STD Y+q,Rr 加 载 带 偏 移 量 的 间 接 寻 址 数 据 (Y + q) Rr 无 2 ST Z, Rr 加 载 间 接 寻 址 数 据 (Z) Rr 无 2 ST Z+, Rr 加 载 间 接 寻 址 数 据, 然 后 地 址 加 一 (Z) Rr, Z Z + 无 2 ST -Z, Rr 地 址 减 一 后 加 载 间 接 寻 址 数 据 Z Z -, (Z) Rr 无 2 STD Z+q,Rr 加 载 带 偏 移 量 的 间 接 寻 址 数 据 (Z + q) Rr 无 2 STS k, Rr 从 SRAM 加 载 数 据 (k) Rr 无 2 LPM 加 载 程 序 空 间 的 数 据 R (Z) 无 3 LPM Rd, Z 加 载 程 序 空 间 的 数 据 Rd (Z) 无 3 LPM Rd, Z+ 加 载 程 序 空 间 的 数 据, 然 后 地 址 加 一 Rd (Z), Z Z+ 无 3 SPM 保 存 程 序 空 间 的 数 据 (Z) R:R 无 - IN Rd, P 从 I/O 端 口 读 数 据 Rd P 无 OUT P, Rr 输 出 端 口 P Rr 无 PUSH Rr 将 寄 存 器 推 入 堆 栈 STACK Rr 无 2 POP Rd 将 寄 存 器 从 堆 栈 中 弹 出 Rd STACK 无 2 位 和 位 测 试 指 令 SBI P,b I/O 寄 存 器 位 置 位 I/O(P,b) 无 2 CBI P,b I/O 寄 存 器 位 清 零 I/O(P,b) 无 2 LSL Rd 逻 辑 左 移 Rd(n+) Rd(n), Rd() Z,C,N,V LSR Rd 逻 辑 右 移 Rd(n) Rd(n+), Rd(7) Z,C,N,V ROL Rd 带 进 位 循 环 左 移 Rd() C,Rd(n+) Rd(n),C Rd(7) Z,C,N,V ROR Rd 带 进 位 循 环 右 移 Rd(7) C,Rd(n) Rd(n+),C Rd() Z,C,N,V ASR Rd 算 术 右 移 Rd(n) Rd(n+), n=..6 Z,C,N,V SWAP Rd 高 低 半 字 节 交 换 Rd(3..) Rd(7..4),Rd(7..4) Rd(3..) 无 BSET s 标 志 置 位 SREG(s) SREG(s) BCLR s 标 志 清 零 SREG(s) SREG(s) BST Rr, b 从 寄 存 器 将 位 赋 给 T T Rr(b) T BLD Rd, b 将 T 赋 给 寄 存 器 位 Rd(b) T 无 SEC 进 位 位 置 位 C C CLC 进 位 位 清 零 C C SEN 负 标 志 位 置 位 N N CLN 负 标 志 位 清 零 N N SEZ 零 标 志 位 置 位 Z Z CLZ 零 标 志 位 清 零 Z Z SEI 全 局 中 断 使 能 I I CLI 全 局 中 断 禁 用 I I SES 符 号 测 试 标 志 位 置 位 S S CLS 符 号 测 试 标 志 位 清 零 S S SEV 2 的 补 码 溢 出 标 志 置 位 V V CLV 2 的 补 码 溢 出 标 志 清 零 V V SET SREG 的 T 置 位 T T 274 ATmega8(L)
ATmega8(L) 指 令 集 概 述 指 令 操 作 数 说 明 操 作 标 志 # 时 钟 数 CLT SREG 的 T 清 零 T T SEH SREG 的 半 进 位 标 志 置 位 H H CLH SREG 的 半 进 位 标 志 清 零 H H MCU 控 制 指 令 NOP 空 操 作 无 SLEEP 休 眠 ( 见 对 睡 眠 功 能 的 特 殊 说 明 ) 无 WDR 复 位 看 门 狗 ( 见 对 WDR/timer 的 特 殊 说 明 ) 无 275
产 品 信 息 速 度 (MHz) 所 需 电 源 产 品 号 封 装 工 作 范 围 8 2.7-5.5 ATmega8L-8AC ATmega8L-8PC ATmega8L-8MC ATmega8L-8AI ATmega8L-8PI ATmega8L-8MI 6 4.5-5.5 ATmega8-6AC ATmega8-6PC ATmega8-6MC ATmega8-6AI ATmega8-6PI ATmega8-6MI 32A 28P3 32M-A 32A 28P3 32M-A 32A 28P3 32M-A 32A 28P3 32M-A Note: 产 品 也 可 以 wafer 的 形 式 提 供, 订 货 信 息 细 节 以 及 最 小 定 货 量 请 与 Atmel 当 地 机 构 联 系 商 业 级 ( C - 7 C) 工 业 级 (-4 C - 85 C) 商 业 级 ( C - 7 C) 工 业 级 (-4 C - 85 C) 封 装 类 型 32A 28P3 32M-A 32- 引 线, 薄 (. mm)tqfp 28- 引 线,.3 宽,PDIP 32- 焊 垫, 5 x 5 x. 大 小, 线 距.5 mm, MLF 276 ATmega8(L)
ATmega8(L) 封 装 信 息 32A PIN PIN IDENTIFIER B e E E D D C ~7 L A A2 A COMMON DIMENSIONS (Unit of Measure = mm) Notes:. This package conforms to JEDEC reference MS-26, Variation ABA. 2. Dimensions D and E do not include mold protrusion. Allowable protrusion is.25 mm per side. Dimensions D and E are maximum plastic body size dimensions including mold mismatch. 3. Lead coplanarity is. mm maximum. SYMBOL MIN NOM MAX NOTE A.2 A.5.5 A2.95..5 D 8.75 9. 9.25 D 6.9 7. 7. Note 2 E 8.75 9. 9.25 E 6.9 7. 7. Note 2 B.3.45 C.9.2 L.45.75 e.8 TYP /5/2 R 2325 Orchard Parkway San Jose, CA 953 TITLE 32A, 32-lead, 7 x 7 mm Body Size,. mm Body Thickness,.8 mm Lead Pitch, Thin Profile Plastic Quad Flat Package (TQFP) DRAWING NO. 32A REV. B 277
28P3 D PIN E A SEATING PLANE L e B B A B2 (4 PLACES) Note: C E eb º ~ 5º. Dimensions D and E do not include mold Flash or Protrusion. Mold Flash or Protrusion shall not exceed.25 mm (."). REF COMMON DIMENSIONS (Unit of Measure = mm) SYMBOL MIN NOM MAX NOTE A 4.5724 A.58 D 34.544 34.798 Note E 7.62 8.255 E 7.2 7.493 Note B.38.533 B.43.397 B2.762.43 L 3.75 3.429 C.23.356 eb.6 e 2.54 TYP 9/28/ R 2325 Orchard Parkway San Jose, CA 953 TITLE 28P3, 28-lead (.3"/7.62 mm Wide) Plastic Dual Inline Package (PDIP) DRAWING NO. 28P3 REV. B 278 ATmega8(L)
ATmega8(L) 32M-A D D 2 3 Pin ID E E SIDE VIEW TOP VIEW A2 A A3 A P P b D2 BOTTOM VIEW e 2 3 Pin ID Notes:. JEDEC Standard MO-22, Fig. 2 (Anvil Singulation), VHHD-2. E2 L.8 C COMMON DIMENSIONS (Unit of Measure = mm) SYMBOL MIN NOM MAX NOTE A.8.9. A.2.5 A2.65. A3.2 REF b.8.23.3 D 5. BSC D 4.75 BSC D2 2.95 3. 3.25 E 5. BSC E 4.75BSC E2 2.95 3. 3.25 e.5 BSC L.3.4.5 P.6 2 o /5/3 R 2325 Orchard Parkway San Jose, CA 953 TITLE 32M-A, 32-pad, 5 x 5 x. mm Body, Lead Pitch.5 mm Micro Lead Frame Package (MLF) DRAWING NO. 32M-A REV. C 279
勘 误 表 本 节 的 版 本 号 与 ATmega8 器 件 的 版 本 号 相 同 ATmega8 Rev. D, E, F 及 G 当 32 KHz 振 荡 器 作 为 T/C2 异 步 时 钟 时,CKOPT 不 能 使 能 XTALn/TOSCn 引 脚 上 的 内 部 电 容. 当 32 KHz 振 荡 器 作 为 T/C2 异 步 时 钟 时,CKOPT 不 能 使 能 XTALn/TOSCn 引 脚 上 的 内 部 电 容 当 内 部 RC 振 荡 器 作 为 主 时 钟 源 时, 可 能 会 通 过 在 XTAL/TOSC 与 XTAL2/TOSC2 上 连 接 32 KHz 振 荡 器 来 运 行 T/C2 异 步 模 式 但 当 内 部 RC 振 荡 器 作 为 主 时 钟 源 时, CKOPT 熔 丝 位 不 能 控 制 XTAL/TOSC 与 XTAL2/TOSC2 引 脚 上 的 内 部 电 容 而 当 长 时 间 如 此 的 话, 无 法 保 证 振 荡 器 正 常 工 作 解 决 方 法 : 在 XTAL/TOSC 与 XTAL2/TOSC2 上 使 用 2-36 pf 的 外 部 电 容 而 在 ATmega8 Rev. G 中 有 所 修 改, 当 内 部 RC 振 荡 器 作 为 主 时 钟 源 时,CKOPT 熔 丝 位 同 样 可 以 控 制 内 部 电 容 对 于 ATmega8 Rev. G, CKOPT = ( 已 编 程 ) 将 使 能 XTAL 与 XTAL2 上 的 内 部 电 容 若 用 户 希 望 Rev. G 与 早 期 的 版 本 兼 容, 则 必 须 保 证 CKOPT 未 编 程 (CKOPT = ) 28 ATmega8(L)
ATmega8(L) ATmega8 数 据 变 更 日 志 从 版 本 Rev. 2486M-2/3 到 版 本 Rev. 2486N-7/4 的 变 化 请 注 意 本 节 中 所 提 及 的 页 码 为 手 册 中 所 对 应 的 页 码 请 注 意 本 节 中 所 提 及 的 页 码 为 手 册 中 所 对 应 的 页 码. 在 P 2 引 脚 配 置 中 加 入 MLF 封 装 2. 更 新 P 39 内 部 电 压 基 准 源 的 特 性 3. 更 新 P 226 直 流 特 性 4. ADC4 与 ADC5 支 持 位 精 度 手 册 中 予 以 反 映 更 新 P 83 模 数 转 换 器 中 的 特 性 更 新 P 232 交 流 特 性 5. P 25 外 部 RC 振 荡 器 中 删 除 外 部 RC 振 荡 器 使 用 注 意 部 分 从 版 本 Rev. 2486L-/3 到 版 本 Rev. 2486M-2/3 的 变 化 从 版 本 Rev. 2486K-8/3 到 版 本 Rev. 2486L-/3 的 变 化 请 注 意 本 节 中 所 提 及 的 页 码 为 手 册 中 所 对 应 的 页 码. 更 新 P 27 标 定 的 片 内 RC 振 荡 器 请 注 意 本 节 中 所 提 及 的 页 码 为 手 册 中 所 对 应 的 页 码. 输 出 初 稿 与 TBD 2. 将 ICP 改 为 ICP 3. 删 除 CALL 与 JMP 指 令 4. 更 新 P 35Table 5 中 t RST, P 39Table 6, P 228Table 与 P 23Table 2 中 V BG 5. 去 掉 P 27 标 定 的 片 内 RC 振 荡 器 中 Table 9 后 的 XTAL 与 XTAL2 应 不 连 接 (NC) 内 容 在 P 29 定 时 器 / 计 时 器 振 荡 器 中 添 加 关 于 XTAL/XTAL2 与 CKOPT 熔 丝 位 的 内 容 6. 更 新 P 42 改 变 看 门 狗 定 时 器 配 置 的 时 间 序 列 中 看 门 狗 定 时 器 的 代 码 例 程 7. 删 除 P 55 特 殊 功 能 I/O 寄 存 器 - SFIOR 中 bit 4, ADHSM 8. P 2Figure 3 中 添 加 注 意 事 项 2 9. 更 新 P 222 串 行 编 程 算 法 中 条 目 4. P 224Table 97 中 添 加 t WD_FUSE, 更 新 P 225Table 98 中 读 标 定 字 节, Byte 3. 更 新 P 226 电 气 特 性 中 绝 对 极 限 值 与 直 流 特 性 从 版 本 Rev. 2486J-2/3 到 版 本 Rev. 2486K-8/3 的 变 化 请 注 意 本 节 中 所 提 及 的 页 码 为 手 册 中 所 对 应 的 页 码. 更 新 P 35Table 5 中 V BOT 值 28
2. 更 新 P 232 交 流 特 性 3. 更 新 P 233 ATmega8 典 型 特 性 4. 更 新 P 28 勘 误 表 从 版 本 Rev. 2486I-2/2 到 版 本 Rev. 2486J-2/3 的 变 化 请 注 意 本 节 中 所 提 及 的 页 码 为 手 册 中 所 对 应 的 页 码. 进 一 步 说 明 P 23 异 步 定 时 器 时 钟 - clk ASY 2. 删 除 多 功 能 振 荡 器 及 32 khz 晶 振 使 用 注 意 3. 修 正 P 83Figure 38 中 OCn 波 形 4. 定 时 器 细 节 的 修 正 5. TWI 细 节 的 修 正 6. 在 P 22 装 载 临 时 缓 冲 器 ( 页 加 载 ) 后 添 加 关 于 在 SPM 页 载 入 时 对 EEPROM 写 入 的 注 意 7. 删 除 ADHSM 8. 添 加 P 2 在 掉 电 休 眠 模 式 下 的 EEPROM 写 操 作 部 分 9. 将 对 XTAL 与 XTAL2 的 说 明 作 为 P 5 端 口 B(PB7..PB) XTAL/XTAL2/TOSC/TOSC2 部 分 给 出. 更 改 P 23 SPI 时 序 特 性 中 的 表, 删 除 P 225 SPI 串 行 编 程 特 性 中 的 表. 修 正 P 57 端 口 C 的 第 二 功 能 中 PC6 2. 修 正 P 55 端 口 B 的 第 二 功 能 中 PB6 与 PB7 3. 将 P 46 波 特 率 设 置 的 例 子 中 23.4 Mbps 改 为 23.4 kbps 4. P 5 相 位 修 正 PWM 模 式 中 加 入 关 于 定 时 器 2 的 PWM 对 称 的 信 息 5. P 56Figure 76 中 易 访 问 的 寄 存 器 加 上 粗 线 6. P 22 执 行 页 写 操 作 中 未 使 用 的 Z 指 针 位 由 将 被 忽 略 改 为 必 须 写 零 7. P 2Table 87 中 加 入 RSTDISBL 熔 丝 位 的 注 意 8. 更 新 P 277 封 装 信 息 中 的 图 从 版 本 Rev. 2486H-9/2 到 版 本 Rev. 2486I-2/2 的 变 化 从 版 本 Rev. 2486G-9/2 到 版 本 Rev. 2486H-9/2 的 变 化. 对 Rev D, E 与 F 加 入 勘 误 表. 将 Flash 的 寿 命 改 为, 次 写 / 擦 除 周 期 282 ATmega8(L)
ATmega8(L) 从 版 本 Rev. 2486F-7/2 到 版 本 Rev. 2486G-9/2 的 变 化 从 版 本 Rev. 2486E-6/2 到 版 本 Rev. 2486F-7/2 的 变 化 请 注 意 本 节 中 所 提 及 的 页 码 为 手 册 中 所 对 应 的 页 码 更 新 P 232Table 3 ADC 特 性 参 数. 请 注 意 本 节 中 所 提 及 的 页 码 为 手 册 中 所 对 应 的 页 码 改 变 P 52 数 字 输 入 使 能 和 睡 眠 模 式 2 P 56 MOSI/OC2 端 口 B, Bit 3 中 加 入 OCS2 3 下 列 表 已 更 新 : P 22Table 5 CPOL 与 CPHA 功 能, P 44Table 59 UCPOL 设 置, P 82Table 72 模 拟 比 较 器 复 用 输 入 (), P 87Table 73 ADC 转 换 时 间, P 93Table 75 输 入 通 道 选 择 及 P 28Table 84 Figure 3 中 所 用 变 量 的 说 明 及 Z 指 针 的 映 射 5 改 变 P 22 读 取 标 定 字 节 6 在 相 关 参 考 中 修 正 错 误 从 版 本 Rev. 2486D-3/2 到 版 本 Rev. 2486E-6/2 的 变 化 请 注 意 本 节 中 所 提 及 的 页 码 为 手 册 中 所 对 应 的 页 码 更 新 一 些 初 步 测 试 限 制 与 特 性 数 据 下 列 表 已 更 新 : P 35Table 5 复 位 特 性, P 39Table 6 内 部 电 压 基 准 源 的 特 性, P 226DC 特 性, 及 P 232Table 交 流 特 性 2 改 变 外 部 时 钟 频 率 P 29 外 部 时 钟 中 加 入 说 明 P 228Table 99 外 部 时 钟 驱 动 中 加 入 周 期 变 更 数 据 3 更 新 TWI 部 分 对 TWI 位 速 率 预 分 频 的 使 用 说 明 及 P 6Table 65 TWI 比 特 率 预 分 频 器 更 加 详 尽 从 版 本 Rev. 2486C-3/2 到 版 本 Rev. 2486D-3/2 的 变 化 从 版 本 Rev. 2486B-2/ 到 版 本 Rev. 2486C-3/2 的 变 化 请 注 意 本 节 中 所 提 及 的 页 码 为 手 册 中 所 对 应 的 页 码 更 新 典 型 的 启 动 时 间 下 列 表 已 更 新 : P 25Table 5 晶 体 振 荡 器 时 钟 选 项 对 应 的 启 动 时 间,P 25Table 6 低 频 晶 体 振 荡 器 的 启 动 时 间, P 26Table 8 外 部 RC 振 荡 器 的 启 动 时 间 及 P 29Table 2 外 部 时 钟 的 启 动 时 间 2 添 加 P 233 ATmega8 典 型 特 性 请 注 意 本 节 中 所 提 及 的 页 码 为 手 册 中 所 对 应 的 页 码 更 新 TWI 部 分 对 TWI 掉 电 操 作 与 当 TWBRR 值 为 低 时 将 TWI 作 为 主 机 的 使 用 说 明 加 入 手 册 P 57 比 特 率 发 生 器 单 元 中 加 入 注 意 P 57 地 址 匹 配 单 元 中 加 入 说 明 283
2 更 新 OSCCAL 标 定 字 节 的 说 明 手 册 中 未 说 明 选 择 2 4 8 MHz 振 荡 器 时 如 何 使 用 标 定 字 节, 在 下 面 加 入 : P 28 振 荡 器 标 定 寄 存 器 - OSCCAL 与 P 2 标 定 字 节 中 给 出 进 一 步 说 明 3 加 入 一 些 初 步 测 试 限 制 与 特 性 数 据 删 除 下 列 表 中 的 一 些 TBD: P 23Table 3,P 35Table 5,P 39Table 6, P 4Table 7, P 226 T A = -4 C ~ 85 C,V CC = 2.7V ~ 5.5V ( 除 非 另 外 说 明 ), P 228Table 99 及 P 23Table 2 4 更 新 编 程 图 更 新 P 22Figure 4 与 P 222Figure 2 以 说 明 当 编 程 模 式 时, AV CC 必 须 连 接 5 添 加 当 RESET 引 脚 禁 用 或 选 择 外 部 时 钟 时 如 何 进 入 并 行 编 程 模 式 P 23 进 入 编 程 模 式 中 加 入 注 意 284 ATmega8(L)