From 180180e234c3b5c8d930630c9208ea24da926cc1 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sat, 19 Jan 2013 17:04:32 +0000 Subject: [PATCH] Add support for the Dimex Stange-ISP programmer board (thanks to Gerhard Wesser). --- BuildTests/BoardDriverTest/BoardDeviceMap.cfg | 5 +- LUFA/Common/BoardTypes.h | 3 + LUFA/DoxygenPages/ChangeLog.txt | 1 + LUFA/DoxygenPages/DeviceSupport.txt | 1 + LUFA/Drivers/Board/AVR8/STANGE_ISP/Buttons.h | 103 +++++++++++++ LUFA/Drivers/Board/AVR8/STANGE_ISP/LEDs.h | 138 ++++++++++++++++++ LUFA/Drivers/Board/Buttons.h | 2 + LUFA/Drivers/Board/LEDs.h | 2 + .../lufa_drivers_board_names.xml | 9 ++ 9 files changed, 262 insertions(+), 2 deletions(-) create mode 100644 LUFA/Drivers/Board/AVR8/STANGE_ISP/Buttons.h create mode 100644 LUFA/Drivers/Board/AVR8/STANGE_ISP/LEDs.h diff --git a/BuildTests/BoardDriverTest/BoardDeviceMap.cfg b/BuildTests/BoardDriverTest/BoardDeviceMap.cfg index f5755882fb..28062ef2bf 100644 --- a/BuildTests/BoardDriverTest/BoardDeviceMap.cfg +++ b/BuildTests/BoardDriverTest/BoardDeviceMap.cfg @@ -18,7 +18,7 @@ # # And re-run the makefile. Note that each board may have only one target. # ============================================================================= -# +# # # ----------------- AVR8 Boards ------------------ BOARD_ADAFRUITU4 = AVR8 : atmega32u4 : @@ -69,6 +69,7 @@ BOARD_USBTINYMKII = AVR8 : at90usb162 : BOARD_USER = AVR8 : at90usb1287 : BOARD_XPLAIN = AVR8 : at90usb1287 : BOARD_XPLAIN_REV1 = AVR8 : at90usb1287 : +BOARD_STANGE_ISP = AVR8 : at90usb162 : # # ----------------- XMEGA Boards ----------------- BOARD_A3BU_XPLAINED = XMEGA : atxmega256a3bu : @@ -79,4 +80,4 @@ BOARD_EVK1100 = UC3 : uc3a0512 : BOARD_EVK1101 = UC3 : uc3b0256 : BOARD_EVK1104 = UC3 : uc3a3256 : BOARD_UC3A3_XPLAINED = UC3 : uc3a3256 : -# \ No newline at end of file +# diff --git a/LUFA/Common/BoardTypes.h b/LUFA/Common/BoardTypes.h index 104f5db031..7928d9afd7 100644 --- a/LUFA/Common/BoardTypes.h +++ b/LUFA/Common/BoardTypes.h @@ -225,6 +225,9 @@ /** Selects the USB2AX version 3.1 specific board drivers, including the Button and LEDs drivers. */ #define BOARD_USB2AX_V31 53 + /** Selects the Stange-ISP specific board drivers, including the Button and LEDs drivers. */ + #define BOARD_STANGE_ISP 54 + #if !defined(__DOXYGEN__) #define BOARD_ BOARD_NONE diff --git a/LUFA/DoxygenPages/ChangeLog.txt b/LUFA/DoxygenPages/ChangeLog.txt index f82a5e43a5..f6bb67a12d 100644 --- a/LUFA/DoxygenPages/ChangeLog.txt +++ b/LUFA/DoxygenPages/ChangeLog.txt @@ -12,6 +12,7 @@ * - Added support for the Arduino Leonardo board * - Added support for the Atmel UC3-A3 Xplained board * - Added support for the Xevelabs USB2AX revision 3.1 board + * - Added support for the Dimex Stange-ISP board (thanks to Gerhard Wesser) * - Added new \c doxygen_upgrade and \c doxygen_create targets to the DOXYGEN build system module * - Library Applications: * - Added a different device serial number when the AVRISP-MKII Clone project is in libUSB compatibility mode, so that diff --git a/LUFA/DoxygenPages/DeviceSupport.txt b/LUFA/DoxygenPages/DeviceSupport.txt index e892123c7b..ac95831e51 100644 --- a/LUFA/DoxygenPages/DeviceSupport.txt +++ b/LUFA/DoxygenPages/DeviceSupport.txt @@ -116,6 +116,7 @@ * - Paranoid Studio's US2AX (V1, V2 and V3 hardware revisions) * - PJRC Teensy (1.x and 2.x versions) * - Sparkfun U2 Breakout Board + * - Stange ISP Programmer Board * - TCNISO Blackcat USB JTAG * - Tempusdictum Benito * - Tom's USBTINY-MKII (all revisions and versions) diff --git a/LUFA/Drivers/Board/AVR8/STANGE_ISP/Buttons.h b/LUFA/Drivers/Board/AVR8/STANGE_ISP/Buttons.h new file mode 100644 index 0000000000..b3174a5ab9 --- /dev/null +++ b/LUFA/Drivers/Board/AVR8/STANGE_ISP/Buttons.h @@ -0,0 +1,103 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2012. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaim all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +/** \file + * \brief Board specific button driver header for the Dimex Stange-ISP board. + * \copydetails Group_Buttons_STANGE_ISP + * + * \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_STANGE_ISP STANGE_ISP + * \brief Board specific Buttons driver header for the Dimex Stange-ISP. + * + * Board specific Buttons driver header for the Dimex Stange-ISP board (http://www.diamex.de/dxshop/USB-ISP-Programmer-fuer-AVR-STM32-NXP-Cortex). + * + * + * + * + *
NameInfoActive LevelPort Pin
BUTTONS_BUTTON1HWB ButtonLowPORTD.7
+ * + * @{ + */ + +#ifndef __BUTTONS_STANGE_ISP_H__ +#define __BUTTONS_STANGE_ISP_H__ + + /* Includes: */ + #include "../../../../Common/Common.h" + + /* Enable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + extern "C" { + #endif + + /* Preprocessor Checks: */ + #if !defined(__INCLUDE_FROM_BUTTONS_H) + #error Do not include this file directly. Include LUFA/Drivers/Board/Buttons.h instead. + #endif + + /* Public Interface - May be used in end-application: */ + /* Macros: */ + /** Button mask for the first button on the board. */ + #define BUTTONS_BUTTON1 (1 << 7) + + /* Inline Functions: */ + #if !defined(__DOXYGEN__) + static inline void Buttons_Init(void) + { + DDRD &= ~BUTTONS_BUTTON1; + PORTD |= BUTTONS_BUTTON1; + } + + static inline void Buttons_Disable(void) + { + DDRD &= ~BUTTONS_BUTTON1; + PORTD &= ~BUTTONS_BUTTON1; + } + + static inline uint8_t Buttons_GetStatus(void) ATTR_WARN_UNUSED_RESULT; + static inline uint8_t Buttons_GetStatus(void) + { + return ((PIND & BUTTONS_BUTTON1) ^ BUTTONS_BUTTON1); + } + #endif + + /* Disable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + } + #endif + +#endif + +/** @} */ + diff --git a/LUFA/Drivers/Board/AVR8/STANGE_ISP/LEDs.h b/LUFA/Drivers/Board/AVR8/STANGE_ISP/LEDs.h new file mode 100644 index 0000000000..2128ad57a4 --- /dev/null +++ b/LUFA/Drivers/Board/AVR8/STANGE_ISP/LEDs.h @@ -0,0 +1,138 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2012. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaim all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +/** \file + * \brief Board specific LED driver header for the Dimex Stange-ISP board. + * \copydetails Group_LEDs_STANGE_ISP + * + * \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_STANGE_ISP STANGE_ISP + * \brief Board specific LED driver header for the Dimex Stange-ISP board. + * + * Board specific LED driver header for the Dimex Stange-ISP board (http://www.diamex.de/dxshop/USB-ISP-Programmer-fuer-AVR-STM32-NXP-Cortex). + * + * + * + * + * + *
NameColorInfoActive LevelPort Pin
LEDS_LED1GreenGeneral IndicatorLowPORTD.0
LEDS_LED2RedGeneral IndicatorLowPORTD.1
+ * + * @{ + */ + +#ifndef __LEDS_STANGE_ISP_LEDS_H__ +#define __LEDS_STANGE_ISP_LEDS_H__ + + /* Includes: */ + #include "../../../../Common/Common.h" + + /* Enable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + extern "C" { + #endif + + /* Preprocessor Checks: */ + #if !defined(__INCLUDE_FROM_LEDS_H) + #error Do not include this file directly. Include LUFA/Drivers/Board/LEDS.h instead. + #endif + + /* Public Interface - May be used in end-application: */ + /* Macros: */ + /** LED mask for the first LED on the board. */ + #define LEDS_LED1 (1 << 0) + + /** LED mask for the second LED on the board. */ + #define LEDS_LED2 (1 << 1) + + /** LED mask for all the LEDs on the board. */ + #define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2) + + /** LED mask for none of the board LEDs. */ + #define LEDS_NO_LEDS 0 + + /* Inline Functions: */ + #if !defined(__DOXYGEN__) + static inline void LEDs_Init(void) + { + DDRD |= LEDS_ALL_LEDS; + PORTD |= LEDS_ALL_LEDS; + } + + static inline void LEDs_Disable(void) + { + DDRD &= ~LEDS_ALL_LEDS; + PORTD &= ~LEDS_ALL_LEDS; + } + + static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask) + { + PORTD &= ~LEDMask; + } + + static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask) + { + PORTD |= LEDMask; + } + + static inline void LEDs_SetAllLEDs (const uint8_t LEDMask) + { + PORTD = ((PORTD | LEDS_ALL_LEDS) & ~LEDMask); + } + + static inline void LEDs_ChangeLEDs ( const uint8_t LEDMask, const uint8_t ActiveMask) + { + PORTD = ((PORTD | LEDMask) & ~ActiveMask); + } + + static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) + { + PIND = LEDMask; + } + + static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; + static inline uint8_t LEDs_GetLEDs(void) + { + return (~PORTD & LEDS_ALL_LEDS); + } + #endif + + /* Disable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + } + #endif + +#endif + +/** @} */ + diff --git a/LUFA/Drivers/Board/Buttons.h b/LUFA/Drivers/Board/Buttons.h index 31a8653a28..5c9cd75d51 100644 --- a/LUFA/Drivers/Board/Buttons.h +++ b/LUFA/Drivers/Board/Buttons.h @@ -151,6 +151,8 @@ #include "AVR8/OLIMEXISPMK2/Buttons.h" #elif (BOARD == BOARD_UC3A3_XPLAINED) #include "UC3/UC3A3_XPLAINED/Buttons.h" + #elif (BOARD == BOARD_STANGE_ISP) + #include "AVR8/STANGE_ISP/Buttons.h" #else #include "Board/Buttons.h" #endif diff --git a/LUFA/Drivers/Board/LEDs.h b/LUFA/Drivers/Board/LEDs.h index 91734dbfed..dd7fd1181e 100644 --- a/LUFA/Drivers/Board/LEDs.h +++ b/LUFA/Drivers/Board/LEDs.h @@ -197,6 +197,8 @@ #include "AVR8/LEONARDO/LEDs.h" #elif (BOARD == BOARD_UC3A3_XPLAINED) #include "UC3/UC3A3_XPLAINED/LEDs.h" + #elif (BOARD == BOARD_STANGE_ISP) + #include "AVR8/STANGE_ISP/LEDs.h" #else #include "Board/LEDs.h" #endif diff --git a/LUFA/StudioIntegration/lufa_drivers_board_names.xml b/LUFA/StudioIntegration/lufa_drivers_board_names.xml index 0236222f07..8212096187 100644 --- a/LUFA/StudioIntegration/lufa_drivers_board_names.xml +++ b/LUFA/StudioIntegration/lufa_drivers_board_names.xml @@ -463,6 +463,15 @@ + + + + + + + + +