diff --git a/LUFA/Drivers/Board/ATAVRUSBRF01/LEDs.h b/LUFA/Drivers/Board/ATAVRUSBRF01/LEDs.h index b0fa0f66c6..1fe71de2f0 100644 --- a/LUFA/Drivers/Board/ATAVRUSBRF01/LEDs.h +++ b/LUFA/Drivers/Board/ATAVRUSBRF01/LEDs.h @@ -115,12 +115,12 @@ static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, const uint8_t ActiveMask) { - PORTD = ((PORTD & ~(LEDMask & LEDS_ALL_LEDS)) | (ActiveMask & LEDS_ALL_LEDS)); + PORTD = ((PORTD & ~LEDMask) | ActiveMask); } static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) { - PORTD = (PORTD ^ (LEDMask & LEDS_ALL_LEDS)); + PORTD ^= LEDMask; } static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; diff --git a/LUFA/Drivers/Board/BUMBLEB/LEDs.h b/LUFA/Drivers/Board/BUMBLEB/LEDs.h index 1453da4d7b..6446d1241e 100644 --- a/LUFA/Drivers/Board/BUMBLEB/LEDs.h +++ b/LUFA/Drivers/Board/BUMBLEB/LEDs.h @@ -120,6 +120,11 @@ PORTB = ((PORTB & ~LedMask) | ActiveMask); } + static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) + { + PORTB ^= LEDMask; + } + static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; static inline uint8_t LEDs_GetLEDs(void) { diff --git a/LUFA/Drivers/Board/EVK527/LEDs.h b/LUFA/Drivers/Board/EVK527/LEDs.h index 7612ba060a..9f36ec8287 100644 --- a/LUFA/Drivers/Board/EVK527/LEDs.h +++ b/LUFA/Drivers/Board/EVK527/LEDs.h @@ -114,7 +114,7 @@ static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) { - PORTD = (PORTD ^ (LEDMask & LEDS_ALL_LEDS)); + PORTD ^= LEDMask; } static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; diff --git a/LUFA/Drivers/Board/JMDBU2/LEDs.h b/LUFA/Drivers/Board/JMDBU2/LEDs.h index 1acf2a9f46..70013a31e2 100644 --- a/LUFA/Drivers/Board/JMDBU2/LEDs.h +++ b/LUFA/Drivers/Board/JMDBU2/LEDs.h @@ -108,7 +108,7 @@ static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) { - PORTD = (PORTD ^ (LEDMask & LEDS_ALL_LEDS)); + PORTD ^= LEDMask; } static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; diff --git a/LUFA/Drivers/Board/OLIMEX162/LEDs.h b/LUFA/Drivers/Board/OLIMEX162/LEDs.h index 625d953dc0..c4a4b3f2f4 100644 --- a/LUFA/Drivers/Board/OLIMEX162/LEDs.h +++ b/LUFA/Drivers/Board/OLIMEX162/LEDs.h @@ -122,7 +122,7 @@ #if defined(__cplusplus) } #endif - + #endif /** @} */ diff --git a/LUFA/Drivers/Board/STK525/LEDs.h b/LUFA/Drivers/Board/STK525/LEDs.h index d2d1bbb2c3..407c892783 100644 --- a/LUFA/Drivers/Board/STK525/LEDs.h +++ b/LUFA/Drivers/Board/STK525/LEDs.h @@ -117,7 +117,7 @@ static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) { - PORTD = (PORTD ^ (LEDMask & LEDS_ALL_LEDS)); + PORTD ^= LEDMask; } static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; diff --git a/LUFA/Drivers/Board/STK526/LEDs.h b/LUFA/Drivers/Board/STK526/LEDs.h index 2d20e54667..de65d26b3e 100644 --- a/LUFA/Drivers/Board/STK526/LEDs.h +++ b/LUFA/Drivers/Board/STK526/LEDs.h @@ -112,12 +112,12 @@ static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, const uint8_t ActiveMask) { - PORTD = ((PORTD & ~(LEDMask & LEDS_ALL_LEDS)) | (ActiveMask & LEDS_ALL_LEDS)); + PORTD = ((PORTD & ~LEDMask) | ActiveMask); } static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) { - PORTD = (PORTD ^ (LEDMask & LEDS_ALL_LEDS)); + PORTD ^= LEDMask; } static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; diff --git a/LUFA/Drivers/Board/USBKEY/LEDs.h b/LUFA/Drivers/Board/USBKEY/LEDs.h index 86981f5236..ebac08e839 100644 --- a/LUFA/Drivers/Board/USBKEY/LEDs.h +++ b/LUFA/Drivers/Board/USBKEY/LEDs.h @@ -117,7 +117,7 @@ static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) { - PORTD = (PORTD ^ (LEDMask & LEDS_ALL_LEDS)); + PORTD ^= LEDMask; } static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; diff --git a/LUFA/Drivers/Board/USBTINYMKII/LEDs.h b/LUFA/Drivers/Board/USBTINYMKII/LEDs.h index b0383a64a4..f394ec0143 100644 --- a/LUFA/Drivers/Board/USBTINYMKII/LEDs.h +++ b/LUFA/Drivers/Board/USBTINYMKII/LEDs.h @@ -110,6 +110,11 @@ PORTB = ((PORTB & ~LedMask) | ActiveMask); } + static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) + { + PORTB ^= LEDMask; + } + static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; static inline uint8_t LEDs_GetLEDs(void) { diff --git a/LUFA/Drivers/Board/XPLAIN/LEDs.h b/LUFA/Drivers/Board/XPLAIN/LEDs.h index 00f7bc2a34..697ec9677c 100644 --- a/LUFA/Drivers/Board/XPLAIN/LEDs.h +++ b/LUFA/Drivers/Board/XPLAIN/LEDs.h @@ -103,12 +103,12 @@ static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, const uint8_t ActiveMask) { - PORTB = ((PORTB | (LEDMask & LEDS_ALL_LEDS)) & (~ActiveMask & LEDS_ALL_LEDS)); + PORTB = ((PORTB | LEDMask) & ~ActiveMask); } static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) { - PORTD = (PORTB ^ (LEDMask & LEDS_ALL_LEDS)); + PORTB ^= LEDMask; } static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt index 253d40d28c..c92a944643 100644 --- a/LUFA/ManPages/ChangeLog.txt +++ b/LUFA/ManPages/ChangeLog.txt @@ -46,6 +46,7 @@ * - Fixed USBtoSerial and Benito project SetLineEncoding calls failing if the USART is busy, due to the RX ISR delaying the control * request handler * - Fixed LowLevel PrinterHost demo not sending control requests to the attached printer with the correct printer interface wIndex value + * - Added LEDs_ToggleLEDs() function to several board LED drivers which were missing it (thanks to Andrei Krainev) * * \section Sec_ChangeLog100807 Version 100807 * New: diff --git a/LUFA/ManPages/LUFAPoweredProjects.txt b/LUFA/ManPages/LUFAPoweredProjects.txt index b696130682..05634623d9 100644 --- a/LUFA/ManPages/LUFAPoweredProjects.txt +++ b/LUFA/ManPages/LUFAPoweredProjects.txt @@ -19,11 +19,12 @@ * are open design, and all are available for purchase as completed development boards suitable for project development. * * - AT90USB162 Breadboard PCB (Russian): http://microsin.ru/content/view/685/44/ + * - AVR-USB-162, a USBKEY-like development board for the AT90USB162: http://olimex.com/dev/avr-usb-162.html * - Benito #7, a no-frills USB board: http://www.dorkbotpdx.org/wiki/benito * - JM-DB-U2, an ATMEGA32U2 development board: http://u2.mattair.net/index.html * - Micropendous, an open design/source set of AVR USB development boards: http://micropendous.org/ + * - Minimus USB, a board specially designed for PSGroove: http://www.minimususb.com/ * - Nanduino, a do-it-yourself AT90USB162 board: http://www.makestuff.eu/wordpress/?page_id=569 - * - AVR-USB-162, a USBKEY-like development board for the AT90USB162: http://olimex.com/dev/avr-usb-162.html * - Teensy and Teensy++, two other AVR USB development boards: http://www.pjrc.com/teensy/index.html * - U2DIL/U4DIL, a set of DIP layout USB AVR boards: http://www.reworld.eu/re/en/products/u2dil/ * - USBFOO 2, AT90USB162 based development board: http://shop.kernelconcepts.de/product_info.php?products_id=102 @@ -88,4 +89,5 @@ * - Elektor Magazine, "My First AVR-USB" by Antoine Authier (feature), January 2010 Issue * - Elektor Magazine, "USB is Cool/Sucks" by Jerry Jacobs and Chris Vossen (minor mention), January 2010 Issue * - Elektor Magazine, "20 x Open Source" by Jens Nickel, March 2010 Issue + * - Circuit Cellar Magazine, "Advanced USB Design Debugging" by Collin O'Flynn, August 2010 Issue */ \ No newline at end of file