]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/PIC18_MPLAB/ParTest/ParTest.c
Update version number in readiness for V10.3.0 release. Sync SVN with reviewed releas...
[freertos] / FreeRTOS / Demo / PIC18_MPLAB / ParTest / ParTest.c
1 /*\r
2  * FreeRTOS Kernel V10.3.0\r
3  * Copyright (C) 2020 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 Changes from V2.0.0\r
30 \r
31         + Use scheduler suspends in place of critical sections.\r
32 */\r
33 \r
34 #include "FreeRTOS.h"\r
35 #include "task.h"\r
36 #include "partest.h"\r
37 \r
38 /*-----------------------------------------------------------\r
39  * Simple parallel port IO routines for the FED 40pin demo board.\r
40  * The four LED's are connected to D4 to D7.\r
41  *-----------------------------------------------------------*/\r
42 \r
43 #define partstBIT_AS_OUTPUT                     ( ( unsigned short ) 0 )\r
44 #define partstSET_OUTPUT                        ( ( unsigned short ) 1 )\r
45 #define partstCLEAR_OUTPUT                      ( ( unsigned short ) 0 )\r
46 \r
47 #define partstENABLE_GENERAL_IO         ( ( unsigned char ) 7 )\r
48 \r
49 /*-----------------------------------------------------------*/\r
50 \r
51 void vParTestInitialise( void )\r
52 {\r
53         /* Set the top four bits of port D to output. */\r
54         TRISDbits.TRISD7 = partstBIT_AS_OUTPUT;\r
55         TRISDbits.TRISD6 = partstBIT_AS_OUTPUT;\r
56         TRISDbits.TRISD5 = partstBIT_AS_OUTPUT;\r
57         TRISDbits.TRISD4 = partstBIT_AS_OUTPUT;\r
58 \r
59         /* Start with all bits off. */\r
60         PORTDbits.RD7 = partstCLEAR_OUTPUT;\r
61         PORTDbits.RD6 = partstCLEAR_OUTPUT;\r
62         PORTDbits.RD5 = partstCLEAR_OUTPUT;\r
63         PORTDbits.RD4 = partstCLEAR_OUTPUT;\r
64 \r
65         /* Enable the driver. */\r
66         ADCON1 = partstENABLE_GENERAL_IO;\r
67         TRISEbits.TRISE2 = partstBIT_AS_OUTPUT;\r
68         PORTEbits.RE2 = partstSET_OUTPUT;       \r
69 }\r
70 /*-----------------------------------------------------------*/\r
71 \r
72 void vParTestSetLED( unsigned portBASE_TYPE uxLED, portBASE_TYPE xValue )\r
73 {\r
74         /* We are only using the top nibble, so LED 0 corresponds to bit 4. */  \r
75         vTaskSuspendAll();\r
76         {\r
77                 switch( uxLED )\r
78                 {\r
79                         case 3  :       PORTDbits.RD7 = ( short ) xValue;\r
80                                                 break;\r
81                         case 2  :       PORTDbits.RD6 = ( short ) xValue;\r
82                                                 break;\r
83                         case 1  :       PORTDbits.RD5 = ( short ) xValue;\r
84                                                 break;\r
85                         case 0  :       PORTDbits.RD4 = ( short ) xValue;\r
86                                                 break;\r
87                         default :       /* There are only 4 LED's. */\r
88                                                 break;\r
89                 }\r
90         }\r
91         xTaskResumeAll();\r
92 }\r
93 /*-----------------------------------------------------------*/\r
94 \r
95 void vParTestToggleLED( unsigned portBASE_TYPE uxLED )\r
96 {\r
97         /* We are only using the top nibble, so LED 0 corresponds to bit 4. */  \r
98         vTaskSuspendAll();\r
99         {\r
100                 switch( uxLED )\r
101                 {\r
102                         case 3  :       PORTDbits.RD7 = !( PORTDbits.RD7 );\r
103                                                 break;\r
104                         case 2  :       PORTDbits.RD6 = !( PORTDbits.RD6 );\r
105                                                 break;\r
106                         case 1  :       PORTDbits.RD5 = !( PORTDbits.RD5 );\r
107                                                 break;\r
108                         case 0  :       PORTDbits.RD4 = !( PORTDbits.RD4 );\r
109                                                 break;\r
110                         default :       /* There are only 4 LED's. */\r
111                                                 break;\r
112                 }\r
113         }\r
114         xTaskResumeAll();\r
115 }\r
116 \r
117 \r
118 \r