Add defines for watchdog configuration.
This commit is contained in:
parent
0b2d3d1615
commit
a210e14d78
1 changed files with 31 additions and 6 deletions
|
@ -28,44 +28,69 @@
|
||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* @(#)$Id: watchdog.c,v 1.3 2010/12/18 20:51:11 dak664 Exp $
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Dummy watchdog routines for the Raven 1284p */
|
/* Watchdog routines for the AVR */
|
||||||
|
|
||||||
|
/* Default timeout of 2 seconds is available on most MCUs */
|
||||||
|
#ifndef WATCHDOG_CONF_TIMEOUT
|
||||||
|
#define WATCHDOG_CONF_TIMEOUT WDTO_2S
|
||||||
|
//#define WATCHDOG_CONF_TIMEOUT WDTO_4S
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* While balancing start and stop calls is a good idea, an imbalance will cause
|
||||||
|
* resets that can take a lot of time to track down.
|
||||||
|
* Some low power protocols may do this.
|
||||||
|
* The default is no balance; define WATCHDOG_CONF_BALANCE 1 to override.
|
||||||
|
*/
|
||||||
|
#ifndef WATCHDOG_CONF_BALANCE
|
||||||
|
#define WATCHDOG_CONF_BALANCE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "dev/watchdog.h"
|
#include "dev/watchdog.h"
|
||||||
#include <avr/wdt.h>
|
#include <avr/wdt.h>
|
||||||
#include <avr/interrupt.h>
|
#include <avr/interrupt.h>
|
||||||
|
|
||||||
|
#if WATCHDOG_CONF_BALANCE
|
||||||
static int stopped = 0;
|
static int stopped = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
watchdog_init(void)
|
watchdog_init(void)
|
||||||
{
|
{
|
||||||
MCUSR&=~(1<<WDRF);
|
MCUSR&=~(1<<WDRF);
|
||||||
|
#if WATCHDOG_CONF_BALANCE
|
||||||
stopped = 0;
|
stopped = 0;
|
||||||
|
#endif
|
||||||
watchdog_stop();
|
watchdog_stop();
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
watchdog_start(void)
|
watchdog_start(void)
|
||||||
{
|
{
|
||||||
|
#if WATCHDOG_CONF_BALANCE
|
||||||
stopped--;
|
stopped--;
|
||||||
// if(!stopped)
|
if(!stopped)
|
||||||
wdt_enable(WDTO_2S);
|
#endif
|
||||||
|
wdt_enable(WATCHDOG_CONF_TIMEOUT);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
watchdog_periodic(void)
|
watchdog_periodic(void)
|
||||||
{
|
{
|
||||||
// if(!stopped)
|
#if WATCHDOG_CONF_BALANCE
|
||||||
|
if(!stopped)
|
||||||
|
#endif
|
||||||
wdt_reset();
|
wdt_reset();
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
watchdog_stop(void)
|
watchdog_stop(void)
|
||||||
{
|
{
|
||||||
// stopped++;
|
#if WATCHDOG_CONF_BALANCE
|
||||||
|
stopped++;
|
||||||
|
#endif
|
||||||
wdt_disable();
|
wdt_disable();
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
|
Loading…
Reference in a new issue