]> git.sur5r.net Git - freertos/blob - Demo/MB96340_Softune/FreeRTOS_96348hs_SK16FX100PMC/Src/watchdog/watchdog.c
Start to re-arrange files to include FreeRTOS+ in main download.
[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 /* MICROELECTRONICS ACCEPTS NO RESPONSIBILITY OR LIABILITY FOR ANY ERRORS OR */\r
3 /* ELIGIBILITY FOR ANY PURPOSES.                                             */\r
4 /*                 (C) Fujitsu Microelectronics Europe GmbH                  */\r
5 \r
6 /*------------------------------------------------------------------------\r
7   watchdog.c\r
8   - This file contains the function deefinition for hardware watchdog.\r
9 -------------------------------------------------------------------------*/\r
10 #include "mb96348hs.h"\r
11 #include "FreeRTOS.h"\r
12 #include "task.h"\r
13 #include "watchdog.h"\r
14 \r
15 /*---------------------------------------------------------------------------\r
16  * Setup Watchdog\r
17  *---------------------------------------------------------------------------*/\r
18 #if WATCHDOG != WTC_NONE\r
19 void InitWatchdog( void )\r
20 {\r
21         WDTC_WTI = WTC_PER_2_23;        /* 2^23/CLKWT */\r
22         WDTC_WTCS = WTC_CLKMC;          /* CLKWT=CLKMC, Watchdog expiration delay = 2.097s @ 4MHZ CLKMC*/\r
23         WDTCP = 0x00;                           /* Activate Watchdog, Clear Pattern 0x00 */\r
24 }\r
25 \r
26 #endif\r
27 \r
28 /*---------------------------------------------------------------------------\r
29  * The below task clears the watchdog and blocks itself for WTC_CLR_PER ticks.\r
30  *---------------------------------------------------------------------------*/\r
31 #if WATCHDOG == WTC_IN_TASK\r
32 static void prvWatchdogTask( void *pvParameters )\r
33 {\r
34         const portTickType      xFrequency = WTC_CLR_PER;\r
35         portTickType            xLastWakeTime;\r
36         ( void ) pvParameters;\r
37 \r
38         /* Get currrent tick count */\r
39         xLastWakeTime = xTaskGetTickCount();\r
40 \r
41         for( ;; )\r
42         {\r
43                 /* Get currrent tick count */\r
44                 xLastWakeTime = xTaskGetTickCount();\r
45 \r
46                 Kick_Watchdog();\r
47 \r
48                 /* Block the task for WTC_CLR_PER ticks (1s) at watchdog overflow period of WTC_PER_2_23 CLKMC cycles */\r
49                 vTaskDelayUntil( &xLastWakeTime, xFrequency );\r
50         }\r
51 }\r
52 \r
53 #endif\r
54 \r
55 /*---------------------------------------------------------------------------\r
56  * The below function creates hardware watchdog task.\r
57  *---------------------------------------------------------------------------*/\r
58 #if WATCHDOG == WTC_IN_TASK\r
59 void vStartWatchdogTask( unsigned portBASE_TYPE uxPriority )\r
60 {\r
61         xTaskCreate( prvWatchdogTask, (signed portCHAR *) "KickWTC", portMINIMAL_STACK_SIZE, ( void * ) NULL, uxPriority, ( xTaskHandle * ) NULL );\r
62 }\r
63 \r
64 #endif\r