mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-01-18 12:52:44 +01:00
c62803d243
If the watchdog is being reset in another thread, then the reboot will never take place. This commit disables interrupts prior to setting the watchdog timer to 250ms. This functionallity was common to all Atmega CPUs, so it was moved to atmega_common.
37 lines
850 B
C
37 lines
850 B
C
/*
|
|
* Copyright (C) 2016 Kaspar Schleiser <kaspar@schleiser.de>
|
|
* 2014 Freie Universität Berlin, Hinnerk van Bruinehsen
|
|
*
|
|
* This file is subject to the terms and conditions of the GNU Lesser
|
|
* General Public License v2.1. See the file LICENSE in the top level
|
|
* directory for more details.
|
|
*/
|
|
|
|
/**
|
|
* @ingroup cpu_atmega_common
|
|
* @{
|
|
*
|
|
* @file
|
|
* @brief Implementation of the kernels reboot interface
|
|
*
|
|
* @author Hinnerk van Bruinehsen <h.v.bruinehsen@fu-berlin.de>
|
|
* @author Kaspar Schleiser <kaspar@schleiser.de>
|
|
*
|
|
* @}
|
|
*/
|
|
|
|
#include <avr/wdt.h>
|
|
|
|
#include "cpu.h"
|
|
|
|
void reboot(void)
|
|
{
|
|
/*
|
|
* Since the AVR doesn't support a real software reset, we set the Watchdog
|
|
* Timer on a 250ms timeout. Consider this a kludge.
|
|
*/
|
|
irq_disable();
|
|
wdt_enable(WDTO_250MS);
|
|
while(1);
|
|
}
|