aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--LUFA/DoxygenPages/ChangeLog.txt1
-rw-r--r--LUFA/Drivers/Board/AVR8/LEONARDO/LEDs.h30
2 files changed, 16 insertions, 15 deletions
diff --git a/LUFA/DoxygenPages/ChangeLog.txt b/LUFA/DoxygenPages/ChangeLog.txt
index 2fd980f46..b5f70add7 100644
--- a/LUFA/DoxygenPages/ChangeLog.txt
+++ b/LUFA/DoxygenPages/ChangeLog.txt
@@ -11,6 +11,7 @@
* - Core:
* - Fixed device class driver pipe configuration routines returning success with a partially constructed instance
* when a pipe configuration failed (thanks to Helge Suess)
+ * - Fixed incorrect LED driver definitions for the Arduino Leonardo board (thanks to Zoltán Szőke)
*
* \section Sec_ChangeLog140302 Version 140302
* <b>New:</b>
diff --git a/LUFA/Drivers/Board/AVR8/LEONARDO/LEDs.h b/LUFA/Drivers/Board/AVR8/LEONARDO/LEDs.h
index 28a480267..c3361906e 100644
--- a/LUFA/Drivers/Board/AVR8/LEONARDO/LEDs.h
+++ b/LUFA/Drivers/Board/AVR8/LEONARDO/LEDs.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)
{
- PINB = (LEDMask & LEDS_PORTB_LEDS);
- PIND = (LEDMask & LEDS_PORTD_LEDS);
- PINC = (LEDMask & LEDS_PORTC_LEDS);
+ PORTB ^= (LEDMask & LEDS_PORTB_LEDS);
+ PORTD ^= (LEDMask & LEDS_PORTD_LEDS);
+ PORTC ^= (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