Add support for the Arduino Micro board, fix other Arduino board LED drivers.
authorDean Camera <dean@fourwalledcubicle.com>
Thu, 11 Sep 2014 13:16:16 +0000 (23:16 +1000)
committerDean Camera <dean@fourwalledcubicle.com>
Thu, 11 Sep 2014 13:16:16 +0000 (23:16 +1000)
BuildTests/BoardDriverTest/BoardDeviceMap.cfg
LUFA/Common/BoardTypes.h
LUFA/DoxygenPages/ChangeLog.txt
LUFA/DoxygenPages/DeviceSupport.txt
LUFA/Drivers/Board/AVR8/LEONARDO/LEDs.h
LUFA/Drivers/Board/AVR8/YUN/LEDs.h
LUFA/Drivers/Board/Board.h
LUFA/Drivers/Board/LEDs.h

index b58be0e..3fee2f1 100644 (file)
@@ -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 :
index 2f703f5..06ff4dd 100644 (file)
                        /** 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
 
index f335401..521e46b 100644 (file)
@@ -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
   *
index 4855dc7..2a4b9c3 100644 (file)
@@ -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
index c336190..ea7d41c 100644 (file)
@@ -46,7 +46,7 @@
  *    <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>RX</td><td>Low</td><td>PORTB.0</td></tr>
  *    <tr><td>LEDS_LED2</td><td>Yellow</td><td>TX</td><td>Low</td><td>PORTD.5</td></tr>
- *    <tr><td>LEDS_LED1</td><td>Yellow</td><td>General Indicator</td><td>High</td><td>PORTC.7</td></tr>
+ *    <tr><td>LEDS_LED3</td><td>Yellow</td><td>General Indicator</td><td>High</td><td>PORTC.7</td></tr>
  *  </table>
  *
  *  @{
@@ -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;
                        }
 
                        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
 
index f916d10..bcdd47f 100644 (file)
  *    <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>RX</td><td>Low</td><td>PORTB.0</td></tr>
  *    <tr><td>LEDS_LED2</td><td>Yellow</td><td>TX</td><td>Low</td><td>PORTD.5</td></tr>
- *    <tr><td>LEDS_LED1</td><td>Red</td><td>General Indicator</td><td>High</td><td>PORTC.7</td></tr>
+ *    <tr><td>LEDS_LED3</td><td>Red</td><td>General Indicator</td><td>High</td><td>PORTC.7</td></tr>
  *  </table>
  *
  *  @{
  */
 
-#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;
                        }
 
                        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
 
index e7e57dc..27f4953 100644 (file)
                        #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
index cb80a5e..392714a 100644 (file)
                        #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