*/\r
\r
/*-----------------------------------------------------------\r
- * Simple parallel port IO routines.\r
+ * Simple GPIO (parallel port) IO routines.\r
*-----------------------------------------------------------*/\r
\r
/* Kernel includes. */\r
/* Only the LEDs on one of the two seven segment displays are used. */\r
#define partstMAX_LEDS 4\r
\r
+/* The bits used to control the LEDs on the TWR-K60N512. */\r
const unsigned long ulLEDs[ partstMAX_LEDS ] = { ( 1UL << 10UL ), ( 1UL << 29UL ), ( 1UL << 28UL ), ( 1UL << 11UL ) };\r
\r
/*-----------------------------------------------------------*/\r
GPIOA_PDDR=GPIO_PDDR_PDD( ulLEDs[ 0 ] | ulLEDs[ 1 ] | ulLEDs[ 2 ] | ulLEDs[ 3 ] ); \r
\r
/* Start with LEDs off. */\r
- GPIOA_PTOR = ~0U;\r
+ GPIOA_PTOR = ~0U; \r
}\r
/*-----------------------------------------------------------*/\r
\r
-void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )\r
+void vParTestSetLED( unsigned long ulLED, signed portBASE_TYPE xValue )\r
{\r
- if( uxLED < partstMAX_LEDS )\r
+ if( ulLED < partstMAX_LEDS )\r
{\r
- /* A critical section is used as the LEDs are also accessed from an\r
- interrupt. */\r
- taskENTER_CRITICAL();\r
+ if( xValue == pdTRUE )\r
{\r
- if( xValue == pdTRUE )\r
- {\r
- GPIOA_PDOR &= ~GPIO_PDOR_PDO( ulLEDs[ uxLED ] );\r
- }\r
- else\r
- {\r
- GPIOA_PDOR |= GPIO_PDOR_PDO( ulLEDs[ uxLED ] );\r
- }\r
+ GPIOA_PCOR = ulLEDs[ ulLED ];\r
+ }\r
+ else\r
+ {\r
+ GPIOA_PSOR = ulLEDs[ ulLED ];\r
}\r
- taskEXIT_CRITICAL();\r
}\r
}\r
/*-----------------------------------------------------------*/\r
\r
-void vParTestToggleLED( unsigned portBASE_TYPE uxLED )\r
+void vParTestToggleLED( unsigned long ulLED )\r
{\r
- if( uxLED < partstMAX_LEDS )\r
+ if( ulLED < partstMAX_LEDS )\r
{\r
- /* A critical section is used as the LEDs are also accessed from an\r
- interrupt. */\r
- taskENTER_CRITICAL();\r
- {\r
- GPIOA_PTOR |= GPIO_PDOR_PDO( ulLEDs[ uxLED ] ); \r
- }\r
- taskEXIT_CRITICAL();\r
+ GPIOA_PTOR = ulLEDs[ ulLED ];\r
}\r
}\r
/*-----------------------------------------------------------*/\r
\r
-void vParTestSetLEDFromISR( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )\r
+long lParTestGetLEDState( unsigned long ulLED )\r
{\r
-unsigned portBASE_TYPE uxInterruptFlags;\r
+long lReturn = pdFALSE;\r
\r
- if( uxLED < partstMAX_LEDS )\r
+ if( ulLED < partstMAX_LEDS )\r
{\r
- uxInterruptFlags = portSET_INTERRUPT_MASK_FROM_ISR();\r
+ lReturn = GPIOA_PDOR & ulLEDs[ ulLED ];\r
+ \r
+ if( lReturn == 0 )\r
{\r
- if( xValue == pdTRUE )\r
- {\r
- GPIOA_PDOR &= ~GPIO_PDOR_PDO( ulLEDs[ uxLED ] );\r
- }\r
- else\r
- {\r
- GPIOA_PDOR |= GPIO_PDOR_PDO( ulLEDs[ uxLED ] );\r
- }\r
+ lReturn = pdTRUE;\r
+ }\r
+ else\r
+ {\r
+ lReturn = pdFALSE;\r
}\r
- portCLEAR_INTERRUPT_MASK_FROM_ISR( uxInterruptFlags );\r
}\r
-}\r
-/*-----------------------------------------------------------*/\r
\r
+ return lReturn;\r
+}\r