]> git.sur5r.net Git - freertos/blob - Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/ParTest.c
Update CreateProjectDirectoryStructure.bat to add in the lwIP source files, and add...
[freertos] / Demo / MicroBlaze_Spartan-6_EthernetLite / SDKProjects / RTOSDemoSource / ParTest.c
1 /*\r
2     FreeRTOS V7.0.1 - 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 \r
54 /*-----------------------------------------------------------\r
55  * Simple digital IO routines.\r
56  *-----------------------------------------------------------*/\r
57 \r
58 /* Kernel includes. */\r
59 #include "FreeRTOS.h"\r
60 \r
61 /* Demo application includes. */\r
62 #include "partest.h"\r
63 \r
64 /* Library includes. */\r
65 #include "xgpio.h"\r
66 \r
67 /* The hardware design that accompanies this demo project has four LED \r
68 outputs. */\r
69 #define partstMAX_LED   4\r
70 \r
71 /*-----------------------------------------------------------*/\r
72 \r
73 /* A hardware specific constant required to use the Xilinx driver library. */\r
74 static const unsigned portBASE_TYPE uxGPIOOutputChannel = 1UL;\r
75 \r
76 /* The current state of the output port. */\r
77 static unsigned char ucGPIOState = 0U;\r
78 \r
79 /* Structure that hold the state of the ouptut peripheral used by this demo.\r
80 This is used by the Xilinx peripheral driver API functions. */\r
81 static XGpio xOutputGPIOInstance;\r
82 \r
83 /*\r
84  * Setup the IO for the LED outputs.\r
85  */\r
86 void vParTestInitialise( void )\r
87 {\r
88 portBASE_TYPE xStatus;\r
89 const unsigned char ucSetToOutput = 0U;\r
90 \r
91         /* Initialise the GPIO for the LEDs. */\r
92         xStatus = XGpio_Initialize( &xOutputGPIOInstance, XPAR_LEDS_4BITS_DEVICE_ID );\r
93         if( xStatus == XST_SUCCESS )\r
94         {\r
95                 /* All bits on this channel are going to be outputs (LEDs). */\r
96                 XGpio_SetDataDirection( &xOutputGPIOInstance, uxGPIOOutputChannel, ucSetToOutput );\r
97 \r
98                 /* Start with all LEDs off. */\r
99                 ucGPIOState = 0U;\r
100                 XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, ucGPIOState );\r
101         }\r
102         \r
103         configASSERT( xStatus == XST_SUCCESS );\r
104 }\r
105 /*-----------------------------------------------------------*/\r
106 \r
107 void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )\r
108 {\r
109 unsigned char ucLED = 1U;\r
110 \r
111         /* Only attempt to set the LED if it is in range. */\r
112         if( uxLED < partstMAX_LED )\r
113         {\r
114                 ucLED <<= ( unsigned char ) uxLED;\r
115 \r
116                 portENTER_CRITICAL();\r
117                 {\r
118                         if( xValue == pdFALSE )\r
119                         {\r
120                                 ucGPIOState &= ~ucLED;\r
121                         }\r
122                         else\r
123                         {\r
124                                 ucGPIOState |= ucLED;\r
125                         }\r
126                         XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, ucGPIOState );\r
127                 }\r
128                 portEXIT_CRITICAL();\r
129         }\r
130 }\r
131 /*-----------------------------------------------------------*/\r
132 \r
133 void vParTestToggleLED( unsigned portBASE_TYPE uxLED )\r
134 {\r
135 unsigned char ucLED = 1U;\r
136 \r
137         /* Only attempt to toggle the LED if it is in range. */\r
138         if( uxLED < partstMAX_LED )\r
139         {\r
140                 ucLED <<= ( unsigned char ) uxLED;\r
141 \r
142                 portENTER_CRITICAL();\r
143                 {\r
144                         if( ( ucGPIOState & ucLED ) != 0 )\r
145                         {\r
146                                 ucGPIOState &= ~ucLED;\r
147                         }\r
148                         else\r
149                         {\r
150                                 ucGPIOState |= ucLED;\r
151                         }\r
152 \r
153                         XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, ucGPIOState );\r
154                 }\r
155                 portEXIT_CRITICAL();\r
156         }\r
157 }\r
158 \r
159 \r
160 \r