Christian Kroll
11 years ago
14 changed files with 338 additions and 76 deletions
@ -0,0 +1,89 @@ |
|||
/**
|
|||
* @file lolshield_joystick.c |
|||
* @brief Driver for Jimmie Rodgers' LoL Shield |
|||
* @author Christian Kroll |
|||
* @date 2014 |
|||
* @copyright GNU Public License 2 or later |
|||
* @see http://jimmieprodgers.com/kits/lolshield/
|
|||
* |
|||
* This driver prepares the A0-A5 pins of an Ardunino device to serve as |
|||
* joystick input lines. |
|||
* |
|||
* This program is free software; you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation; either version 2 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program; if not, write to the Free Software |
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA |
|||
*/ |
|||
|
|||
#include <avr/io.h> |
|||
|
|||
void joy_init(){ |
|||
#if defined (__AVR_ATmega48__) || \ |
|||
defined (__AVR_ATmega48P__) || \ |
|||
defined (__AVR_ATmega88__) || \ |
|||
defined (__AVR_ATmega88P__) || \ |
|||
defined (__AVR_ATmega168__) || \ |
|||
defined (__AVR_ATmega168P__) || \ |
|||
defined (__AVR_ATmega328__) || \ |
|||
defined (__AVR_ATmega328P__) |
|||
/*
|
|||
* A0 => PC0 => JOYISUP |
|||
* A1 => PC1 => JOYISDOWN |
|||
* A2 => PC2 => JOYISLEFT |
|||
* A3 => PC3 => JOYISRIGHT |
|||
* A4 => PC4 => NC (JOYIS2GND) |
|||
* A5 => PC5 => JOYISFIRE |
|||
*/ |
|||
|
|||
// set joystick pins to input
|
|||
DDRC &= ~(_BV(PINC0) | _BV(PINC1) | _BV(PINC2) | |
|||
_BV(PINC3) | _BV(PINC4) | _BV(PINC5)); |
|||
// activate pullups
|
|||
PORTC |= _BV(PINC0) | _BV(PINC1) | _BV(PINC2) | |
|||
_BV(PINC3) | _BV(PINC4) | _BV(PINC5); |
|||
#elif defined (__AVR_ATmega32U4__) |
|||
/*
|
|||
* A0 => PF7 => JOYISUP |
|||
* A1 => PF6 => JOYISDOWN |
|||
* A2 => PF5 => JOYISLEFT |
|||
* A3 => PF4 => JOYISRIGHT |
|||
* A4 => PF1 => NC (JOYIS2GND) |
|||
* A5 => PF0 => JOYISFIRE |
|||
*/ |
|||
|
|||
// set joystick pins to input
|
|||
DDRF &= ~(_BV(PINF7) | _BV(PINF6) | _BV(PINF5) | |
|||
_BV(PINF4) | _BV(PINF1) | _BV(PINF0)); |
|||
// activate pullups
|
|||
PORTF |= _BV(PINF7) | _BV(PINF6) | _BV(PINF5) | _BV(PINF4) | |
|||
_BV(PINF1) | _BV(PINF0); |
|||
#elif defined (__AVR_ATmega1280__) || \ |
|||
defined (__AVR_ATmega2560__) |
|||
/*
|
|||
* A0 => PF0 => JOYISUP |
|||
* A1 => PF1 => JOYISDOWN |
|||
* A2 => PF2 => JOYISLEFT |
|||
* A3 => PF3 => JOYISRIGHT |
|||
* A4 => PF4 => NC (JOYIS2GND) |
|||
* A5 => PF5 => JOYISFIRE |
|||
*/ |
|||
|
|||
// set joystick pins to input
|
|||
DDRF &= ~(_BV(PINF0) | _BV(PINF1) | _BV(PINF2) | |
|||
_BV(PINF3) | _BV(PINF4) | _BV(PINF5)); |
|||
// activate pullups
|
|||
PORTF |= _BV(PINF0) | _BV(PINF1) | _BV(PINF2) | |
|||
_BV(PINF3) | _BV(PINF4) | _BV(PINF5); |
|||
#else |
|||
# error "Unsupported Arduino board!" |
|||
#endif |
|||
} |
Loading…
Reference in new issue