]> begriffs open source - freertos/blob - Demo/MB96340_Softune/FreeRTOS_96348hs_SK16FX100PMC/Src/watchdog/watchdog.c
Add Fujitsu FX definition to portable.h.
[freertos] / Demo / MB96340_Softune / FreeRTOS_96348hs_SK16FX100PMC / Src / watchdog / watchdog.c
1 /* THIS SAMPLE CODE IS PROVIDED AS IS AND IS SUBJECT TO ALTERATIONS. FUJITSU */\r
2 \r
3 /* MICROELECTRONICS ACCEPTS NO RESPONSIBILITY OR LIABILITY FOR ANY ERRORS OR */\r
4 \r
5 /* ELIGIBILITY FOR ANY PURPOSES.                                             */\r
6 \r
7 /*                 (C) Fujitsu Microelectronics Europe GmbH                  */\r
8 \r
9 /*------------------------------------------------------------------------\r
10   watchdog.c\r
11   - This file contains the function deefinition for hardware watchdog.\r
12 -------------------------------------------------------------------------*/\r
13 #include "mb96348hs.h"\r
14 #include "FreeRTOS.h"\r
15 #include "task.h"\r
16 #include "watchdog.h"\r
17 \r
18 /*---------------------------------------------------------------------------\r
19  * Setup Watchdog\r
20  *---------------------------------------------------------------------------*/\r
21 #if WATCHDOG != WTC_NONE\r
22 void InitWatchdog( void )\r
23 {\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
27 }\r
28 \r
29 #endif\r
30 \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
36 {\r
37         const portTickType      xFrequency = WTC_CLR_PER;\r
38         portTickType            xLastWakeTime;\r
39         ( void ) pvParameters;\r
40 \r
41         /* Get currrent tick count */\r
42         xLastWakeTime = xTaskGetTickCount();\r
43 \r
44         for( ;; )\r
45         {\r
46                 /* Get currrent tick count */\r
47                 xLastWakeTime = xTaskGetTickCount();\r
48 \r
49                 Kick_Watchdog();\r
50 \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
53         }\r
54 }\r
55 \r
56 #endif\r
57 \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
63 {\r
64         xTaskCreate( prvWatchdogTask, (signed portCHAR *) "KickWTC", portMINIMAL_STACK_SIZE, ( void * ) NULL, uxPriority, ( xTaskHandle * ) NULL );\r
65 }\r
66 \r
67 #endif\r