From 16037433a2caf0c93b811b774a9ea5fd1324514e Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sat, 1 Jun 2013 18:56:03 +0200 Subject: Added missing LEDs to the XMEGA A3BU Xplained and XMEGA C3 Xplained board LED drivers --- LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/LEDs.h | 60 ++++++++++++++++++++------- LUFA/Drivers/Board/XMEGA/C3_XPLAINED/LEDs.h | 56 +++++++++++++++++++------ 2 files changed, 88 insertions(+), 28 deletions(-) (limited to 'LUFA/Drivers/Board') diff --git a/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/LEDs.h b/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/LEDs.h index 0fad525a0..8487daa45 100644 --- a/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/LEDs.h +++ b/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/LEDs.h @@ -46,6 +46,8 @@ * NameColorInfoActive LevelPort Pin * LEDS_LED1YellowLED0 LEDLowPORTR.0 * LEDS_LED2YellowLED1 LEDLowPORTR.1 + * LEDS_LED3RedStatus Bicolour Red LEDLowPORTD.4 + * LEDS_LED4GreenStatus Bicolour Green LEDHighPORTD.5 * * * @{ @@ -67,6 +69,13 @@ #error Do not include this file directly. Include LUFA/Drivers/Board/LEDS.h instead. #endif + /* Private Interface - For use in library only: */ + #if !defined(__DOXYGEN__) + /* Macros: */ + #define LEDS_PORTR_LEDS (LEDS_LED1 | LEDS_LED2) + #define LEDS_PORTD_LEDS (LEDS_LED3 | LEDS_LED4) + #endif + /* Public Interface - May be used in end-application: */ /* Macros: */ /** LED mask for the first LED on the board. */ @@ -75,8 +84,14 @@ /** LED mask for the second LED on the board. */ #define LEDS_LED2 (1 << 1) + /** LED mask for the third LED on the board. */ + #define LEDS_LED3 (1 << 4) + + /** LED mask for the fourth LED on the board. */ + #define LEDS_LED4 (1 << 5) + /** LED mask for all the LEDs on the board. */ - #define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2) + #define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4) /** LED mask for none of the board LEDs. */ #define LEDS_NO_LEDS 0 @@ -85,51 +100,66 @@ #if !defined(__DOXYGEN__) static inline void LEDs_Init(void) { - PORTR.DIRSET = LEDS_ALL_LEDS; - PORTR.OUTCLR = LEDS_ALL_LEDS; - - PORTCFG.MPCMASK = LEDS_ALL_LEDS; - PORTR.PIN0CTRL = PORT_INVEN_bm; + PORTR.DIRSET = LEDS_PORTR_LEDS; + PORTR.OUTCLR = LEDS_PORTR_LEDS; + + PORTCFG.MPCMASK = LEDS_PORTR_LEDS; + PORTR.PIN0CTRL = PORT_INVEN_bm; + + PORTD.DIRSET = LEDS_PORTD_LEDS; + PORTD.OUTCLR = LEDS_PORTD_LEDS; + + PORTD.PIN4CTRL = PORT_INVEN_bm; } static inline void LEDs_Disable(void) { - PORTR.DIRCLR = LEDS_ALL_LEDS; - PORTR.OUTCLR = LEDS_ALL_LEDS; + PORTR.DIRCLR = LEDS_PORTR_LEDS; + PORTR.OUTCLR = LEDS_PORTR_LEDS; PORTCFG.MPCMASK = 0; - PORTR.PIN0CTRL = LEDS_ALL_LEDS; + PORTR.PIN0CTRL = LEDS_PORTR_LEDS; + + PORTD.DIRCLR = LEDS_PORTD_LEDS; + PORTD.OUTCLR = LEDS_PORTD_LEDS; + + PORTD.PIN4CTRL = 0; } static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask) { - PORTR_OUTSET = LEDMask; + PORTR_OUTSET = LEDMask & LEDS_PORTR_LEDS; + PORTD_OUTSET = LEDMask & LEDS_PORTD_LEDS; } static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask) { - PORTR_OUTCLR = LEDMask; + PORTR_OUTCLR = LEDMask & LEDS_PORTR_LEDS; + PORTD_OUTCLR = LEDMask & LEDS_PORTD_LEDS; } static inline void LEDs_SetAllLEDs(const uint8_t LEDMask) { - PORTR_OUT = (PORTR.OUT & ~LEDS_ALL_LEDS) | LEDMask; + PORTR_OUT = ((PORTR.OUT & ~LEDS_PORTR_LEDS) | (LEDMask & LEDS_PORTR_LEDS)); + PORTD_OUT = ((PORTD.OUT & ~LEDS_PORTD_LEDS) | (LEDMask & LEDS_PORTD_LEDS)); } static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, const uint8_t ActiveMask) { - PORTR_OUT = (PORTR.OUT & ~LEDMask) | ActiveMask; + PORTR_OUT = (PORTR.OUT & ~(LEDMask & LEDS_PORTR_LEDS)) | (Active & LEDS_PORTR_LEDS); + PORTD_OUT = (PORTD.OUT & ~(LEDMask & LEDS_PORTD_LEDS)) | (Active & LEDS_PORTD_LEDS); } static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) { - PORTR_OUTTGL = LEDMask; + PORTR_OUTTGL = (LEDMask & LEDS_PORTR_LEDS); + PORTD_OUTTGL = (LEDMask & LEDS_PORTD_LEDS); } static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; static inline uint8_t LEDs_GetLEDs(void) { - return (PORTR_OUT & LEDS_ALL_LEDS); + return ((PORTR_OUT & LEDS_PORTR_LEDS) | (PORTD_OUT & LEDS_PORTD_LEDS)); } #endif diff --git a/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/LEDs.h b/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/LEDs.h index 333d54119..d3488537d 100644 --- a/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/LEDs.h +++ b/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/LEDs.h @@ -46,6 +46,8 @@ * NameColorInfoActive LevelPort Pin * LEDS_LED1YellowLED0 LEDLowPORTR.0 * LEDS_LED2YellowLED1 LEDLowPORTR.1 + * LEDS_LED3RedStatus Bicolour Red LEDLowPORTD.4 + * LEDS_LED4GreenStatus Bicolour Green LEDHighPORTD.5 * * * @{ @@ -67,6 +69,13 @@ #error Do not include this file directly. Include LUFA/Drivers/Board/LEDS.h instead. #endif + /* Private Interface - For use in library only: */ + #if !defined(__DOXYGEN__) + /* Macros: */ + #define LEDS_PORTR_LEDS (LEDS_LED1 | LEDS_LED2) + #define LEDS_PORTD_LEDS (LEDS_LED3 | LEDS_LED4) + #endif + /* Public Interface - May be used in end-application: */ /* Macros: */ /** LED mask for the first LED on the board. */ @@ -75,8 +84,14 @@ /** LED mask for the second LED on the board. */ #define LEDS_LED2 (1 << 1) + /** LED mask for the third LED on the board. */ + #define LEDS_LED3 (1 << 4) + + /** LED mask for the fourth LED on the board. */ + #define LEDS_LED4 (1 << 5) + /** LED mask for all the LEDs on the board. */ - #define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2) + #define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4) /** LED mask for none of the board LEDs. */ #define LEDS_NO_LEDS 0 @@ -85,51 +100,66 @@ #if !defined(__DOXYGEN__) static inline void LEDs_Init(void) { - PORTR.DIRSET = LEDS_ALL_LEDS; - PORTR.OUTCLR = LEDS_ALL_LEDS; + PORTR.DIRSET = LEDS_PORTR_LEDS; + PORTR.OUTCLR = LEDS_PORTR_LEDS; - PORTCFG.MPCMASK = LEDS_ALL_LEDS; + PORTCFG.MPCMASK = LEDS_PORTR_LEDS; PORTR.PIN0CTRL = PORT_INVEN_bm; + + PORTD.DIRSET = LEDS_PORTD_LEDS; + PORTD.OUTCLR = LEDS_PORTD_LEDS; + + PORTD.PIN4CTRL = PORT_INVEN_bm; } static inline void LEDs_Disable(void) { - PORTR.DIRCLR = LEDS_ALL_LEDS; - PORTR.OUTCLR = LEDS_ALL_LEDS; + PORTR.DIRCLR = LEDS_PORTR_LEDS; + PORTR.OUTCLR = LEDS_PORTR_LEDS; PORTCFG.MPCMASK = 0; - PORTR.PIN0CTRL = LEDS_ALL_LEDS; + PORTR.PIN0CTRL = LEDS_PORTR_LEDS; + + PORTD.DIRCLR = LEDS_PORTD_LEDS; + PORTD.OUTCLR = LEDS_PORTD_LEDS; + + PORTD.PIN4CTRL = 0; } static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask) { - PORTR_OUTSET = LEDMask; + PORTR_OUTSET = LEDMask & LEDS_PORTR_LEDS; + PORTD_OUTSET = LEDMask & LEDS_PORTD_LEDS; } static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask) { - PORTR_OUTCLR = LEDMask; + PORTR_OUTCLR = LEDMask & LEDS_PORTR_LEDS; + PORTD_OUTCLR = LEDMask & LEDS_PORTD_LEDS; } static inline void LEDs_SetAllLEDs(const uint8_t LEDMask) { - PORTR_OUT = (PORTR.OUT & ~LEDS_ALL_LEDS) | LEDMask; + PORTR_OUT = ((PORTR.OUT & ~LEDS_PORTR_LEDS) | (LEDMask & LEDS_PORTR_LEDS)); + PORTD_OUT = ((PORTD.OUT & ~LEDS_PORTD_LEDS) | (LEDMask & LEDS_PORTD_LEDS)); } static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, const uint8_t ActiveMask) { - PORTR_OUT = (PORTR.OUT & ~LEDMask) | ActiveMask; + PORTR_OUT = (PORTR.OUT & ~(LEDMask & LEDS_PORTR_LEDS)) | (Active & LEDS_PORTR_LEDS); + PORTD_OUT = (PORTD.OUT & ~(LEDMask & LEDS_PORTD_LEDS)) | (Active & LEDS_PORTD_LEDS); } static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) { - PORTR_OUTTGL = LEDMask; + PORTR_OUTTGL = (LEDMask & LEDS_PORTR_LEDS); + PORTD_OUTTGL = (LEDMask & LEDS_PORTD_LEDS); } static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; static inline uint8_t LEDs_GetLEDs(void) { - return (PORTR_OUT & LEDS_ALL_LEDS); + return ((PORTR_OUT & LEDS_PORTR_LEDS) | (PORTD_OUT & LEDS_PORTD_LEDS)); } #endif -- cgit v1.2.3