1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-01-18 12:52:44 +01:00
RIOT/cpu/atmega_common/reboot_arch.c
Jon Thacker c62803d243 atmega_common: disable interrupts prior to rebooting
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.
2016-12-20 17:22:39 -06:00

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);
}