]> git.sur5r.net Git - freertos/blob - Demo/Cygnal/ParTest/ParTest.c
Add a few lines to the RX ports that allow the vector to be installed when the FreeRT...
[freertos] / Demo / Cygnal / ParTest / ParTest.c
1 /*\r
2     FreeRTOS V7.1.0 - Copyright (C) 2011 Real Time Engineers Ltd.\r
3         \r
4 \r
5     ***************************************************************************\r
6      *                                                                       *\r
7      *    FreeRTOS tutorial books are available in pdf and paperback.        *\r
8      *    Complete, revised, and edited pdf reference manuals are also       *\r
9      *    available.                                                         *\r
10      *                                                                       *\r
11      *    Purchasing FreeRTOS documentation will not only help you, by       *\r
12      *    ensuring you get running as quickly as possible and with an        *\r
13      *    in-depth knowledge of how to use FreeRTOS, it will also help       *\r
14      *    the FreeRTOS project to continue with its mission of providing     *\r
15      *    professional grade, cross platform, de facto standard solutions    *\r
16      *    for microcontrollers - completely free of charge!                  *\r
17      *                                                                       *\r
18      *    >>> See http://www.FreeRTOS.org/Documentation for details. <<<     *\r
19      *                                                                       *\r
20      *    Thank you for using FreeRTOS, and thank you for your support!      *\r
21      *                                                                       *\r
22     ***************************************************************************\r
23 \r
24 \r
25     This file is part of the FreeRTOS distribution.\r
26 \r
27     FreeRTOS is free software; you can redistribute it and/or modify it under\r
28     the terms of the GNU General Public License (version 2) as published by the\r
29     Free Software Foundation AND MODIFIED BY the FreeRTOS exception.\r
30     >>>NOTE<<< The modification to the GPL is included to allow you to\r
31     distribute a combined work that includes FreeRTOS without being obliged to\r
32     provide the source code for proprietary components outside of the FreeRTOS\r
33     kernel.  FreeRTOS is distributed in the hope that it will be useful, but\r
34     WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
35     or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\r
36     more details. You should have received a copy of the GNU General Public\r
37     License and the FreeRTOS license exception along with FreeRTOS; if not it\r
38     can be viewed here: http://www.freertos.org/a00114.html and also obtained\r
39     by writing to Richard Barry, contact details for whom are available on the\r
40     FreeRTOS WEB site.\r
41 \r
42     1 tab == 4 spaces!\r
43 \r
44     http://www.FreeRTOS.org - Documentation, latest information, license and\r
45     contact details.\r
46 \r
47     http://www.SafeRTOS.com - A version that is certified for use in safety\r
48     critical systems.\r
49 \r
50     http://www.OpenRTOS.com - Commercial support, development, porting,\r
51     licensing and training services.\r
52 */\r
53 #include <c8051f120.h>\r
54 \r
55 #include "FreeRTOS.h"\r
56 #include "task.h"\r
57 #include "partest.h"\r
58 \r
59 #define partstPUSH_PULL                 ( ( unsigned char ) 0xff )\r
60 #define partstALL_OUTPUTS_OFF   ( ( unsigned char ) 0xff )\r
61 \r
62 /* LED to output is dependent on how the LED's are wired. */\r
63 #define partstOUTPUT_0                  ( ( unsigned char ) 0x02 )\r
64 #define partstOUTPUT_1                  ( ( unsigned char ) 0x08 )\r
65 #define partstOUTPUT_2                  ( ( unsigned char ) 0x20 )\r
66 #define partstOUTPUT_3                  ( ( unsigned char ) 0x01 )\r
67 #define partstOUTPUT_4                  ( ( unsigned char ) 0x04 )\r
68 #define partstOUTPUT_5                  ( ( unsigned char ) 0x10 )\r
69 #define partstOUTPUT_6                  ( ( unsigned char ) 0x40 )\r
70 #define partstOUTPUT_7                  ( ( unsigned char ) 0x80 )\r
71 \r
72 /*-----------------------------------------------------------\r
73  * Simple parallel port IO routines.\r
74  *-----------------------------------------------------------*/\r
75 \r
76 void vParTestInitialise( void )\r
77 {\r
78 unsigned char ucOriginalSFRPage;\r
79 \r
80         /* Remember the SFR page before it is changed so it can get set back\r
81         before the function exits. */\r
82         ucOriginalSFRPage = SFRPAGE;\r
83 \r
84         /* Setup the SFR page to access the config SFR's. */\r
85         SFRPAGE = CONFIG_PAGE;\r
86 \r
87         /* Set the on board LED to push pull. */\r
88         P3MDOUT |= partstPUSH_PULL;\r
89 \r
90         /* Return the SFR page. */\r
91         SFRPAGE = ucOriginalSFRPage;\r
92 \r
93         P3 = partstALL_OUTPUTS_OFF;\r
94 }\r
95 /*-----------------------------------------------------------*/\r
96 \r
97 void vParTestSetLED( unsigned portBASE_TYPE uxLED, portBASE_TYPE xValue )\r
98 {\r
99 portBASE_TYPE xError = pdFALSE;\r
100 \r
101         vTaskSuspendAll();\r
102         {\r
103                 if( xValue == pdFALSE )\r
104                 {\r
105                         switch( uxLED )\r
106                         {\r
107                                 case 0  :       P3 |= partstOUTPUT_0;\r
108                                                         break;\r
109                                 case 1  :       P3 |= partstOUTPUT_1;\r
110                                                         break;\r
111                                 case 2  :       P3 |= partstOUTPUT_2;\r
112                                                         break;\r
113                                 case 3  :       P3 |= partstOUTPUT_3;\r
114                                                         break;\r
115                                 case 4  :       P3 |= partstOUTPUT_4;\r
116                                                         break;\r
117                                 case 5  :       P3 |= partstOUTPUT_5;\r
118                                                         break;\r
119                                 case 6  :       P3 |= partstOUTPUT_6;\r
120                                                         break;\r
121                                 case 7  :       P3 |= partstOUTPUT_7;\r
122                                                         break;\r
123                                 default :       /* There are no other LED's wired in. */\r
124                                                         xError = pdTRUE;\r
125                                                         break;\r
126                         }\r
127                 }\r
128                 else\r
129                 {\r
130                         switch( uxLED )\r
131                         {\r
132                                 case 0  :       P3 &= ~partstOUTPUT_0;\r
133                                                         break;\r
134                                 case 1  :       P3 &= ~partstOUTPUT_1;\r
135                                                         break;\r
136                                 case 2  :       P3 &= ~partstOUTPUT_2;\r
137                                                         break;\r
138                                 case 3  :       P3 &= ~partstOUTPUT_3;\r
139                                                         break;\r
140                                 case 4  :       P3 &= ~partstOUTPUT_4;\r
141                                                         break;\r
142                                 case 5  :       P3 &= ~partstOUTPUT_5;\r
143                                                         break;\r
144                                 case 6  :       P3 &= ~partstOUTPUT_6;\r
145                                                         break;\r
146                                 case 7  :       P3 &= ~partstOUTPUT_7;\r
147                                                         break;\r
148                                 default :       /* There are no other LED's wired in. */\r
149                                                         break;\r
150                         }\r
151                 }\r
152         }\r
153         xTaskResumeAll();\r
154 }\r
155 /*-----------------------------------------------------------*/\r
156 \r
157 void vParTestToggleLED( unsigned portBASE_TYPE uxLED )\r
158 {\r
159 unsigned char ucBit;\r
160 portBASE_TYPE xError = pdFALSE;\r
161 \r
162         vTaskSuspendAll();\r
163         {\r
164                 switch( uxLED )\r
165                 {\r
166                         case 0  :       ucBit = partstOUTPUT_0;\r
167                                                 break;\r
168                         case 1  :       ucBit = partstOUTPUT_1;\r
169                                                 break;\r
170                         case 2  :       ucBit = partstOUTPUT_2;\r
171                                                 break;\r
172                         case 3  :       ucBit = partstOUTPUT_3;\r
173                                                 break;\r
174                         case 4  :       ucBit = partstOUTPUT_4;\r
175                                                 break;\r
176                         case 5  :       ucBit = partstOUTPUT_5;\r
177                                                 break;\r
178                         case 6  :       ucBit = partstOUTPUT_6;\r
179                                                 break;\r
180                         case 7  :       ucBit = partstOUTPUT_7;\r
181                                                 break;\r
182                         default :       /* There are no other LED's wired in. */\r
183                                                 xError = pdTRUE;\r
184                                                 break;\r
185                 }\r
186 \r
187                 if( xError != pdTRUE )\r
188                 {\r
189                         if( P3 & ucBit )\r
190                         {\r
191                                 P3 &= ~ucBit;\r
192                         }\r
193                         else\r
194                         {\r
195                                 P3 |= ucBit;\r
196                         }\r
197                 }\r
198         }\r
199         xTaskResumeAll();\r
200 }\r
201 \r
202 \r