aboutsummaryrefslogtreecommitdiff
path: root/drivers/avr
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/avr')
-rw-r--r--drivers/avr/pro_micro.h324
1 files changed, 0 insertions, 324 deletions
diff --git a/drivers/avr/pro_micro.h b/drivers/avr/pro_micro.h
deleted file mode 100644
index 762a99a05..000000000
--- a/drivers/avr/pro_micro.h
+++ /dev/null
@@ -1,324 +0,0 @@
1/*
2 pins_arduino.h - Pin definition functions for Arduino
3 Part of Arduino - http://www.arduino.cc/
4
5 Copyright (c) 2007 David A. Mellis
6
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Lesser General Public
9 License as published by the Free Software Foundation; either
10 version 2.1 of the License, or (at your option) any later version.
11
12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Lesser General Public License for more details.
16
17 You should have received a copy of the GNU Lesser General
18 Public License along with this library; if not, write to the
19 Free Software Foundation, Inc., 59 Temple Place, Suite 330,
20 Boston, MA 02111-1307 USA
21
22 $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $
23*/
24
25#ifndef Pins_Arduino_h
26#define Pins_Arduino_h
27
28#include <avr/pgmspace.h>
29
30// Workaround for wrong definitions in "iom32u4.h".
31// This should be fixed in the AVR toolchain.
32#undef UHCON
33#undef UHINT
34#undef UHIEN
35#undef UHADDR
36#undef UHFNUM
37#undef UHFNUML
38#undef UHFNUMH
39#undef UHFLEN
40#undef UPINRQX
41#undef UPINTX
42#undef UPNUM
43#undef UPRST
44#undef UPCONX
45#undef UPCFG0X
46#undef UPCFG1X
47#undef UPSTAX
48#undef UPCFG2X
49#undef UPIENX
50#undef UPDATX
51#undef TCCR2A
52#undef WGM20
53#undef WGM21
54#undef COM2B0
55#undef COM2B1
56#undef COM2A0
57#undef COM2A1
58#undef TCCR2B
59#undef CS20
60#undef CS21
61#undef CS22
62#undef WGM22
63#undef FOC2B
64#undef FOC2A
65#undef TCNT2
66#undef TCNT2_0
67#undef TCNT2_1
68#undef TCNT2_2
69#undef TCNT2_3
70#undef TCNT2_4
71#undef TCNT2_5
72#undef TCNT2_6
73#undef TCNT2_7
74#undef OCR2A
75#undef OCR2_0
76#undef OCR2_1
77#undef OCR2_2
78#undef OCR2_3
79#undef OCR2_4
80#undef OCR2_5
81#undef OCR2_6
82#undef OCR2_7
83#undef OCR2B
84#undef OCR2_0
85#undef OCR2_1
86#undef OCR2_2
87#undef OCR2_3
88#undef OCR2_4
89#undef OCR2_5
90#undef OCR2_6
91#undef OCR2_7
92
93#define NUM_DIGITAL_PINS 30
94#define NUM_ANALOG_INPUTS 12
95
96#define TX_RX_LED_INIT DDRD |= (1 << 5), DDRB |= (1 << 0)
97#define TXLED0 PORTD |= (1 << 5)
98#define TXLED1 PORTD &= ~(1 << 5)
99#define RXLED0 PORTB |= (1 << 0)
100#define RXLED1 PORTB &= ~(1 << 0)
101
102static const uint8_t SDA = 2;
103static const uint8_t SCL = 3;
104#define LED_BUILTIN 13
105
106// Map SPI port to 'new' pins D14..D17
107static const uint8_t SS = 17;
108static const uint8_t MOSI = 16;
109static const uint8_t MISO = 14;
110static const uint8_t SCK = 15;
111
112// Mapping of analog pins as digital I/O
113// A6-A11 share with digital pins
114static const uint8_t ADC0 = 18;
115static const uint8_t ADC1 = 19;
116static const uint8_t ADC2 = 20;
117static const uint8_t ADC3 = 21;
118static const uint8_t ADC4 = 22;
119static const uint8_t ADC5 = 23;
120static const uint8_t ADC6 = 24; // D4
121static const uint8_t ADC7 = 25; // D6
122static const uint8_t ADC8 = 26; // D8
123static const uint8_t ADC9 = 27; // D9
124static const uint8_t ADC10 = 28; // D10
125static const uint8_t ADC11 = 29; // D12
126
127#define digitalPinToPCICR(p) ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCICR) : ((uint8_t *)0))
128#define digitalPinToPCICRbit(p) 0
129#define digitalPinToPCMSK(p) ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCMSK0) : ((uint8_t *)0))
130#define digitalPinToPCMSKbit(p) (((p) >= 8 && (p) <= 11) ? (p)-4 : ((p) == 14 ? 3 : ((p) == 15 ? 1 : ((p) == 16 ? 2 : ((p) == 17 ? 0 : (p - A8 + 4))))))
131
132// __AVR_ATmega32U4__ has an unusual mapping of pins to channels
133extern const uint8_t PROGMEM analog_pin_to_channel_PGM[];
134#define analogPinToChannel(P) (pgm_read_byte(analog_pin_to_channel_PGM + (P)))
135
136#define digitalPinToInterrupt(p) ((p) == 0 ? 2 : ((p) == 1 ? 3 : ((p) == 2 ? 1 : ((p) == 3 ? 0 : ((p) == 7 ? 4 : NOT_AN_INTERRUPT)))))
137
138#ifdef ARDUINO_MAIN
139
140// On the Arduino board, digital pins are also used
141// for the analog output (software PWM). Analog input
142// pins are a separate set.
143
144// ATMEL ATMEGA32U4 / ARDUINO LEONARDO
145//
146// D0 PD2 RXD1/INT2
147// D1 PD3 TXD1/INT3
148// D2 PD1 SDA SDA/INT1
149// D3# PD0 PWM8/SCL OC0B/SCL/INT0
150// D4 A6 PD4 ADC8
151// D5# PC6 ??? OC3A/#OC4A
152// D6# A7 PD7 FastPWM #OC4D/ADC10
153// D7 PE6 INT6/AIN0
154//
155// D8 A8 PB4 ADC11/PCINT4
156// D9# A9 PB5 PWM16 OC1A/#OC4B/ADC12/PCINT5
157// D10# A10 PB6 PWM16 OC1B/0c4B/ADC13/PCINT6
158// D11# PB7 PWM8/16 0C0A/OC1C/#RTS/PCINT7
159// D12 A11 PD6 T1/#OC4D/ADC9
160// D13# PC7 PWM10 CLK0/OC4A
161//
162// A0 D18 PF7 ADC7
163// A1 D19 PF6 ADC6
164// A2 D20 PF5 ADC5
165// A3 D21 PF4 ADC4
166// A4 D22 PF1 ADC1
167// A5 D23 PF0 ADC0
168//
169// New pins D14..D17 to map SPI port to digital pins
170//
171// MISO D14 PB3 MISO,PCINT3
172// SCK D15 PB1 SCK,PCINT1
173// MOSI D16 PB2 MOSI,PCINT2
174// SS D17 PB0 RXLED,SS/PCINT0
175//
176// Connected LEDs on board for TX and RX
177// TXLED D24 PD5 XCK1
178// RXLED D17 PB0
179// HWB PE2 HWB
180
181// these arrays map port names (e.g. port B) to the
182// appropriate addresses for various functions (e.g. reading
183// and writing)
184const uint16_t PROGMEM port_to_mode_PGM[] = {
185 NOT_A_PORT, NOT_A_PORT, (uint16_t)&DDRB, (uint16_t)&DDRC, (uint16_t)&DDRD, (uint16_t)&DDRE, (uint16_t)&DDRF,
186};
187
188const uint16_t PROGMEM port_to_output_PGM[] = {
189 NOT_A_PORT, NOT_A_PORT, (uint16_t)&PORTB, (uint16_t)&PORTC, (uint16_t)&PORTD, (uint16_t)&PORTE, (uint16_t)&PORTF,
190};
191
192const uint16_t PROGMEM port_to_input_PGM[] = {
193 NOT_A_PORT, NOT_A_PORT, (uint16_t)&PINB, (uint16_t)&PINC, (uint16_t)&PIND, (uint16_t)&PINE, (uint16_t)&PINF,
194};
195
196const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
197 PD, // D0 - PD2
198 PD, // D1 - PD3
199 PD, // D2 - PD1
200 PD, // D3 - PD0
201 PD, // D4 - PD4
202 PC, // D5 - PC6
203 PD, // D6 - PD7
204 PE, // D7 - PE6
205
206 PB, // D8 - PB4
207 PB, // D9 - PB5
208 PB, // D10 - PB6
209 PB, // D11 - PB7
210 PD, // D12 - PD6
211 PC, // D13 - PC7
212
213 PB, // D14 - MISO - PB3
214 PB, // D15 - SCK - PB1
215 PB, // D16 - MOSI - PB2
216 PB, // D17 - SS - PB0
217
218 PF, // D18 - A0 - PF7
219 PF, // D19 - A1 - PF6
220 PF, // D20 - A2 - PF5
221 PF, // D21 - A3 - PF4
222 PF, // D22 - A4 - PF1
223 PF, // D23 - A5 - PF0
224
225 PD, // D24 - PD5
226 PD, // D25 / D6 - A7 - PD7
227 PB, // D26 / D8 - A8 - PB4
228 PB, // D27 / D9 - A9 - PB5
229 PB, // D28 / D10 - A10 - PB6
230 PD, // D29 / D12 - A11 - PD6
231};
232
233const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = {
234 _BV(2), // D0 - PD2
235 _BV(3), // D1 - PD3
236 _BV(1), // D2 - PD1
237 _BV(0), // D3 - PD0
238 _BV(4), // D4 - PD4
239 _BV(6), // D5 - PC6
240 _BV(7), // D6 - PD7
241 _BV(6), // D7 - PE6
242
243 _BV(4), // D8 - PB4
244 _BV(5), // D9 - PB5
245 _BV(6), // D10 - PB6
246 _BV(7), // D11 - PB7
247 _BV(6), // D12 - PD6
248 _BV(7), // D13 - PC7
249
250 _BV(3), // D14 - MISO - PB3
251 _BV(1), // D15 - SCK - PB1
252 _BV(2), // D16 - MOSI - PB2
253 _BV(0), // D17 - SS - PB0
254
255 _BV(7), // D18 - A0 - PF7
256 _BV(6), // D19 - A1 - PF6
257 _BV(5), // D20 - A2 - PF5
258 _BV(4), // D21 - A3 - PF4
259 _BV(1), // D22 - A4 - PF1
260 _BV(0), // D23 - A5 - PF0
261
262 _BV(5), // D24 - PD5
263 _BV(7), // D25 / D6 - A7 - PD7
264 _BV(4), // D26 / D8 - A8 - PB4
265 _BV(5), // D27 / D9 - A9 - PB5
266 _BV(6), // D28 / D10 - A10 - PB6
267 _BV(6), // D29 / D12 - A11 - PD6
268};
269
270const uint8_t PROGMEM digital_pin_to_timer_PGM[] = {
271 NOT_ON_TIMER, NOT_ON_TIMER, NOT_ON_TIMER, TIMER0B, /* 3 */
272 NOT_ON_TIMER, TIMER3A, /* 5 */
273 TIMER4D, /* 6 */
274 NOT_ON_TIMER,
275
276 NOT_ON_TIMER, TIMER1A, /* 9 */
277 TIMER1B, /* 10 */
278 TIMER0A, /* 11 */
279
280 NOT_ON_TIMER, TIMER4A, /* 13 */
281
282 NOT_ON_TIMER, NOT_ON_TIMER, NOT_ON_TIMER, NOT_ON_TIMER, NOT_ON_TIMER, NOT_ON_TIMER,
283
284 NOT_ON_TIMER, NOT_ON_TIMER, NOT_ON_TIMER, NOT_ON_TIMER, NOT_ON_TIMER, NOT_ON_TIMER, NOT_ON_TIMER, NOT_ON_TIMER, NOT_ON_TIMER, NOT_ON_TIMER,
285};
286
287const uint8_t PROGMEM analog_pin_to_channel_PGM[] = {
288 7, // A0 PF7 ADC7
289 6, // A1 PF6 ADC6
290 5, // A2 PF5 ADC5
291 4, // A3 PF4 ADC4
292 1, // A4 PF1 ADC1
293 0, // A5 PF0 ADC0
294 8, // A6 D4 PD4 ADC8
295 10, // A7 D6 PD7 ADC10
296 11, // A8 D8 PB4 ADC11
297 12, // A9 D9 PB5 ADC12
298 13, // A10 D10 PB6 ADC13
299 9 // A11 D12 PD6 ADC9
300};
301
302#endif /* ARDUINO_MAIN */
303
304// These serial port names are intended to allow libraries and architecture-neutral
305// sketches to automatically default to the correct port name for a particular type
306// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
307// the first hardware serial port whose RX/TX pins are not dedicated to another use.
308//
309// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor
310//
311// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial
312//
313// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library
314//
315// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins.
316//
317// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX
318// pins are NOT connected to anything by default.
319#define SERIAL_PORT_MONITOR Serial
320#define SERIAL_PORT_USBVIRTUAL Serial
321#define SERIAL_PORT_HARDWARE Serial1
322#define SERIAL_PORT_HARDWARE_OPEN Serial1
323
324#endif /* Pins_Arduino_h */