2014-02-03 05:12:20 +00:00
/* Copyright (C) 2011-2014 by Jacob Alexander
2014-06-26 07:54:39 +00:00
*
2011-09-30 05:22:19 +00:00
* Permission is hereby granted , free of charge , to any person obtaining a copy
* of this software and associated documentation files ( the " Software " ) , to deal
* in the Software without restriction , including without limitation the rights
* to use , copy , modify , merge , publish , distribute , sublicense , and / or sell
* copies of the Software , and to permit persons to whom the Software is
* furnished to do so , subject to the following conditions :
2014-06-26 07:54:39 +00:00
*
2011-09-30 05:22:19 +00:00
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software .
2014-06-26 07:54:39 +00:00
*
2011-09-30 05:22:19 +00:00
* THE SOFTWARE IS PROVIDED " AS IS " , WITHOUT WARRANTY OF ANY KIND , EXPRESS OR
* IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY ,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT . IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM , DAMAGES OR OTHER
* LIABILITY , WHETHER IN AN ACTION OF CONTRACT , TORT OR OTHERWISE , ARISING FROM ,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE .
*/
// ----- Includes -----
2013-01-26 20:43:59 +00:00
// Compiler Includes
# include <Lib/MainLib.h>
2011-09-30 05:22:19 +00:00
// Project Includes
# include "led.h"
// ----- Functions -----
// Error LED Setup
2011-10-01 07:54:18 +00:00
inline void init_errorLED ( )
2011-09-30 05:22:19 +00:00
{
2013-01-26 20:43:59 +00:00
// AVR
# if defined(_at90usb162_) || defined(_atmega32u4_) || defined(_at90usb646_) || defined(_at90usb1286_)
2011-09-30 05:22:19 +00:00
// Use pin D6 as an output (LED)
DDRD | = ( 1 < < 6 ) ;
2013-01-26 20:43:59 +00:00
// ARM
2014-02-03 05:12:20 +00:00
# elif defined(_mk20dx128_) || defined(_mk20dx256_)
2013-01-26 20:43:59 +00:00
2014-04-13 04:09:35 +00:00
// Enable pin
GPIOC_PDDR | = ( 1 < < 5 ) ;
2014-06-26 07:54:39 +00:00
// Setup pin - Pin 13 -> C5 - See Lib/pin_map.teensy3 for more details on pins
2013-01-26 20:43:59 +00:00
PORTC_PCR5 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX ( 1 ) ;
2015-01-11 03:55:28 +00:00
// MCHCK / Kiibohd-dfu
2014-06-26 07:54:39 +00:00
# elif defined(_mk20dx128vlf5_)
2014-08-01 08:26:25 +00:00
/* Actual MCHCK
2014-06-26 07:54:39 +00:00
// Enable pin
GPIOB_PDDR | = ( 1 < < 16 ) ;
// Setup pin - B16 - See Lib/pin_map.mchck for more details on pins
PORTB_PCR16 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX ( 1 ) ;
2014-08-01 08:26:25 +00:00
*/
// Kiibohd MCHCK Variant
// Enable pin
GPIOA_PDDR | = ( 1 < < 19 ) ;
// Setup pin - A19 - See Lib/pin_map.mchck for more details on pins
PORTA_PCR19 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX ( 1 ) ;
2014-06-26 07:54:39 +00:00
2015-01-11 03:55:28 +00:00
// Kiibohd-dfu
# elif defined(_mk20dx256vlh7_)
// Kiibohd-dfu
// Enable pin
GPIOA_PDDR | = ( 1 < < 5 ) ;
// Setup pin - A5 - See Lib/pin_map.mchck for more details on pins
PORTA_PCR5 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX ( 1 ) ;
2013-01-26 20:43:59 +00:00
# endif
2011-09-30 05:22:19 +00:00
}
// Error LED Control
2011-10-01 07:54:18 +00:00
inline void errorLED ( uint8_t on )
2011-09-30 05:22:19 +00:00
{
2013-01-26 20:43:59 +00:00
// AVR
# if defined(_at90usb162_) || defined(_atmega32u4_) || defined(_at90usb646_) || defined(_at90usb1286_)
2011-09-30 05:22:19 +00:00
// Error LED On (D6)
if ( on ) {
PORTD | = ( 1 < < 6 ) ;
}
// Error LED Off
else {
PORTD & = ~ ( 1 < < 6 ) ;
}
2013-01-26 20:43:59 +00:00
// ARM
2014-02-03 05:12:20 +00:00
# elif defined(_mk20dx128_) || defined(_mk20dx256_)
2013-01-26 20:43:59 +00:00
// Error LED On (C5)
if ( on ) {
GPIOC_PSOR | = ( 1 < < 5 ) ;
}
// Error LED Off
else {
GPIOC_PCOR | = ( 1 < < 5 ) ;
}
2014-06-26 07:54:39 +00:00
// MCHCK
# elif defined(_mk20dx128vlf5_)
2014-08-01 08:26:25 +00:00
/* Actual MCHCK
2014-06-26 07:54:39 +00:00
// Error LED On (B16)
if ( on ) {
GPIOB_PSOR | = ( 1 < < 16 ) ;
}
// Error LED Off
else {
GPIOB_PCOR | = ( 1 < < 16 ) ;
}
2014-08-01 08:26:25 +00:00
*/
// Kiibohd MCHCK Variant
// Error LED On (A19)
if ( on ) {
GPIOA_PSOR | = ( 1 < < 19 ) ;
}
// Error LED Off
else {
GPIOA_PCOR | = ( 1 < < 19 ) ;
}
2014-06-26 07:54:39 +00:00
2015-01-11 03:55:28 +00:00
// Kiibohd-dfu
# elif defined(_mk20dx256vlh7_)
// Kiibohd-dfu
// Error LED On (A5)
if ( on ) {
GPIOA_PSOR | = ( 1 < < 5 ) ;
}
// Error LED Off
else {
GPIOA_PCOR | = ( 1 < < 5 ) ;
}
2013-01-26 20:43:59 +00:00
# endif
2011-09-30 05:22:19 +00:00
}