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:
parent
2daa4e399d
commit
c62803d243
@ -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);
|
||||
}
|
@ -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);
|
||||
}
|
@ -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);
|
||||
}
|
Loading…
Reference in New Issue
Block a user