mirror of
git://soft.sys114.com/klipper
synced 2026-02-13 14:20:33 +09:00
39 lines
771 B
C
39 lines
771 B
C
// Initialization of AVR watchdog timer.
|
|
//
|
|
// Copyright (C) 2016 Kevin O'Connor <kevin@koconnor.net>
|
|
//
|
|
// This file may be distributed under the terms of the GNU GPLv3 license.
|
|
|
|
#include <avr/interrupt.h> // WDT_vect
|
|
#include <avr/wdt.h> // wdt_enable
|
|
#include "command.h" // shutdown
|
|
#include "sched.h" // DECL_TASK
|
|
|
|
static uint8_t watchdog_shutdown;
|
|
|
|
ISR(WDT_vect)
|
|
{
|
|
watchdog_shutdown = 1;
|
|
shutdown("Watchdog timer!");
|
|
}
|
|
|
|
static void
|
|
watchdog_reset(void)
|
|
{
|
|
wdt_reset();
|
|
if (watchdog_shutdown) {
|
|
WDTCSR |= 1<<WDIE;
|
|
watchdog_shutdown = 0;
|
|
}
|
|
}
|
|
DECL_TASK(watchdog_reset);
|
|
|
|
static void
|
|
watchdog_init(void)
|
|
{
|
|
// 0.5s timeout, interrupt and system reset
|
|
wdt_enable(WDTO_500MS);
|
|
WDTCSR |= 1<<WDIE;
|
|
}
|
|
DECL_INIT(watchdog_init);
|