diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2013-06-01 18:56:03 +0200 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2013-06-01 18:56:03 +0200 |
commit | 16037433a2caf0c93b811b774a9ea5fd1324514e (patch) | |
tree | d020cabf6fd9b04165d7256fa0f279ade177b300 | |
parent | 94b43e2f9d544971a68e095c404ba6305db56155 (diff) | |
download | lufa-16037433a2caf0c93b811b774a9ea5fd1324514e.tar.gz lufa-16037433a2caf0c93b811b774a9ea5fd1324514e.tar.bz2 lufa-16037433a2caf0c93b811b774a9ea5fd1324514e.zip |
Added missing LEDs to the XMEGA A3BU Xplained and XMEGA C3 Xplained board LED drivers
-rw-r--r-- | LUFA/DoxygenPages/ChangeLog.txt | 1 | ||||
-rw-r--r-- | LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/LEDs.h | 60 | ||||
-rw-r--r-- | LUFA/Drivers/Board/XMEGA/C3_XPLAINED/LEDs.h | 56 |
3 files changed, 89 insertions, 28 deletions
diff --git a/LUFA/DoxygenPages/ChangeLog.txt b/LUFA/DoxygenPages/ChangeLog.txt index 8813bcdda..b5c8fe1fb 100644 --- a/LUFA/DoxygenPages/ChangeLog.txt +++ b/LUFA/DoxygenPages/ChangeLog.txt @@ -23,6 +23,7 @@ * - Updated the BUILD build system module to produce binary BIN files in addition to Intel HEX files * - Updated the Android Accessory Class to accept version 2 protocol devices (with version 1 functionality) * - All board drivers now implement dummy functions and constants when BOARD is set to NONE + * - Added missing LEDs to the XMEGA A3BU Xplained board LED driver (thanks to Michael Janssen) * * <b>Fixed:</b> * - Core: 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 @@ * <tr><th>Name</th><th>Color</th><th>Info</th><th>Active Level</th><th>Port Pin</th></tr> * <tr><td>LEDS_LED1</td><td>Yellow</td><td>LED0 LED</td><td>Low</td><td>PORTR.0</td></tr> * <tr><td>LEDS_LED2</td><td>Yellow</td><td>LED1 LED</td><td>Low</td><td>PORTR.1</td></tr> + * <tr><td>LEDS_LED3</td><td>Red</td><td>Status Bicolour Red LED</td><td>Low</td><td>PORTD.4</td></tr> + * <tr><td>LEDS_LED4</td><td>Green</td><td>Status Bicolour Green LED</td><td>High</td><td>PORTD.5</td></tr> * </table> * * @{ @@ -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 @@ * <tr><th>Name</th><th>Color</th><th>Info</th><th>Active Level</th><th>Port Pin</th></tr> * <tr><td>LEDS_LED1</td><td>Yellow</td><td>LED0 LED</td><td>Low</td><td>PORTR.0</td></tr> * <tr><td>LEDS_LED2</td><td>Yellow</td><td>LED1 LED</td><td>Low</td><td>PORTR.1</td></tr> + * <tr><td>LEDS_LED3</td><td>Red</td><td>Status Bicolour Red LED</td><td>Low</td><td>PORTD.4</td></tr> + * <tr><td>LEDS_LED4</td><td>Green</td><td>Status Bicolour Green LED</td><td>High</td><td>PORTD.5</td></tr> * </table> * * @{ @@ -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 |