You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
4.3 KiB
139 lines
4.3 KiB
/* |
|
pins_arduino.h - Pin definition functions for Arduino |
|
Part of Arduino - http://www.arduino.cc/ |
|
|
|
Copyright (c) 2007 David A. Mellis |
|
|
|
This library is free software; you can redistribute it and/or |
|
modify it under the terms of the GNU Lesser General Public |
|
License as published by the Free Software Foundation; either |
|
version 2.1 of the License, or (at your option) any later version. |
|
|
|
This library 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 |
|
Lesser General Public License for more details. |
|
|
|
You should have received a copy of the GNU Lesser General |
|
Public License along with this library; if not, write to the |
|
Free Software Foundation, Inc., 59 Temple Place, Suite 330, |
|
Boston, MA 02111-1307 USA |
|
|
|
$Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ |
|
*/ |
|
|
|
#ifndef Pins_Arduino_h |
|
#define Pins_Arduino_h |
|
|
|
#ifdef __cplusplus |
|
extern "C" { |
|
#endif |
|
|
|
#include <avr/pgmspace.h> |
|
|
|
|
|
#define NOT_A_PIN 0 |
|
#define NOT_A_PORT 0 |
|
#define PA 1 |
|
#define PB 2 |
|
#define PC 3 |
|
#define PD 4 |
|
#define PE 5 |
|
#define PF 6 |
|
#define PG 7 |
|
#define PH 8 |
|
#define PJ 10 |
|
#define PK 11 |
|
#define PL 12 |
|
|
|
#define NOT_ON_TIMER 0 |
|
#define TIMER0A 1 |
|
#define TIMER0B 2 |
|
#define TIMER1A 3 |
|
#define TIMER1B 4 |
|
#define TIMER2 5 |
|
#define TIMER2A 6 |
|
#define TIMER2B 7 |
|
|
|
#define TIMER3A 8 |
|
#define TIMER3B 9 |
|
#define TIMER3C 10 |
|
#define TIMER4A 11 |
|
#define TIMER4B 12 |
|
#define TIMER4C 13 |
|
#define TIMER4D 14 |
|
#define TIMER5A 15 |
|
#define TIMER5B 16 |
|
#define TIMER5C 17 |
|
|
|
|
|
#define NUM_DIGITAL_PINS 71 |
|
#define NUM_ANALOG_INPUTS 16 |
|
#define analogInputToDigitalPin(p) ((p < 16) ? (p) + 54 : -1) |
|
#define digitalPinHasPWM(p) (((p) >= 2 && (p) <= 13) || ((p) >= 44 && (p)<= 46)) |
|
|
|
const static uint8_t SS = 53; |
|
const static uint8_t MOSI = 51; |
|
const static uint8_t MISO = 50; |
|
const static uint8_t SCK = 52; |
|
|
|
const static uint8_t SDA = 20; |
|
const static uint8_t SCL = 21; |
|
const static uint8_t LED_BUILTIN = 13; |
|
|
|
const static uint8_t A0 = 54; |
|
const static uint8_t A1 = 55; |
|
const static uint8_t A2 = 56; |
|
const static uint8_t A3 = 57; |
|
const static uint8_t A4 = 58; |
|
const static uint8_t A5 = 59; |
|
const static uint8_t A6 = 60; |
|
const static uint8_t A7 = 61; |
|
const static uint8_t A8 = 62; |
|
const static uint8_t A9 = 63; |
|
const static uint8_t A10 = 64; |
|
const static uint8_t A11 = 65; |
|
const static uint8_t A12 = 66; |
|
const static uint8_t A13 = 67; |
|
const static uint8_t A14 = 68; |
|
const static uint8_t A15 = 69; |
|
|
|
// A majority of the pins are NOT PCINTs, SO BE WARNED (i.e. you cannot use them as receive pins) |
|
// Only pins available for RECEIVE (TRANSMIT can be on any pin): |
|
// (I've deliberately left out pin mapping to the Hardware USARTs - seems senseless to me) |
|
// Pins: 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69 |
|
|
|
#define digitalPinToPCICR(p) ( (((p) >= 10) && ((p) <= 13)) || \ |
|
(((p) >= 50) && ((p) <= 53)) || \ |
|
(((p) >= 62) && ((p) <= 69)) ? (&PCICR) : ((uint8_t *)0) ) |
|
|
|
#define digitalPinToPCICRbit(p) ( (((p) >= 10) && ((p) <= 13)) || (((p) >= 50) && ((p) <= 53)) ? 0 : \ |
|
( (((p) >= 62) && ((p) <= 69)) ? 2 : \ |
|
0 ) ) |
|
|
|
#define digitalPinToPCMSK(p) ( (((p) >= 10) && ((p) <= 13)) || (((p) >= 50) && ((p) <= 53)) ? (&PCMSK0) : \ |
|
( (((p) >= 62) && ((p) <= 69)) ? (&PCMSK2) : \ |
|
((uint8_t *)0) ) ) |
|
|
|
#define digitalPinToPCMSKbit(p) ( (((p) >= 10) && ((p) <= 13)) ? ((p) - 6) : \ |
|
( ((p) == 50) ? 3 : \ |
|
( ((p) == 51) ? 2 : \ |
|
( ((p) == 52) ? 1 : \ |
|
( ((p) == 53) ? 0 : \ |
|
( (((p) >= 62) && ((p) <= 69)) ? ((p) - 62) : \ |
|
0 ) ) ) ) ) ) |
|
|
|
// On the ATmega1280, the addresses of some of the port registers are |
|
// greater than 255, so we can't store them in uint8_t's. |
|
extern const uint16_t PROGMEM port_to_mode_PGM[]; |
|
extern const uint16_t PROGMEM port_to_input_PGM[]; |
|
extern const uint16_t PROGMEM port_to_output_PGM[]; |
|
|
|
extern const uint8_t PROGMEM digital_pin_to_port_PGM[]; |
|
extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[]; |
|
extern const uint8_t PROGMEM digital_pin_to_timer_PGM[]; |
|
|
|
#ifdef __cplusplus |
|
} // extern "C" |
|
#endif |
|
#endif
|
|
|