Add support for the Micropendous (Arduino-like) series of boards (revisions 1 and 2).
authorDean Camera <dean@fourwalledcubicle.com>
Sun, 5 Feb 2012 15:50:09 +0000 (15:50 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Sun, 5 Feb 2012 15:50:09 +0000 (15:50 +0000)
LUFA/Common/BoardTypes.h
LUFA/DoxygenPages/ChangeLog.txt
LUFA/Drivers/Board/AVR8/MICROPENDOUS/Buttons.h
LUFA/Drivers/Board/AVR8/MICROPENDOUS/LEDs.h
LUFA/Drivers/Board/Buttons.h
LUFA/Drivers/Board/LEDs.h

index 8588517..e21709b 100644 (file)
                        /** Selects the Micropendous DIP specific board drivers, including the Button. */
                        #define BOARD_MICROPENDOUS_DIP     41
 
+                       /** Selects the Micropendous (Arduino-like) revision 1 specific board drivers, including the Button and LED drivers. */
+                       #define BOARD_MICROPENDOUS_REV1    42
+
+                       /** Selects the Micropendous (Arduino-like) revision 2 specific board drivers, including the Button and LED drivers. */
+                       #define BOARD_MICROPENDOUS_REV2    43
+
                        #if !defined(__DOXYGEN__)
                                #define BOARD_                 BOARD_NONE
 
index ac9b543..8360f06 100644 (file)
@@ -17,7 +17,7 @@
   *   - Added new USB_Host_GetDescriptor(), USB_Host_GetDeviceConfiguration() and USB_Host_GetInterfaceAltSetting() functions
   *   - Added new CALLBACK_Audio_Device_GetSetInterfaceProperty() callback to the Audio Device Class driver
   *   - Added new LEDs_Disable(), Buttons_Disable() and Joystick_Disable() functions to the board hardware drivers
-  *   - Added support for the Micropendous family of boards
+  *   - Added support for the Micropendous family of boards (Arduino-like revisions 1 and 2, DIP, 32U2, A, 1, 2, 3 and 4)
   *   - Added INVERTED_VBUS_ENABLE_LINE and NO_AUTO_VBUS_MANAGEMENT compile time options (thanks to Opendous Inc.)
   *  - Library Applications:
   *   - Added User Application APIs to the CDC and DFU class bootloaders
index cb42658..5c5825a 100644 (file)
  */\r
 \r
 /** \ingroup Group_Buttons\r
+ *  \defgroup Group_Buttons_MICROPENDOUS_REV1 MICROPENDOUS_REV1\r
+ *  \brief Board specific Button driver header for the Micropendous Arduino-like Revision 1 (https://code.google.com/p/micropendous/wiki/Micropendous).\r
+ *\r
+ *  See \ref Group_Buttons_MICROPENDOUS_32U2 for more details.\r
+ */\r
+\r
+/** \ingroup Group_Buttons\r
+ *  \defgroup Group_Buttons_MICROPENDOUS_REV2 MICROPENDOUS_REV2\r
+ *  \brief Board specific Button driver header for the Micropendous Arduino-like Revision 2 (https://code.google.com/p/micropendous/wiki/Micropendous).\r
+ *\r
+ *  See \ref Group_Buttons_MICROPENDOUS_32U2 for more details.\r
+ */\r
+\r
+/** \ingroup Group_Buttons\r
  *  \defgroup Group_Buttons_MICROPENDOUS_32U2 MICROPENDOUS_32U2\r
  *  \brief Board specific Buttons driver header for the Micropendous 32U2.\r
  *\r
                #elif (BOARD == BOARD_MICROPENDOUS_DIP)\r
                        #define _BOARD_BUTTON1_MASK             (1 << 2)\r
                        #define _BOARD_BUTTON_PORTLETTER        E\r
+               #elif (BOARD == BOARD_MICROPENDOUS_REV1)\r
+                       #define _BOARD_BUTTON1_MASK             (1 << 2)\r
+                       #define _BOARD_BUTTON_PORTLETTER        E\r
+               #elif (BOARD == BOARD_MICROPENDOUS_REV2)\r
+                       #define _BOARD_BUTTON1_MASK             (1 << 2)\r
+                       #define _BOARD_BUTTON_PORTLETTER        E\r
                #endif\r
                \r
                #define _BOARD_BUTTON_CONCAT2(Reg, Letter)  Reg ## Letter\r
index 17a8b9f..649d961 100644 (file)
  */
 
 /** \ingroup Group_LEDs
+ *  \defgroup Group_LEDs_MICROPENDOUS_REV1 MICROPENDOUS_REV1
+ *  \brief Board specific LED driver header for the Micropendous Arduino-like Revision 1 (https://code.google.com/p/micropendous/wiki/Micropendous).
+ *
+ *  See \ref Group_LEDs_MICROPENDOUS_32U2 for more details.
+ */
+
+/** \ingroup Group_LEDs
+ *  \defgroup Group_LEDs_MICROPENDOUS_REV2 MICROPENDOUS_REV2
+ *  \brief Board specific LED driver header for the Micropendous Arduino-like Revision 2 (https://code.google.com/p/micropendous/wiki/Micropendous).
+ *
+ *  See \ref Group_LEDs_MICROPENDOUS_32U2 for more details.
+ */
+
+/** \ingroup Group_LEDs
  *  \defgroup Group_LEDs_MICROPENDOUS_32U2 MICROPENDOUS_32U2
  *  \brief Board specific LED driver header for the Micropendous 32U2.
  *
                        #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__)
+               #if (BOARD == BOARD_MICROPENDOUS_32U2)
+                       #define _BOARD_LED1_MASK                (1 << 6)
+                       #define _BOARD_LED_PORTLETTER           D
+               #elif (BOARD == BOARD_MICROPENDOUS_REV1)
+                       #define _BOARD_LED1_MASK                (1 << 1)
+                       #define _BOARD_LED_PORTLETTER           B
+               #elif (BOARD == BOARD_MICROPENDOUS_REV2)
+                       #define _BOARD_LED1_MASK                (1 << 1)
+                       #define _BOARD_LED_PORTLETTER           B
+               #endif
+               
+               #define _BOARD_LED_CONCAT2(Reg, Letter)     Reg ## Letter
+               #define _BOARD_LED_CONCAT(Reg, Letter)      _BOARD_LED_CONCAT2(Reg, Letter)
+
+               #define _BOARD_LED_PORT                     _BOARD_LED_CONCAT(PORT, _BOARD_LED_PORTLETTER)
+               #define _BOARD_LED_DDR                      _BOARD_LED_CONCAT(DDR,  _BOARD_LED_PORTLETTER)
+       #endif
+
        /* Public Interface - May be used in end-application: */
                /* Macros: */
                        /** LED mask for the first LED on the board. */
-                       #define LEDS_LED1        (1 << 6)
+                       #define LEDS_LED1        _BOARD_LED1_MASK
 
                        /** LED mask for all the LEDs on the board. */
                        #define LEDS_ALL_LEDS    LEDS_LED1
                #if !defined(__DOXYGEN__)
                        static inline void LEDs_Init(void)
                        {
-                               DDRD  |=  LEDS_ALL_LEDS;
-                               PORTD &= ~LEDS_ALL_LEDS;
+                               _BOARD_LED_DDR  |=  LEDS_ALL_LEDS;
+                               _BOARD_LED_PORT &= ~LEDS_ALL_LEDS;
                        }
 
                        static inline void LEDs_Disable(void)
                        {
-                               DDRD  &= ~LEDS_ALL_LEDS;
-                               PORTD &= ~LEDS_ALL_LEDS;
+                               _BOARD_LED_DDR  &= ~LEDS_ALL_LEDS;
+                               _BOARD_LED_PORT &= ~LEDS_ALL_LEDS;
                        }
 
                        static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask)
                        {
-                               PORTD |= LEDMask;
+                               _BOARD_LED_PORT |= LEDMask;
                        }
 
                        static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask)
                        {
-                               PORTD &= ~LEDMask;
+                               _BOARD_LED_PORT &= ~LEDMask;
                        }
 
                        static inline void LEDs_SetAllLEDs(const uint8_t LEDMask)
                        {
-                               PORTD = ((PORTF & ~LEDS_ALL_LEDS) | LEDMask);
+                               _BOARD_LED_PORT = ((PORTF & ~LEDS_ALL_LEDS) | LEDMask);
                        }
 
                        static inline void LEDs_ChangeLEDs(const uint8_t LEDMask,
                                                           const uint8_t ActiveMask)
                        {
-                               PORTD = ((PORTF & ~LEDMask) | ActiveMask);
+                               _BOARD_LED_PORT = ((PORTF & ~LEDMask) | ActiveMask);
                        }
 
                        static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
                        {
-                               PORTD ^= LEDMask;
+                               _BOARD_LED_PORT ^= LEDMask;
                        }
 
                        static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT;
                        static inline uint8_t LEDs_GetLEDs(void)
                        {
-                               return (PORTD & LEDS_ALL_LEDS);
+                               return (_BOARD_LED_PORT & LEDS_ALL_LEDS);
                        }
                #endif
 
index 2b430ba..6ea072c 100644 (file)
                #elif ((BOARD == BOARD_MICROPENDOUS_32U2) || (BOARD == BOARD_MICROPENDOUS_A) || \
                       (BOARD == BOARD_MICROPENDOUS_1)    || (BOARD == BOARD_MICROPENDOUS_2) || \
                       (BOARD == BOARD_MICROPENDOUS_3)    || (BOARD == BOARD_MICROPENDOUS_4) || \
+                      (BOARD == BOARD_MICROPENDOUS_REV1) || (BOARD == BOARD_MICROPENDOUS_REV2) || \
                       (BOARD == BOARD_MICROPENDOUS_DIP))
                        #include "AVR8/MICROPENDOUS/Buttons.h"
                #else
index d1836da..94421a2 100644 (file)
                        #include "XMEGA/A3BU_XPLAINED/LEDs.h"
                #elif ((BOARD == BOARD_USB2AX) || (BOARD == BOARD_USB2AX_V3))
                        #include "AVR8/USB2AX/LEDs.h"
-               #elif (BOARD == BOARD_MICROPENDOUS_32U2)
+               #elif ((BOARD == BOARD_MICROPENDOUS_REV1) || (BOARD == BOARD_MICROPENDOUS_REV2) || \
+                      (BOARD == BOARD_MICROPENDOUS_32U2))
                        #include "AVR8/MICROPENDOUS/LEDs.h"
                #else
                        #include "Board/LEDs.h"