diff --git a/BuildTests/BoardDriverTest/BoardDeviceMap.cfg b/BuildTests/BoardDriverTest/BoardDeviceMap.cfg index b58be0e54a..3fee2f1e3f 100644 --- a/BuildTests/BoardDriverTest/BoardDeviceMap.cfg +++ b/BuildTests/BoardDriverTest/BoardDeviceMap.cfg @@ -72,6 +72,7 @@ BOARD_XPLAIN_REV1 = AVR8 : at90usb1287 : BOARD_STANGE_ISP = AVR8 : at90usb162 : BOARD_U2S = AVR8 : atmega32u2 : BOARD_YUN = AVR8 : atmega32u4 : +BOARD_MICRO = AVR8 : atmega32u4 : # # ----------------- XMEGA Boards ----------------- BOARD_A3BU_XPLAINED = XMEGA : atxmega256a3bu : diff --git a/LUFA/Common/BoardTypes.h b/LUFA/Common/BoardTypes.h index 2f703f5ed3..06ff4ddb4a 100644 --- a/LUFA/Common/BoardTypes.h +++ b/LUFA/Common/BoardTypes.h @@ -234,9 +234,12 @@ /** Selects the U2S specific board drivers, including the Button and LEDs drivers. */ #define BOARD_U2S 56 - /** Selects the YUN specific board drivers, including the driver for the board LEDs. */ + /** Selects the Arduino YUN specific board drivers, including the driver for the board LEDs. */ #define BOARD_YUN 57 + /** Selects the Arduino Micro specific board drivers, including the driver for the board LEDs. */ + #define BOARD_MICRO 58 + #if !defined(__DOXYGEN__) #define BOARD_ BOARD_NONE diff --git a/LUFA/DoxygenPages/ChangeLog.txt b/LUFA/DoxygenPages/ChangeLog.txt index f335401d05..521e46b295 100644 --- a/LUFA/DoxygenPages/ChangeLog.txt +++ b/LUFA/DoxygenPages/ChangeLog.txt @@ -12,6 +12,7 @@ * - Updated the BUILD build system module to add a new COMPILER_PATH optional variable * - Added Serial_IsSendReady() and Serial_IsSendComplete() functions to the Serial hardware peripheral driver * - Added support for the Arduino Yun board (ATMEGA32U4 coprocessor) + * - Added support for the Arduino Micro board * - Library Applications: * - Added new Dual MIDI class driver device demo * diff --git a/LUFA/DoxygenPages/DeviceSupport.txt b/LUFA/DoxygenPages/DeviceSupport.txt index 4855dc7786..2a4b9c3354 100644 --- a/LUFA/DoxygenPages/DeviceSupport.txt +++ b/LUFA/DoxygenPages/DeviceSupport.txt @@ -96,8 +96,9 @@ * \section Sec_AVR8Support_ThirdParty Supported Third Party Boards * Currently supported third-party boards (see \ref Group_BoardTypes for makefile \c BOARD constant names): * - Adafruit U4 Breakout Board - * - Arduino Uno * - Arduino Leonardo + * - Arduino Micro + * - Arduino Uno * - Arduino Yun * - Bitwizard Multio and Big-Multio * - Busware BUI diff --git a/LUFA/Drivers/Board/AVR8/LEONARDO/LEDs.h b/LUFA/Drivers/Board/AVR8/LEONARDO/LEDs.h index c3361906e0..ea7d41c01c 100644 --- a/LUFA/Drivers/Board/AVR8/LEONARDO/LEDs.h +++ b/LUFA/Drivers/Board/AVR8/LEONARDO/LEDs.h @@ -46,7 +46,7 @@ * NameColorInfoActive LevelPort Pin * LEDS_LED1YellowRXLowPORTB.0 * LEDS_LED2YellowTXLowPORTD.5 - * LEDS_LED1YellowGeneral IndicatorHighPORTC.7 + * LEDS_LED3YellowGeneral IndicatorHighPORTC.7 * * * @{ @@ -98,9 +98,9 @@ static inline void LEDs_Init(void) { DDRB |= LEDS_PORTB_LEDS; - PORTB &= LEDS_PORTB_LEDS; + PORTB |= LEDS_PORTB_LEDS; DDRD |= LEDS_PORTD_LEDS; - PORTD &= LEDS_PORTD_LEDS; + PORTD |= LEDS_PORTD_LEDS; DDRC |= LEDS_PORTC_LEDS; PORTC &= ~LEDS_PORTC_LEDS; } @@ -117,44 +117,44 @@ static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask) { - PORTB |= (LEDMask & LEDS_PORTB_LEDS); - PORTD |= (LEDMask & LEDS_PORTD_LEDS); + PORTB &= ~(LEDMask & LEDS_PORTB_LEDS); + PORTD &= ~(LEDMask & LEDS_PORTD_LEDS); PORTC |= (LEDMask & LEDS_PORTC_LEDS); } static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask) { - PORTB &= ~(LEDMask & LEDS_PORTB_LEDS); - PORTD &= ~(LEDMask & LEDS_PORTD_LEDS); + PORTB |= (LEDMask & LEDS_PORTB_LEDS); + PORTD |= (LEDMask & LEDS_PORTD_LEDS); PORTC &= ~(LEDMask & LEDS_PORTC_LEDS); } static inline void LEDs_SetAllLEDs(const uint8_t LEDMask) { - PORTB = ((PORTB & ~LEDS_PORTB_LEDS) | (LEDMask & LEDS_PORTB_LEDS)); - PORTD = ((PORTD & ~LEDS_PORTD_LEDS) | (LEDMask & LEDS_PORTD_LEDS)); + PORTB = ((PORTB | LEDS_PORTB_LEDS) & ~(LEDMask & LEDS_PORTB_LEDS)); + PORTD = ((PORTD | LEDS_PORTD_LEDS) & ~(LEDMask & LEDS_PORTD_LEDS)); PORTC = ((PORTC & ~LEDS_PORTC_LEDS) | (LEDMask & LEDS_PORTC_LEDS)); } static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, const uint8_t ActiveMask) { - PORTB = ((PORTB & ~(LEDMask & LEDS_PORTB_LEDS)) | (ActiveMask & LEDS_PORTB_LEDS)); - PORTD = ((PORTD & ~(LEDMask & LEDS_PORTD_LEDS)) | (ActiveMask & LEDS_PORTD_LEDS)); - PORTC = ((PORTC & ~(LEDMask & LEDS_PORTC_LEDS)) | (ActiveMask & LEDS_PORTC_LEDS)); + PORTB = ((PORTB | (LEDMask & LEDS_PORTB_LEDS)) & ~(ActiveMask & LEDS_PORTB_LEDS)); + PORTD = ((PORTD | (LEDMask & LEDS_PORTD_LEDS)) & ~(ActiveMask & LEDS_PORTD_LEDS)); + PORTC = ((PORTC & ~(LEDMask & LEDS_PORTC_LEDS)) | (ActiveMask & LEDS_PORTC_LEDS)); } static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) { - PORTB ^= (LEDMask & LEDS_PORTB_LEDS); - PORTD ^= (LEDMask & LEDS_PORTD_LEDS); - PORTC ^= (LEDMask & LEDS_PORTC_LEDS); + PINB = (LEDMask & LEDS_PORTB_LEDS); + PIND = (LEDMask & LEDS_PORTD_LEDS); + PINC = (LEDMask & LEDS_PORTC_LEDS); } static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; static inline uint8_t LEDs_GetLEDs(void) { - return ((PORTB & LEDS_PORTB_LEDS) | (PORTD & LEDS_PORTD_LEDS) | (PORTC & LEDS_PORTC_LEDS)); + return ((~PORTB & LEDS_PORTB_LEDS) | (~PORTD & LEDS_PORTD_LEDS) | (PORTC & LEDS_PORTC_LEDS)); } #endif diff --git a/LUFA/Drivers/Board/AVR8/YUN/LEDs.h b/LUFA/Drivers/Board/AVR8/YUN/LEDs.h index f916d105c0..bcdd47f9b4 100644 --- a/LUFA/Drivers/Board/AVR8/YUN/LEDs.h +++ b/LUFA/Drivers/Board/AVR8/YUN/LEDs.h @@ -46,14 +46,14 @@ * NameColorInfoActive LevelPort Pin * LEDS_LED1YellowRXLowPORTB.0 * LEDS_LED2YellowTXLowPORTD.5 - * LEDS_LED1RedGeneral IndicatorHighPORTC.7 + * LEDS_LED3RedGeneral IndicatorHighPORTC.7 * * * @{ */ -#ifndef __LEDS_LEONARDO_H__ -#define __LEDS_LEONARDO_H__ +#ifndef __LEDS_YUN_H__ +#define __LEDS_YUN_H__ /* Includes: */ #include "../../../../Common/Common.h" @@ -98,9 +98,9 @@ static inline void LEDs_Init(void) { DDRB |= LEDS_PORTB_LEDS; - PORTB &= LEDS_PORTB_LEDS; + PORTB |= LEDS_PORTB_LEDS; DDRD |= LEDS_PORTD_LEDS; - PORTD &= LEDS_PORTD_LEDS; + PORTD |= LEDS_PORTD_LEDS; DDRC |= LEDS_PORTC_LEDS; PORTC &= ~LEDS_PORTC_LEDS; } @@ -117,44 +117,44 @@ static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask) { - PORTB |= (LEDMask & LEDS_PORTB_LEDS); - PORTD |= (LEDMask & LEDS_PORTD_LEDS); + PORTB &= ~(LEDMask & LEDS_PORTB_LEDS); + PORTD &= ~(LEDMask & LEDS_PORTD_LEDS); PORTC |= (LEDMask & LEDS_PORTC_LEDS); } static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask) { - PORTB &= ~(LEDMask & LEDS_PORTB_LEDS); - PORTD &= ~(LEDMask & LEDS_PORTD_LEDS); + PORTB |= (LEDMask & LEDS_PORTB_LEDS); + PORTD |= (LEDMask & LEDS_PORTD_LEDS); PORTC &= ~(LEDMask & LEDS_PORTC_LEDS); } static inline void LEDs_SetAllLEDs(const uint8_t LEDMask) { - PORTB = ((PORTB & ~LEDS_PORTB_LEDS) | (LEDMask & LEDS_PORTB_LEDS)); - PORTD = ((PORTD & ~LEDS_PORTD_LEDS) | (LEDMask & LEDS_PORTD_LEDS)); + PORTB = ((PORTB | LEDS_PORTB_LEDS) & ~(LEDMask & LEDS_PORTB_LEDS)); + PORTD = ((PORTD | LEDS_PORTD_LEDS) & ~(LEDMask & LEDS_PORTD_LEDS)); PORTC = ((PORTC & ~LEDS_PORTC_LEDS) | (LEDMask & LEDS_PORTC_LEDS)); } static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, const uint8_t ActiveMask) { - PORTB = ((PORTB & ~(LEDMask & LEDS_PORTB_LEDS)) | (ActiveMask & LEDS_PORTB_LEDS)); - PORTD = ((PORTD & ~(LEDMask & LEDS_PORTD_LEDS)) | (ActiveMask & LEDS_PORTD_LEDS)); - PORTC = ((PORTC & ~(LEDMask & LEDS_PORTC_LEDS)) | (ActiveMask & LEDS_PORTC_LEDS)); + PORTB = ((PORTB | (LEDMask & LEDS_PORTB_LEDS)) & ~(ActiveMask & LEDS_PORTB_LEDS)); + PORTD = ((PORTD | (LEDMask & LEDS_PORTD_LEDS)) & ~(ActiveMask & LEDS_PORTD_LEDS)); + PORTC = ((PORTC & ~(LEDMask & LEDS_PORTC_LEDS)) | (ActiveMask & LEDS_PORTC_LEDS)); } static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) { - PORTB ^= (LEDMask & LEDS_PORTB_LEDS); - PORTD ^= (LEDMask & LEDS_PORTD_LEDS); - PORTC ^= (LEDMask & LEDS_PORTC_LEDS); + PINB = (LEDMask & LEDS_PORTB_LEDS); + PIND = (LEDMask & LEDS_PORTD_LEDS); + PINC = (LEDMask & LEDS_PORTC_LEDS); } static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; static inline uint8_t LEDs_GetLEDs(void) { - return ((PORTB & LEDS_PORTB_LEDS) | (PORTD & LEDS_PORTD_LEDS) | (PORTC & LEDS_PORTC_LEDS)); + return ((~PORTB & LEDS_PORTB_LEDS) | (~PORTD & LEDS_PORTD_LEDS) | (PORTC & LEDS_PORTC_LEDS)); } #endif diff --git a/LUFA/Drivers/Board/Board.h b/LUFA/Drivers/Board/Board.h index e7e57dc94d..27f495361a 100644 --- a/LUFA/Drivers/Board/Board.h +++ b/LUFA/Drivers/Board/Board.h @@ -155,6 +155,8 @@ #include "AVR8/U2S/Board.h" #elif (BOARD == BOARD_YUN) #include "AVR8/YUN/Board.h" + #elif (BOARD == BOARD_MICRO) + #include "AVR8/MICRO/Board.h" #else #include "Board/Board.h" #endif diff --git a/LUFA/Drivers/Board/LEDs.h b/LUFA/Drivers/Board/LEDs.h index cb80a5e096..392714a4e6 100644 --- a/LUFA/Drivers/Board/LEDs.h +++ b/LUFA/Drivers/Board/LEDs.h @@ -205,6 +205,8 @@ #include "AVR8/U2S/LEDs.h" #elif (BOARD == BOARD_YUN) #include "AVR8/YUN/LEDs.h" + #elif (BOARD == BOARD_MICRO) + #include "AVR8/MICRO/LEDs.h" #else #include "Board/LEDs.h" #endif