]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/MB96340_Softune/FreeRTOS_96348hs_SK16FX100PMC/Src/partest/partest.c
7118a7527359a93441c4e9087253690f31cccc6f
[freertos] / FreeRTOS / Demo / MB96340_Softune / FreeRTOS_96348hs_SK16FX100PMC / Src / partest / partest.c
1 /*\r
2  * FreeRTOS Kernel V10.2.1\r
3  * Copyright (C) 2019 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\r
4  *\r
5  * Permission is hereby granted, free of charge, to any person obtaining a copy of\r
6  * this software and associated documentation files (the "Software"), to deal in\r
7  * the Software without restriction, including without limitation the rights to\r
8  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\r
9  * the Software, and to permit persons to whom the Software is furnished to do so,\r
10  * subject to the following conditions:\r
11  *\r
12  * The above copyright notice and this permission notice shall be included in all\r
13  * copies or substantial portions of the Software.\r
14  *\r
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\r
17  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\r
18  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\r
19  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
20  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
21  *\r
22  * http://www.FreeRTOS.org\r
23  * http://aws.amazon.com/freertos\r
24  *\r
25  * 1 tab == 4 spaces!\r
26  */\r
27 \r
28 \r
29 /* Scheduler includes. */\r
30 #include "FreeRTOS.h"\r
31 #include "task.h"\r
32 \r
33 #define partstNUM_LEDs  8\r
34 \r
35 static unsigned char sState[ partstNUM_LEDs ] = { pdFALSE };\r
36 static unsigned char sState1[ partstNUM_LEDs ] = { pdFALSE };\r
37 \r
38 \r
39 /*-----------------------------------------------------------*/\r
40 void vParTestInitialise( void )\r
41 {\r
42 portBASE_TYPE x;\r
43 \r
44         /* Set port for LED outputs. */\r
45         DDR00 = 0xFF;\r
46         DDR09 = 0xFF;\r
47 \r
48         /* Start with LEDs off. */\r
49         PDR09 = 0xff;\r
50         PDR00 = 0xff;\r
51 \r
52         for( x = 0; x < partstNUM_LEDs; x++ )\r
53         {\r
54                 sState[ x ] = pdTRUE;\r
55                 sState1[ x ] = pdTRUE;\r
56         }\r
57 }\r
58 /*-----------------------------------------------------------*/\r
59 \r
60 void vParTestToggleLED( unsigned portBASE_TYPE uxLED )\r
61 {\r
62         if( uxLED < partstNUM_LEDs )\r
63         {\r
64                 taskENTER_CRITICAL();\r
65                 {               \r
66                         /* Toggle the state of the single genuine on board LED. */\r
67                         if( sState[ uxLED ] )\r
68                         {\r
69                                 PDR09 |= ( 1 << uxLED );\r
70                         }\r
71                         else\r
72                         {\r
73                                 PDR09 &= ~( 1 << uxLED );\r
74                         }\r
75                 \r
76                         sState[uxLED] = !( sState[ uxLED ] );\r
77                 }               \r
78                 taskEXIT_CRITICAL();\r
79         }\r
80         else\r
81         {\r
82                 uxLED -= partstNUM_LEDs;\r
83 \r
84                 if( uxLED < partstNUM_LEDs )\r
85                 {               \r
86                         taskENTER_CRITICAL();\r
87                         {               \r
88                                 /* Toggle the state of the single genuine on board LED. */\r
89                                 if( sState1[uxLED])     \r
90                                 {\r
91                                         PDR00 |= ( 1 << uxLED );\r
92                                 }\r
93                                 else\r
94                                 {\r
95                                         PDR00 &= ~( 1 << uxLED );\r
96                                 }\r
97                         \r
98                                 sState1[ uxLED ] = !( sState1[ uxLED ] );\r
99                         }\r
100                         taskEXIT_CRITICAL();\r
101                 }\r
102         }\r
103 }\r
104 /*-----------------------------------------------------------*/\r
105 \r
106 void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )\r
107 {\r
108         /* Set or clear the output [in this case show or hide the '*' character. */\r
109         if( uxLED < partstNUM_LEDs )\r
110         {\r
111                 taskENTER_CRITICAL();\r
112                 {\r
113                         if( xValue )\r
114                         {\r
115                                 PDR09 |= ( 1 << uxLED );\r
116                                 sState[ uxLED ] = 1;\r
117                         }\r
118                         else\r
119                         {\r
120                                 PDR09 &= ~( 1 << uxLED );\r
121                                 sState[ uxLED ] = 0;\r
122                         }\r
123                 }\r
124                 taskEXIT_CRITICAL();\r
125         }\r
126         else \r
127         {\r
128                 uxLED -= partstNUM_LEDs;\r
129 \r
130                 taskENTER_CRITICAL();\r
131                 {\r
132                         if( xValue )\r
133                         {\r
134                                 PDR00 |= ( 1 << uxLED );\r
135                                 sState1[ uxLED ] = 1;\r
136                         }\r
137                         else\r
138                         {\r
139                                 PDR00 &= ~( 1 << uxLED );\r
140                                 sState1[ uxLED ] = 0;\r
141                         }\r
142                 }\r
143                 taskEXIT_CRITICAL();\r
144         }\r
145 }\r
146 \r