|
|
|
/* THIS SAMPLE CODE IS PROVIDED AS IS AND IS SUBJECT TO ALTERATIONS. FUJITSU */
|
|
|
|
/* MICROELECTRONICS ACCEPTS NO RESPONSIBILITY OR LIABILITY FOR ANY ERRORS OR */
|
|
|
|
/* ELIGIBILITY FOR ANY PURPOSES. */
|
|
|
|
/* (C) Fujitsu Microelectronics Europe GmbH */
|
|
|
|
/*------------------------------------------------------------------------
|
|
|
|
watchdog.c
|
|
|
|
- This file contains the function deefinition for hardware watchdog.
|
|
|
|
-------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
#include "mb91467d.h"
|
|
|
|
#include "FreeRTOS.h"
|
|
|
|
#include "task.h"
|
|
|
|
#include "watchdog.h"
|
|
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
* Setup Watchdog
|
|
|
|
*---------------------------------------------------------------------------*/
|
|
|
|
#if WATCHDOG != WTC_NONE
|
|
|
|
void InitWatchdog(void)
|
|
|
|
{
|
|
|
|
HWWDE_ED = WTC_PER_2_16; /* Set the watchdog period as 655.36 ms */
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
* The below task clears the watchdog and blocks itself for WTC_CLR_PER ticks.
|
|
|
|
*---------------------------------------------------------------------------*/
|
|
|
|
#if WATCHDOG == WTC_IN_TASK
|
|
|
|
static void prvWatchdogTask ( void *pvParameters )
|
|
|
|
{
|
|
|
|
const portTickType xFrequency = WTC_CLR_PER;
|
|
|
|
portTickType xLastWakeTime;
|
|
|
|
|
|
|
|
/* Get currrent tick count */
|
|
|
|
xLastWakeTime = xTaskGetTickCount();
|
|
|
|
|
|
|
|
for( ; ; )
|
|
|
|
{
|
|
|
|
Kick_Watchdog();
|
|
|
|
|
|
|
|
/* Block the task for WTC_CLR_PER ticks (300 ms) at watchdog overflow
|
|
|
|
period of WTC_PER_2_16 CLKRC cycles (655.36 ms) */
|
|
|
|
vTaskDelayUntil( &xLastWakeTime, xFrequency );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
* The below function creates hardware watchdog task.
|
|
|
|
*---------------------------------------------------------------------------*/
|
|
|
|
#if WATCHDOG == WTC_IN_TASK
|
|
|
|
void vStartWatchdogTask( unsigned portSHORT uxPriority )
|
|
|
|
{
|
|
|
|
xTaskCreate( prvWatchdogTask , ( signed portCHAR * ) "KickWTC", portMINIMAL_STACK_SIZE, ( void * ) NULL, uxPriority, ( xTaskHandle * ) NULL );
|
|
|
|
}
|
|
|
|
#endif
|