Add support for the Micropendous (Arduino-like) series of boards (revisions 1 and 2).

pull/1469/head
Dean Camera 13 years ago
parent 0e8e70153a
commit da676f0f70

@ -189,6 +189,12 @@
/** Selects the Micropendous DIP specific board drivers, including the Button. */ /** Selects the Micropendous DIP specific board drivers, including the Button. */
#define BOARD_MICROPENDOUS_DIP 41 #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__) #if !defined(__DOXYGEN__)
#define BOARD_ BOARD_NONE #define BOARD_ BOARD_NONE

@ -17,7 +17,7 @@
* - Added new USB_Host_GetDescriptor(), USB_Host_GetDeviceConfiguration() and USB_Host_GetInterfaceAltSetting() functions * - 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 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 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.) * - Added INVERTED_VBUS_ENABLE_LINE and NO_AUTO_VBUS_MANAGEMENT compile time options (thanks to Opendous Inc.)
* - Library Applications: * - Library Applications:
* - Added User Application APIs to the CDC and DFU class bootloaders * - Added User Application APIs to the CDC and DFU class bootloaders

@ -78,6 +78,20 @@
* See \ref Group_Buttons_MICROPENDOUS_32U2 for more details. * See \ref Group_Buttons_MICROPENDOUS_32U2 for more details.
*/ */
/** \ingroup Group_Buttons
* \defgroup Group_Buttons_MICROPENDOUS_REV1 MICROPENDOUS_REV1
* \brief Board specific Button driver header for the Micropendous Arduino-like Revision 1 (https://code.google.com/p/micropendous/wiki/Micropendous).
*
* See \ref Group_Buttons_MICROPENDOUS_32U2 for more details.
*/
/** \ingroup Group_Buttons
* \defgroup Group_Buttons_MICROPENDOUS_REV2 MICROPENDOUS_REV2
* \brief Board specific Button driver header for the Micropendous Arduino-like Revision 2 (https://code.google.com/p/micropendous/wiki/Micropendous).
*
* See \ref Group_Buttons_MICROPENDOUS_32U2 for more details.
*/
/** \ingroup Group_Buttons /** \ingroup Group_Buttons
* \defgroup Group_Buttons_MICROPENDOUS_32U2 MICROPENDOUS_32U2 * \defgroup Group_Buttons_MICROPENDOUS_32U2 MICROPENDOUS_32U2
* \brief Board specific Buttons driver header for the Micropendous 32U2. * \brief Board specific Buttons driver header for the Micropendous 32U2.
@ -128,6 +142,12 @@
#elif (BOARD == BOARD_MICROPENDOUS_DIP) #elif (BOARD == BOARD_MICROPENDOUS_DIP)
#define _BOARD_BUTTON1_MASK (1 << 2) #define _BOARD_BUTTON1_MASK (1 << 2)
#define _BOARD_BUTTON_PORTLETTER E #define _BOARD_BUTTON_PORTLETTER E
#elif (BOARD == BOARD_MICROPENDOUS_REV1)
#define _BOARD_BUTTON1_MASK (1 << 2)
#define _BOARD_BUTTON_PORTLETTER E
#elif (BOARD == BOARD_MICROPENDOUS_REV2)
#define _BOARD_BUTTON1_MASK (1 << 2)
#define _BOARD_BUTTON_PORTLETTER E
#endif #endif
#define _BOARD_BUTTON_CONCAT2(Reg, Letter) Reg ## Letter #define _BOARD_BUTTON_CONCAT2(Reg, Letter) Reg ## Letter

@ -36,6 +36,20 @@
* dispatch header located in LUFA/Drivers/Board/LEDs.h. * dispatch header located in LUFA/Drivers/Board/LEDs.h.
*/ */
/** \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 /** \ingroup Group_LEDs
* \defgroup Group_LEDs_MICROPENDOUS_32U2 MICROPENDOUS_32U2 * \defgroup Group_LEDs_MICROPENDOUS_32U2 MICROPENDOUS_32U2
* \brief Board specific LED driver header for the Micropendous 32U2. * \brief Board specific LED driver header for the Micropendous 32U2.
@ -61,10 +75,30 @@
#error Do not include this file directly. Include LUFA/Drivers/Board/LEDS.h instead. #error Do not include this file directly. Include LUFA/Drivers/Board/LEDS.h instead.
#endif #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: */ /* Public Interface - May be used in end-application: */
/* Macros: */ /* Macros: */
/** LED mask for the first LED on the board. */ /** 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. */ /** LED mask for all the LEDs on the board. */
#define LEDS_ALL_LEDS LEDS_LED1 #define LEDS_ALL_LEDS LEDS_LED1
@ -76,46 +110,46 @@
#if !defined(__DOXYGEN__) #if !defined(__DOXYGEN__)
static inline void LEDs_Init(void) static inline void LEDs_Init(void)
{ {
DDRD |= LEDS_ALL_LEDS; _BOARD_LED_DDR |= LEDS_ALL_LEDS;
PORTD &= ~LEDS_ALL_LEDS; _BOARD_LED_PORT &= ~LEDS_ALL_LEDS;
} }
static inline void LEDs_Disable(void) static inline void LEDs_Disable(void)
{ {
DDRD &= ~LEDS_ALL_LEDS; _BOARD_LED_DDR &= ~LEDS_ALL_LEDS;
PORTD &= ~LEDS_ALL_LEDS; _BOARD_LED_PORT &= ~LEDS_ALL_LEDS;
} }
static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask) static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask)
{ {
PORTD |= LEDMask; _BOARD_LED_PORT |= LEDMask;
} }
static inline void LEDs_TurnOffLEDs(const uint8_t 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) 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, static inline void LEDs_ChangeLEDs(const uint8_t LEDMask,
const uint8_t ActiveMask) const uint8_t ActiveMask)
{ {
PORTD = ((PORTF & ~LEDMask) | ActiveMask); _BOARD_LED_PORT = ((PORTF & ~LEDMask) | ActiveMask);
} }
static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) 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) ATTR_WARN_UNUSED_RESULT;
static inline uint8_t LEDs_GetLEDs(void) static inline uint8_t LEDs_GetLEDs(void)
{ {
return (PORTD & LEDS_ALL_LEDS); return (_BOARD_LED_PORT & LEDS_ALL_LEDS);
} }
#endif #endif

@ -138,6 +138,7 @@
#elif ((BOARD == BOARD_MICROPENDOUS_32U2) || (BOARD == BOARD_MICROPENDOUS_A) || \ #elif ((BOARD == BOARD_MICROPENDOUS_32U2) || (BOARD == BOARD_MICROPENDOUS_A) || \
(BOARD == BOARD_MICROPENDOUS_1) || (BOARD == BOARD_MICROPENDOUS_2) || \ (BOARD == BOARD_MICROPENDOUS_1) || (BOARD == BOARD_MICROPENDOUS_2) || \
(BOARD == BOARD_MICROPENDOUS_3) || (BOARD == BOARD_MICROPENDOUS_4) || \ (BOARD == BOARD_MICROPENDOUS_3) || (BOARD == BOARD_MICROPENDOUS_4) || \
(BOARD == BOARD_MICROPENDOUS_REV1) || (BOARD == BOARD_MICROPENDOUS_REV2) || \
(BOARD == BOARD_MICROPENDOUS_DIP)) (BOARD == BOARD_MICROPENDOUS_DIP))
#include "AVR8/MICROPENDOUS/Buttons.h" #include "AVR8/MICROPENDOUS/Buttons.h"
#else #else

@ -175,7 +175,8 @@
#include "XMEGA/A3BU_XPLAINED/LEDs.h" #include "XMEGA/A3BU_XPLAINED/LEDs.h"
#elif ((BOARD == BOARD_USB2AX) || (BOARD == BOARD_USB2AX_V3)) #elif ((BOARD == BOARD_USB2AX) || (BOARD == BOARD_USB2AX_V3))
#include "AVR8/USB2AX/LEDs.h" #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" #include "AVR8/MICROPENDOUS/LEDs.h"
#else #else
#include "Board/LEDs.h" #include "Board/LEDs.h"

Loading…
Cancel
Save