]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/NiosII_CycloneIII_DBC3C40_GCC/RTOSDemo/ParTest/ParTest.c
00b3ce2f525ab668476381645e56a4c8824458d3
[freertos] / FreeRTOS / Demo / NiosII_CycloneIII_DBC3C40_GCC / RTOSDemo / 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  * Simple parallel port IO routines.\r
30  *-----------------------------------------------------------*/\r
31 \r
32 \r
33 /* Scheduler includes. */\r
34 #include "FreeRTOS.h"\r
35 #include "task.h"\r
36 \r
37 /* Demo app includes. */\r
38 #include "system.h"\r
39 #include "altera_avalon_pio_regs.h"\r
40 #include "partest.h"\r
41 \r
42 /*---------------------------------------------------------------------------*/\r
43 \r
44 #define partstNUM_LEDS                  ( 8 )\r
45 \r
46 /*---------------------------------------------------------------------------*/\r
47 \r
48 static unsigned long ulLedStates;\r
49 \r
50 /*---------------------------------------------------------------------------*/\r
51 \r
52 void vParTestInitialise( void )\r
53 {\r
54         IOWR_ALTERA_AVALON_PIO_DIRECTION( LED_PIO_BASE, ALTERA_AVALON_PIO_DIRECTION_OUTPUT );\r
55         ulLedStates = 0;    \r
56 }\r
57 /*-----------------------------------------------------------*/\r
58 \r
59 void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )\r
60 {\r
61         if( uxLED < partstNUM_LEDS )\r
62         {\r
63                 taskENTER_CRITICAL();\r
64                 {\r
65                         if ( xValue > 0 )\r
66                         {\r
67                                 ulLedStates |= 1 << uxLED;\r
68                         }\r
69                         else\r
70                         {\r
71                                 ulLedStates &= ~( 1 << uxLED );\r
72                         }\r
73                         IOWR_ALTERA_AVALON_PIO_DATA( LED_PIO_BASE, ulLedStates );\r
74                 }\r
75                 taskEXIT_CRITICAL();\r
76         }\r
77 }\r
78 /*-----------------------------------------------------------*/\r
79 \r
80 void vParTestToggleLED( unsigned portBASE_TYPE uxLED )\r
81 {\r
82         if( uxLED < partstNUM_LEDS )\r
83         {\r
84                 taskENTER_CRITICAL();\r
85                 {\r
86                         vParTestSetLED( uxLED, !( ulLedStates & ( 1 << uxLED ) ) );\r
87                 }       \r
88                 taskEXIT_CRITICAL();\r
89         }\r
90 }\r
91 /*-----------------------------------------------------------*/\r