Add support for the Arduino Micro board, fix other Arduino board LED drivers.

pull/1469/head
Dean Camera 10 years ago
parent 5e4b14f007
commit c69a623652

@ -72,6 +72,7 @@ BOARD_XPLAIN_REV1 = AVR8 : at90usb1287 :
BOARD_STANGE_ISP = AVR8 : at90usb162 : BOARD_STANGE_ISP = AVR8 : at90usb162 :
BOARD_U2S = AVR8 : atmega32u2 : BOARD_U2S = AVR8 : atmega32u2 :
BOARD_YUN = AVR8 : atmega32u4 : BOARD_YUN = AVR8 : atmega32u4 :
BOARD_MICRO = AVR8 : atmega32u4 :
# #
# ----------------- XMEGA Boards ----------------- # ----------------- XMEGA Boards -----------------
BOARD_A3BU_XPLAINED = XMEGA : atxmega256a3bu : BOARD_A3BU_XPLAINED = XMEGA : atxmega256a3bu :

@ -234,9 +234,12 @@
/** Selects the U2S specific board drivers, including the Button and LEDs drivers. */ /** Selects the U2S specific board drivers, including the Button and LEDs drivers. */
#define BOARD_U2S 56 #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 #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__) #if !defined(__DOXYGEN__)
#define BOARD_ BOARD_NONE #define BOARD_ BOARD_NONE

@ -12,6 +12,7 @@
* - Updated the BUILD build system module to add a new COMPILER_PATH optional variable * - 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 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 Yun board (ATMEGA32U4 coprocessor)
* - Added support for the Arduino Micro board
* - Library Applications: * - Library Applications:
* - Added new Dual MIDI class driver device demo * - Added new Dual MIDI class driver device demo
* *

@ -96,8 +96,9 @@
* \section Sec_AVR8Support_ThirdParty Supported Third Party Boards * \section Sec_AVR8Support_ThirdParty Supported Third Party Boards
* Currently supported third-party boards (see \ref Group_BoardTypes for makefile \c BOARD constant names): * Currently supported third-party boards (see \ref Group_BoardTypes for makefile \c BOARD constant names):
* - Adafruit U4 Breakout Board * - Adafruit U4 Breakout Board
* - Arduino Uno
* - Arduino Leonardo * - Arduino Leonardo
* - Arduino Micro
* - Arduino Uno
* - Arduino Yun * - Arduino Yun
* - Bitwizard Multio and Big-Multio * - Bitwizard Multio and Big-Multio
* - Busware BUI * - Busware BUI

@ -46,7 +46,7 @@
* <tr><th>Name</th><th>Color</th><th>Info</th><th>Active Level</th><th>Port Pin</th></tr> * <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_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_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> * </table>
* *
* @{ * @{
@ -98,9 +98,9 @@
static inline void LEDs_Init(void) static inline void LEDs_Init(void)
{ {
DDRB |= LEDS_PORTB_LEDS; DDRB |= LEDS_PORTB_LEDS;
PORTB &= LEDS_PORTB_LEDS; PORTB |= LEDS_PORTB_LEDS;
DDRD |= LEDS_PORTD_LEDS; DDRD |= LEDS_PORTD_LEDS;
PORTD &= LEDS_PORTD_LEDS; PORTD |= LEDS_PORTD_LEDS;
DDRC |= LEDS_PORTC_LEDS; DDRC |= LEDS_PORTC_LEDS;
PORTC &= ~LEDS_PORTC_LEDS; PORTC &= ~LEDS_PORTC_LEDS;
} }
@ -117,44 +117,44 @@
static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask) static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask)
{ {
PORTB |= (LEDMask & LEDS_PORTB_LEDS); PORTB &= ~(LEDMask & LEDS_PORTB_LEDS);
PORTD |= (LEDMask & LEDS_PORTD_LEDS); PORTD &= ~(LEDMask & LEDS_PORTD_LEDS);
PORTC |= (LEDMask & LEDS_PORTC_LEDS); PORTC |= (LEDMask & LEDS_PORTC_LEDS);
} }
static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask) static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask)
{ {
PORTB &= ~(LEDMask & LEDS_PORTB_LEDS); PORTB |= (LEDMask & LEDS_PORTB_LEDS);
PORTD &= ~(LEDMask & LEDS_PORTD_LEDS); PORTD |= (LEDMask & LEDS_PORTD_LEDS);
PORTC &= ~(LEDMask & LEDS_PORTC_LEDS); PORTC &= ~(LEDMask & LEDS_PORTC_LEDS);
} }
static inline void LEDs_SetAllLEDs(const uint8_t LEDMask) static inline void LEDs_SetAllLEDs(const uint8_t LEDMask)
{ {
PORTB = ((PORTB & ~LEDS_PORTB_LEDS) | (LEDMask & LEDS_PORTB_LEDS)); PORTB = ((PORTB | LEDS_PORTB_LEDS) & ~(LEDMask & LEDS_PORTB_LEDS));
PORTD = ((PORTD & ~LEDS_PORTD_LEDS) | (LEDMask & LEDS_PORTD_LEDS)); PORTD = ((PORTD | LEDS_PORTD_LEDS) & ~(LEDMask & LEDS_PORTD_LEDS));
PORTC = ((PORTC & ~LEDS_PORTC_LEDS) | (LEDMask & LEDS_PORTC_LEDS)); PORTC = ((PORTC & ~LEDS_PORTC_LEDS) | (LEDMask & LEDS_PORTC_LEDS));
} }
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)
{ {
PORTB = ((PORTB & ~(LEDMask & LEDS_PORTB_LEDS)) | (ActiveMask & LEDS_PORTB_LEDS)); PORTB = ((PORTB | (LEDMask & LEDS_PORTB_LEDS)) & ~(ActiveMask & LEDS_PORTB_LEDS));
PORTD = ((PORTD & ~(LEDMask & LEDS_PORTD_LEDS)) | (ActiveMask & LEDS_PORTD_LEDS)); PORTD = ((PORTD | (LEDMask & LEDS_PORTD_LEDS)) & ~(ActiveMask & LEDS_PORTD_LEDS));
PORTC = ((PORTC & ~(LEDMask & LEDS_PORTC_LEDS)) | (ActiveMask & LEDS_PORTC_LEDS)); PORTC = ((PORTC & ~(LEDMask & LEDS_PORTC_LEDS)) | (ActiveMask & LEDS_PORTC_LEDS));
} }
static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
{ {
PORTB ^= (LEDMask & LEDS_PORTB_LEDS); PINB = (LEDMask & LEDS_PORTB_LEDS);
PORTD ^= (LEDMask & LEDS_PORTD_LEDS); PIND = (LEDMask & LEDS_PORTD_LEDS);
PORTC ^= (LEDMask & LEDS_PORTC_LEDS); PINC = (LEDMask & LEDS_PORTC_LEDS);
} }
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 ((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 #endif

@ -46,14 +46,14 @@
* <tr><th>Name</th><th>Color</th><th>Info</th><th>Active Level</th><th>Port Pin</th></tr> * <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_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_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> * </table>
* *
* @{ * @{
*/ */
#ifndef __LEDS_LEONARDO_H__ #ifndef __LEDS_YUN_H__
#define __LEDS_LEONARDO_H__ #define __LEDS_YUN_H__
/* Includes: */ /* Includes: */
#include "../../../../Common/Common.h" #include "../../../../Common/Common.h"
@ -98,9 +98,9 @@
static inline void LEDs_Init(void) static inline void LEDs_Init(void)
{ {
DDRB |= LEDS_PORTB_LEDS; DDRB |= LEDS_PORTB_LEDS;
PORTB &= LEDS_PORTB_LEDS; PORTB |= LEDS_PORTB_LEDS;
DDRD |= LEDS_PORTD_LEDS; DDRD |= LEDS_PORTD_LEDS;
PORTD &= LEDS_PORTD_LEDS; PORTD |= LEDS_PORTD_LEDS;
DDRC |= LEDS_PORTC_LEDS; DDRC |= LEDS_PORTC_LEDS;
PORTC &= ~LEDS_PORTC_LEDS; PORTC &= ~LEDS_PORTC_LEDS;
} }
@ -117,44 +117,44 @@
static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask) static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask)
{ {
PORTB |= (LEDMask & LEDS_PORTB_LEDS); PORTB &= ~(LEDMask & LEDS_PORTB_LEDS);
PORTD |= (LEDMask & LEDS_PORTD_LEDS); PORTD &= ~(LEDMask & LEDS_PORTD_LEDS);
PORTC |= (LEDMask & LEDS_PORTC_LEDS); PORTC |= (LEDMask & LEDS_PORTC_LEDS);
} }
static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask) static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask)
{ {
PORTB &= ~(LEDMask & LEDS_PORTB_LEDS); PORTB |= (LEDMask & LEDS_PORTB_LEDS);
PORTD &= ~(LEDMask & LEDS_PORTD_LEDS); PORTD |= (LEDMask & LEDS_PORTD_LEDS);
PORTC &= ~(LEDMask & LEDS_PORTC_LEDS); PORTC &= ~(LEDMask & LEDS_PORTC_LEDS);
} }
static inline void LEDs_SetAllLEDs(const uint8_t LEDMask) static inline void LEDs_SetAllLEDs(const uint8_t LEDMask)
{ {
PORTB = ((PORTB & ~LEDS_PORTB_LEDS) | (LEDMask & LEDS_PORTB_LEDS)); PORTB = ((PORTB | LEDS_PORTB_LEDS) & ~(LEDMask & LEDS_PORTB_LEDS));
PORTD = ((PORTD & ~LEDS_PORTD_LEDS) | (LEDMask & LEDS_PORTD_LEDS)); PORTD = ((PORTD | LEDS_PORTD_LEDS) & ~(LEDMask & LEDS_PORTD_LEDS));
PORTC = ((PORTC & ~LEDS_PORTC_LEDS) | (LEDMask & LEDS_PORTC_LEDS)); PORTC = ((PORTC & ~LEDS_PORTC_LEDS) | (LEDMask & LEDS_PORTC_LEDS));
} }
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)
{ {
PORTB = ((PORTB & ~(LEDMask & LEDS_PORTB_LEDS)) | (ActiveMask & LEDS_PORTB_LEDS)); PORTB = ((PORTB | (LEDMask & LEDS_PORTB_LEDS)) & ~(ActiveMask & LEDS_PORTB_LEDS));
PORTD = ((PORTD & ~(LEDMask & LEDS_PORTD_LEDS)) | (ActiveMask & LEDS_PORTD_LEDS)); PORTD = ((PORTD | (LEDMask & LEDS_PORTD_LEDS)) & ~(ActiveMask & LEDS_PORTD_LEDS));
PORTC = ((PORTC & ~(LEDMask & LEDS_PORTC_LEDS)) | (ActiveMask & LEDS_PORTC_LEDS)); PORTC = ((PORTC & ~(LEDMask & LEDS_PORTC_LEDS)) | (ActiveMask & LEDS_PORTC_LEDS));
} }
static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
{ {
PORTB ^= (LEDMask & LEDS_PORTB_LEDS); PINB = (LEDMask & LEDS_PORTB_LEDS);
PORTD ^= (LEDMask & LEDS_PORTD_LEDS); PIND = (LEDMask & LEDS_PORTD_LEDS);
PORTC ^= (LEDMask & LEDS_PORTC_LEDS); PINC = (LEDMask & LEDS_PORTC_LEDS);
} }
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 ((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 #endif

@ -155,6 +155,8 @@
#include "AVR8/U2S/Board.h" #include "AVR8/U2S/Board.h"
#elif (BOARD == BOARD_YUN) #elif (BOARD == BOARD_YUN)
#include "AVR8/YUN/Board.h" #include "AVR8/YUN/Board.h"
#elif (BOARD == BOARD_MICRO)
#include "AVR8/MICRO/Board.h"
#else #else
#include "Board/Board.h" #include "Board/Board.h"
#endif #endif

@ -205,6 +205,8 @@
#include "AVR8/U2S/LEDs.h" #include "AVR8/U2S/LEDs.h"
#elif (BOARD == BOARD_YUN) #elif (BOARD == BOARD_YUN)
#include "AVR8/YUN/LEDs.h" #include "AVR8/YUN/LEDs.h"
#elif (BOARD == BOARD_MICRO)
#include "AVR8/MICRO/LEDs.h"
#else #else
#include "Board/LEDs.h" #include "Board/LEDs.h"
#endif #endif

Loading…
Cancel
Save