MCU 操控和状况寄存器-MCUCSR
MCU 操控和状况寄存器供给了有关引起 MCU 复位的复位源的信息。
Bit 7 6 5 4 3 2 1 0
JTD ISC2 – JTRF WDRF BORF EXTRF PORF MCUCSR
读 / 写 R/W R/W R R/W R/W R/W R/W R/W
初始值 0 0 0 拜见各个位的阐明
* Bit 4 – JTRF: JTAG 复位标志
经过 JTAG 指令 AVR_RESET 能够使 JTAG 复位寄存器置位,并引发 MCU 复位,并使
JTRF 置位。上电复位将使其清零,也能够经过写 ”0” 来铲除。
* Bit 3 – WDRF: 看门狗复位标志
看门狗复位产生时置位。上电复位将使其清零,也能够经过写 ”0” 来铲除。
* Bit 2 – BORF: 掉电检测复位标志
掉电检测复位产生时置位。上电复位将使其清零,也能够经过写 ”0” 来铲除。
* Bit 1 – EXTRF: 外部复位标志
外部复位产生时置位。上电复位将使其清零,也能够经过写 ”0” 来铲除。
* Bit 0 – PORF: 上电复位标志
上电复位产生时置位。只能经过写 ”0” 来铲除。
为了运用这些复位标志来辨认复位条件,用户应该尽早读取此寄存器的数据,然后将其复
位。如果在其他复位产生之前将此寄存器复位,则后续复位源能够经过查看复位标志来了
解。
看门狗定时器操控寄存器-
WDTCR
Bit 7 6 5 4 3 2 1 0
– – – WDTOE WDE WDP2 WDP1 WDP0
* Bits 7..5 – Res: 保存位
ATmega16 保存位,读操作返回值为零。
* Bit 4 – WDTOE: 看门狗修正使能
清零 WDE 时有必要置位 WDTOE ,不然不能制止看门狗。一旦置位,硬件将在紧接的4 个
时钟周期之后将其清零。请参阅有关 WDE 的阐明来制止看门狗。
* Bit 3 – WDE: 使能看门狗
WDE 为 “1“ 时,看门狗使能,不然看门狗将被制止。只要在WDTOE 为 “1“ 时WDE 才干清
零。以下为封闭看门狗的过程:
1. 在同一个指令内对 WDTOE 和 WDE 写 “1“ ,即便WDE 现已为 “1“
2. 在紧接的 4 个时钟周期之内对 WDE 写 “0”
* Bits 2..0 – WDP2, WDP1, WDP0: 看门狗定时器预分频器 2, 1 和 0
WDP2、 WDP1 和 WDP0 决议看门狗定时器的预分频器,如 Table 17 所示。
Table 17. 看门狗定时器预分频器选项
VCC = 3.0V 时典型 VCC = 5.0V 时典型
WDP2 WDP1 WDP0 看门狗振荡器周期 的溢出周期 的溢出周期
0 0 0 16K (16,384) 17.1 ms 16.3 ms
0 0 1 32K (32,768) 34.3 ms 32.5 ms
0 1 0 64K (65,536) 68.5 ms 65 ms
0 1 1 128K (131,072) 0.14 s 0.13 s
1 0 0 256K (262,144) 0.27 s 0.26 s
1 0 1 512K (524,288) 0.55 s 0.52 s
1 1 0 1,024K (1,048,576) 1.1 s 1.0 s
1 1 1 2,048K (2,097,152) 2.2 s 2.1 s
#include
#include
///#pragma interrupt_handler WDT_over:iv_RESET
unsigned char f_WDT=0;
void WDT_OFF(void)
{
/* WDT复位*/
_WDR();
/*修正看门狗使能时有必要先要一起 置位WDTOE 和 WDE,然后对写0禁用看门狗*/
WDTCR |= (1<
WDTCR = 0x00;
}
void WDT_ON(unsigned char t)
{//在5v的电源下,t为0-8时,看门狗定时器的溢出时刻别离16.3ms,32.5ms,65ms,0.13s,0.26s,0.52s,1s,2.1s。
//*修正看门狗使能时有必要先要一起 置位WDTOE 和 WDE
WDTCR |= (1<
void WDT_over(void)
{f_WDT++;
MCUCSR&=~(1<