1 /* THIS SAMPLE CODE IS PROVIDED AS IS AND IS SUBJECT TO ALTERATIONS. FUJITSU */
\r
3 /* MICROELECTRONICS ACCEPTS NO RESPONSIBILITY OR LIABILITY FOR ANY ERRORS OR */
\r
5 /* ELIGIBILITY FOR ANY PURPOSES. */
\r
7 /* (C) Fujitsu Microelectronics Europe GmbH */
\r
9 /*------------------------------------------------------------------------
\r
11 - This file contains the function deefinition for hardware watchdog.
\r
12 -------------------------------------------------------------------------*/
\r
13 #include "mb96348hs.h"
\r
14 #include "FreeRTOS.h"
\r
16 #include "watchdog.h"
\r
18 /*---------------------------------------------------------------------------
\r
20 *---------------------------------------------------------------------------*/
\r
21 #if WATCHDOG != WTC_NONE
\r
22 void InitWatchdog( void )
\r
24 WDTC_WTI = WTC_PER_2_23; /* 2^23/CLKWT */
\r
25 WDTC_WTCS = WTC_CLKMC; /* CLKWT=CLKMC, Watchdog expiration delay = 2.097s @ 4MHZ CLKMC*/
\r
26 WDTCP = 0x00; /* Activate Watchdog, Clear Pattern 0x00 */
\r
31 /*---------------------------------------------------------------------------
\r
32 * The below task clears the watchdog and blocks itself for WTC_CLR_PER ticks.
\r
33 *---------------------------------------------------------------------------*/
\r
34 #if WATCHDOG == WTC_IN_TASK
\r
35 static void prvWatchdogTask( void *pvParameters )
\r
37 const portTickType xFrequency = WTC_CLR_PER;
\r
38 portTickType xLastWakeTime;
\r
39 ( void ) pvParameters;
\r
41 /* Get currrent tick count */
\r
42 xLastWakeTime = xTaskGetTickCount();
\r
46 /* Get currrent tick count */
\r
47 xLastWakeTime = xTaskGetTickCount();
\r
51 /* Block the task for WTC_CLR_PER ticks (1s) at watchdog overflow period of WTC_PER_2_23 CLKMC cycles */
\r
52 vTaskDelayUntil( &xLastWakeTime, xFrequency );
\r
58 /*---------------------------------------------------------------------------
\r
59 * The below function creates hardware watchdog task.
\r
60 *---------------------------------------------------------------------------*/
\r
61 #if WATCHDOG == WTC_IN_TASK
\r
62 void vStartWatchdogTask( unsigned portBASE_TYPE uxPriority )
\r
64 xTaskCreate( prvWatchdogTask, (signed portCHAR *) "KickWTC", portMINIMAL_STACK_SIZE, ( void * ) NULL, uxPriority, ( xTaskHandle * ) NULL );
\r