1 // Copyright 2009 Olivier Gillet. 2 // 3 // Author: Olivier Gillet (ol.gillet@gmail.com) 4 // 5 // This program is free software: you can redistribute it and/or modify 6 // it under the terms of the GNU General Public License as published by 7 // the Free Software Foundation, either version 3 of the License, or 8 // (at your option) any later version. 9 // This program is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // You should have received a copy of the GNU General Public License 14 // along with this program. If not, see <http://www.gnu.org/licenses/>. 15 // 16 // ----------------------------------------------------------------------------- 17 // 18 // Real time clock. 19 20 #ifndef AVRLIB_WATCHDOG_TIMER_H_ 21 #define AVRLIB_WATCHDOG_TIMER_H_ 22 23 #include <avr/wdt.h> 24 25 #include "avrlib/base.h" 26 27 namespace avrlib { 28 29 // Note: this requires the bootloader to clear the Watchdog timer flags just 30 // after start-up. SystemReset(uint8_t interval)31inline void SystemReset(uint8_t interval) { 32 wdt_enable(interval); 33 } 34 ResetWatchdog()35inline void ResetWatchdog() { 36 uint8_t watchdog_status = MCUSR; 37 MCUSR = 0; 38 WDTCSR |= _BV(WDCE) | _BV(WDE); 39 WDTCSR = 0; 40 } 41 42 } // namespace avrlib 43 44 #endif // AVRLIB_WATCHDOG_TIMER_H_ 45