1
为什么当我调用wdt_disable()尝试关闭看门狗定时器时,我的AVR会复位?
我遇到了一个问题,即使在计时器上还有足够的时间,在AVR ATtiny84A上执行禁用看门狗序列实际上也会复位芯片。当在许多物理部件上运行相同的代码时,这会不一致地发生。有些每次都会重置,有些有时会重置,有些则永远不会重置。 为了演示该问题,我编写了一个简单的程序,该程序可以... 使看门狗超时1秒 重置看门狗 使白色LED闪烁0.1秒 闪烁白色LED熄灭0.1秒 禁用看门狗 看门狗使能和禁用之间的总时间少于0.3秒,但是有时在执行禁用序列时会发生看门狗复位。 这是代码: #define F_CPU 1000000 // Name used by delay.h. We are running 1Mhz (default fuses) #include <avr/io.h> #include <util/delay.h> #include <avr/wdt.h> // White LED connected to pin 8 - PA5 #define WHITE_LED_PORT PORTA #define WHITE_LED_DDR DDRA #define WHITE_LED_BIT 5 // Red …