Added support for the Xevelabs USB2AX revision 3.1 board.

This commit is contained in:
Dean Camera 2012-09-15 13:47:00 +00:00
parent 5f1428bb50
commit 45a56b4df7
6 changed files with 61 additions and 26 deletions

View file

@ -29,25 +29,32 @@
*/
/** \file
* \brief Board specific Buttons driver header for the Paranoid Studio USB2AX.
* \brief Board specific Buttons driver header for the Xevelabs USB2AX.
* \copydetails Group_Buttons_USB2AX
*
* \note This file should not be included directly. It is automatically included as needed by the Buttons driver
* dispatch header located in LUFA/Drivers/Board/Buttons.h.
*/
/** \ingroup Group_Buttons
* \defgroup Group_Buttons_USB2AX_V31 USB2AX_V31
* \brief Board specific Button driver header for the Xevelabs USB2AX revision 3.1.
*
* See \ref Group_Buttons_USB2AX for more details.
*/
/** \ingroup Group_Buttons
* \defgroup Group_Buttons_USB2AX_V3 USB2AX_V3
* \brief Board specific Button driver header for the Paranoid Studio USB2AX revision 3.
* \brief Board specific Button driver header for the Xevelabs USB2AX revision 3.
*
* See \ref Group_Buttons_USB2AX for more details.
*/
/** \ingroup Group_Buttons
* \defgroup Group_Buttons_USB2AX USB2AX
* \brief Board specific Buttons driver header for the Paranoid Studio USB2AX.
* \brief Board specific Buttons driver header for the Xevelabs USB2AX revisions 1 and 2.
*
* \note For version 3 USB2AX boards, compile with <code>BOARD = USB2AX_V3</code>.
* \note For version 3 USB2AX boards, compile with <code>BOARD = USB2AX_V3</code> and for version 3.1, with <code>BOARD = USB2AX_V31</code>.
*
* Board specific Buttons driver header for the Paranoid Studio USB2AX (http://paranoidstudio.assembla.com/wiki/show/paranoidstudio/USB2AX).
*

View file

@ -29,27 +29,34 @@
*/
/** \file
* \brief Board specific LED driver header for the Paranoid Studio USB2AX.
* \brief Board specific LED driver header for the Xevelabs USB2AX.
* \copydetails Group_LEDs_USB2AX
*
* \note This file should not be included directly. It is automatically included as needed by the LEDs driver
* dispatch header located in LUFA/Drivers/Board/LEDs.h.
*/
/** \ingroup Group_LEDs
* \defgroup Group_LEDs_USB2AX_V31 USB2AX_V31
* \brief Board specific LED driver header for the Xevelabs USB2AX revision 3.1.
*
* See \ref Group_LEDs_USB2AX for more details.
*/
/** \ingroup Group_LEDs
* \defgroup Group_LEDs_USB2AX_V3 USB2AX_V3
* \brief Board specific LED driver header for the Paranoid Studio USB2AX revision 3.
* \brief Board specific LED driver header for the Xevelabs USB2AX revision 3.
*
* See \ref Group_LEDs_USB2AX for more details.
*/
/** \ingroup Group_LEDs
* \defgroup Group_LEDs_USB2AX USB2AX
* \brief Board specific LED driver header for the Paranoid Studio USB2AX.
* \brief Board specific LED driver header for the Xevelabs USB2AX revisions 1 and 2.
*
* \note For version 3 USB2AX boards, compile with <code>BOARD = USB2AX_V3</code>.
*
* Board specific LED driver header for the Paranoid Studio USB2AX (http://paranoidstudio.assembla.com/wiki/show/paranoidstudio/USB2AX).
* \note For version 3 USB2AX boards, compile with <code>BOARD = USB2AX_V3</code> and for version 3.1, with <code>BOARD = USB2AX_V31</code>.
*
* Board specific LED driver header for the Xevelabs USB2AX (http://paranoidstudio.assembla.com/wiki/show/paranoidstudio/USB2AX).
*
* <b>USB2AX</b>:
* <table>
@ -63,6 +70,13 @@
* <tr><td>LEDS_LED1</td><td>Green</td><td>General Indicator</td><td>High</td><td>PORTD.1</td></tr>
* </table>
*
* <b>USB2AX_V31</b>:
* <table>
* <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>Green</td><td>General Indicator</td><td>High</td><td>PORTD.5</td></tr>
* <tr><td>LEDS_LED2</td><td>Red</td><td>General Indicator</td><td>High</td><td>PORTD.6</td></tr>
* </table>
*
* @{
*/
@ -85,10 +99,15 @@
/* Private Interface - For use in library only: */
#if !defined(__DOXYGEN__)
/* Macros: */
#if (BOARD == BOARD_USB2AX)
#define USB2AX_LEDS_LED1 (1 << 6)
#if (BOARD == BOARD_USB2AX_V31)
#define USB2AX_LEDS_LED1 (1 << 5)
#define USB2AX_LEDS_LED2 (1 << 6)
#elif (BOARD == BOARD_USB2AX_V3)
#define USB2AX_LEDS_LED1 (1 << 1)
#define USB2AX_LEDS_LED2 0
#else
#define USB2AX_LEDS_LED1 (1 << 1)
#define USB2AX_LEDS_LED1 (1 << 6)
#define USB2AX_LEDS_LED2 0
#endif
#endif
@ -97,8 +116,11 @@
/** LED mask for the first LED on the board. */
#define LEDS_LED1 USB2AX_LEDS_LED1
/** LED mask for the second LED on the board. */
#define LEDS_LED2 USB2AX_LEDS_LED2
/** LED mask for all the LEDs on the board. */
#define LEDS_ALL_LEDS LEDS_LED1
#define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2)
/** LED mask for none of the board LEDs. */
#define LEDS_NO_LEDS 0
@ -109,28 +131,28 @@
{
#if (BOARD == BOARD_USB2AX)
DDRC |= LEDS_ALL_LEDS;
PORTC &= ~LEDS_ALL_LEDS;
PORTC &= ~LEDS_ALL_LEDS;
#else
DDRD |= LEDS_ALL_LEDS;
PORTD &= ~LEDS_ALL_LEDS;
#endif
PORTD &= ~LEDS_ALL_LEDS;
#endif
}
static inline void LEDs_Disable(void)
{
#if (BOARD == BOARD_USB2AX)
DDRC &= ~LEDS_ALL_LEDS;
PORTC &= ~LEDS_ALL_LEDS;
PORTC &= ~LEDS_ALL_LEDS;
#else
DDRD &= ~LEDS_ALL_LEDS;
PORTD &= ~LEDS_ALL_LEDS;
#endif
PORTD &= ~LEDS_ALL_LEDS;
#endif
}
static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask)
{
#if (BOARD == BOARD_USB2AX)
PORTC |= LEDMask;
PORTC |= LEDMask;
#else
PORTD |= LEDMask;
#endif
@ -148,7 +170,7 @@
static inline void LEDs_SetAllLEDs(const uint8_t LEDMask)
{
#if (BOARD == BOARD_USB2AX)
PORTC = ((PORTC & ~LEDS_ALL_LEDS) | LEDMask);
PORTC = ((PORTC & ~LEDS_ALL_LEDS) | LEDMask);
#else
PORTD = ((PORTD & ~LEDS_ALL_LEDS) | LEDMask);
#endif
@ -158,7 +180,7 @@
const uint8_t ActiveMask)
{
#if (BOARD == BOARD_USB2AX)
PORTC = ((PORTC & ~LEDMask) | ActiveMask);
PORTC = ((PORTC & ~LEDMask) | ActiveMask);
#else
PORTD = ((PORTD & ~LEDMask) | ActiveMask);
#endif
@ -167,7 +189,7 @@
static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
{
#if (BOARD == BOARD_USB2AX)
PINC = LEDMask;
PINC = LEDMask;
#else
PIND = LEDMask;
#endif
@ -177,7 +199,7 @@
static inline uint8_t LEDs_GetLEDs(void)
{
#if (BOARD == BOARD_USB2AX)
return (PORTC & LEDS_ALL_LEDS);
return (PORTC & LEDS_ALL_LEDS);
#else
return (PORTD & LEDS_ALL_LEDS);
#endif