1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-01-17 05:32:45 +01:00

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.
This commit is contained in:
Jon Thacker 2016-12-20 17:19:05 -06:00
parent 2daa4e399d
commit c62803d243
3 changed files with 2 additions and 71 deletions

View File

@ -1,35 +0,0 @@
/*
* 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_atmega2560
* @{
*
* @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.
*/
wdt_enable(WDTO_250MS);
while(1);
}

View File

@ -1,35 +0,0 @@
/*
* 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_atmega328p
* @{
*
* @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.
*/
wdt_enable(WDTO_250MS);
while(1);
}

View File

@ -8,7 +8,7 @@
*/
/**
* @ingroup cpu_atmega1281
* @ingroup cpu_atmega_common
* @{
*
* @file
@ -30,6 +30,7 @@ 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);
}