- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十二章 AVR看门狗及EEPROM
第十二章 AVR看门狗及EEPROM 2007、06、26 AVR 看门狗 引入看门狗的意义 防止程序跑飞 增强系统抗干扰能力 AVR 看门狗 AVR 看门狗 看门狗使用一个独立的定时器,时钟源为内置1Mhz独立振荡器 当看门狗定时器定时溢出时,将产生1CLK宽度的复位脉冲 定时间隔由看门狗预分频器调节 程序执行时,定期复位看门狗定时器,以保证看门狗不产生复位脉冲 程序跑飞时,由于在定时间隔内没有复位看门狗定时器的操作,当定时溢出时,系统复位。 AVR 看门狗 AVR 看门狗 与看门狗相关的寄存器 WDTCR WDTOE: 看门狗修改使能 清零WDE 时必须置位WDTOE,否则不能禁止看门狗。一旦置位,硬件将在紧接的4 个时钟周期之后将其清零。 AVR 看门狗 WDE: 使能看门狗 WDE为“1“ 时,看门狗使能,否则看门狗将被禁止。只有在WDTOE为”1“ 时WDE 才能清零。 以下为关闭看门狗的步骤: 在同一个指令内对WDTOE 和WDE 写1“,即使WDE 已经为1“ 在紧接的4 个时钟周期之内对WDE 写0” AVR 看门狗 AVR 看门狗 void WDT_off(void) { /* WDT 复位*/ _WDR(); /* 置位 WDTOE 和 WDE*/ WDTCR |= (1WDTOE) | (1WDE); /* 关闭WDT */ WDTCR = 0x00; } AVR 看门狗 在ICC中,macros.h头文件中预定义了复位看门狗定时器的宏 WDR() //Watchdog initialize // prescale: 2048K void watchdog_init(void) { WDR(); //this prevents a timout on enabling WDTCR = 0x0F; //WATCHDOG ENABLED - dont forget to issue WDRs } AVR 内置EEPROM ATmega16 内置512字节的EEPROM 与EEPROM相关的寄存器 EEPROM 地址寄存器- EEARH和EEARL EEPROM 数据寄存器 - EEDR EEPROM 控制寄存器- EECR AVR 内置EEPROM EEPROM 地址寄存器- EEARH和EEARL 指定了512字节的EEPROM空间。EEPROM地址是线性的,从0 到511。 EEAR 的初始值没有定义。在访问EEPROM 之前必须为其赋予正确的数据。 AVR 内置EEPROM EEPROM 数据寄存器 - EEDR 对于EEPROM 写操作, EEDR 是需要写到EEAR 单元的数据; 对于读操作, EEDR 是从地址EEAR 读取的数据。 AVR 内置EEPROM EEPROM 控制寄存器- EECR EERIE: 使能EEPROM 准备好中断 当EEWE 清零时EEPROM 准备好中断即可发生。 AVR 内置EEPROM EEPROM 控制寄存器- EECR EEMWE: EEPROM 主机写使能 EEMWE决定了EEWE置位是否可以启动EEPROM写操作。 当EEMWE为“1”时,在4个时钟周期内置位EEWE 将把数据写入EEPROM 的指定地址; 若EEMWE 为“0“,则操作EEWE 不起作用。 EEMWE 置位后4 个周期,硬件对其清零。 AVR 内置EEPROM EEPROM 控制寄存器- EECR EEWE: EEPROM 写使能 当EEPROM 数据和地址设置好之后,需置位EEWE以便将数据写入EEPROM。 写时序如下( 第3 步和第4 步的次序并不重要): 1. 等待EEWE 位变为零 2. 等待SPMCSR 中的SPMEN 位变为零 3. 将新的EEPROM 地址写入EEAR( 可选) 4. 将新的EEPROM 数据写入EEDR( 可选) 5. 对EECR 寄存器的EEMWE 写1,同时清零EEWE 6. 在置位EEMWE 的4 个周期内,置位EEWE AVR 内置EEPROM 注意: 如果在步骤5 和6 之间发生了中断,写操作将失败。因为此时EEPROM 写使能操作将超时。 如果一个操作EEPROM的中断打断了另一个EEPROM操作,EEAR 或EEDR寄存器可能被修改,引起EEPROM 操作失败。 建议此时关闭全局中断标志I。 经过写访问时间之后,EEWE 硬件清零。 用户可以凭借这一位判断写时序是否已经完成。 EEWE 置位后, CPU 要停止两个时钟周期才会运行下一条指令。 AVR 内置EEPROM EEPROM 控制寄存器- EECR EERE: EEPROM 读使能 当EEPROM地址设置好之后,需置位E
文档评论(0)