]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/PIC18_WizC/ParTest/ParTest.c
fa9429d925a4765e91a2c16b51eab5b5605c30a8
[freertos] / FreeRTOS / Demo / PIC18_WizC / ParTest / ParTest.c
1 /*\r
2  * FreeRTOS Kernel V10.0.0\r
3  * Copyright (C) 2017 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. If you wish to use our Amazon\r
14  * FreeRTOS name, please do so in a fair use way that does not cause confusion.\r
15  *\r
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\r
18  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\r
19  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\r
20  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
21  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
22  *\r
23  * http://www.FreeRTOS.org\r
24  * http://aws.amazon.com/freertos\r
25  *\r
26  * 1 tab == 4 spaces!\r
27  */\r
28 \r
29 /* \r
30 Changes from V3.0.0\r
31 \r
32 Changes from V3.0.1\r
33 */\r
34 \r
35 /* Scheduler include files. */\r
36 #include "FreeRTOS.h"\r
37 #include <task.h>\r
38 \r
39 #include "partest.h"\r
40 \r
41 /*-----------------------------------------------------------\r
42  * Simple parallel port IO routines for the FED 40pin demo board.\r
43  * The four LED's are connected to D4 to D7.\r
44  *-----------------------------------------------------------*/\r
45 \r
46 #define partstBIT_AS_OUTPUT                     ( ( unsigned short ) 0 )\r
47 #define partstSET_OUTPUT                        ( ( unsigned short ) 1 )\r
48 #define partstCLEAR_OUTPUT                      ( ( unsigned short ) 0 )\r
49 \r
50 #define partstENABLE_GENERAL_IO         ( ( unsigned char ) 7 )\r
51 \r
52 /*-----------------------------------------------------------*/\r
53 \r
54 void vParTestInitialise( void )\r
55 {\r
56         /* Set the top four bits of port D to output. */\r
57         bTRD7           = partstBIT_AS_OUTPUT;\r
58         bTRD6           = partstBIT_AS_OUTPUT;\r
59         bTRD5           = partstBIT_AS_OUTPUT;\r
60         bTRD4           = partstBIT_AS_OUTPUT;\r
61 \r
62         /* Start with all bits off. */\r
63         bRD7            = partstCLEAR_OUTPUT;\r
64         bRD6            = partstCLEAR_OUTPUT;\r
65         bRD5            = partstCLEAR_OUTPUT;\r
66         bRD4            = partstCLEAR_OUTPUT;\r
67 \r
68         /* Enable the driver. */\r
69         ADCON1          = partstENABLE_GENERAL_IO;\r
70         bTRE2           = partstBIT_AS_OUTPUT;\r
71         bRE2            = partstSET_OUTPUT;     \r
72 }\r
73 /*-----------------------------------------------------------*/\r
74 \r
75 void vParTestSetLED( unsigned char ucLED, char cValue )\r
76 {\r
77         /* We are only using the top nibble, so LED 0 corresponds to bit 4. */  \r
78         vTaskSuspendAll();\r
79         {\r
80                 switch( ucLED )\r
81                 {\r
82                         case 3  :       bRD7 = ( short ) cValue;\r
83                                                 break;\r
84                         case 2  :       bRD6 = ( short ) cValue;\r
85                                                 break;\r
86                         case 1  :       bRD5 = ( short ) cValue;\r
87                                                 break;\r
88                         case 0  :       bRD4 = ( short ) cValue;\r
89                                                 break;\r
90                         default :       /* There are only 4 LED's. */\r
91                                                 break;\r
92                 }\r
93         }\r
94         xTaskResumeAll();\r
95 }\r
96 /*-----------------------------------------------------------*/\r
97 \r
98 void vParTestToggleLED( unsigned char ucLED )\r
99 {\r
100         /* We are only using the top nibble, so LED 0 corresponds to bit 4. */  \r
101         vTaskSuspendAll();\r
102         {\r
103                 switch( ucLED )\r
104                 {\r
105                         case 3  :       bRD7 = !bRD7;\r
106                                                 break;\r
107                         case 2  :       bRD6 = !bRD6;\r
108                                                 break;\r
109                         case 1  :       bRD5 = !bRD5;\r
110                                                 break;\r
111                         case 0  :       bRD4 = !bRD4 );\r
112                                                 break;\r
113                         default :       /* There are only 4 LED's. */\r
114                                                 break;\r
115                 }\r
116         }\r
117         xTaskResumeAll();\r
118 }\r
119 \r
120 \r
121 \r