Skip to content

Commit 0e6002e

Browse files
author
Mike Grusin
committed
AVR boards V 1.1.6
Added variant for Digital Sandbox; set D3 to output/low on reset to prevent heating of speaker attached to expansion port.
1 parent d4288ae commit 0e6002e

File tree

4 files changed

+311
-1
lines changed

4 files changed

+311
-1
lines changed

IDE_Board_Manager/package_sparkfun_index.json

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,52 @@
5454
}
5555
],
5656
"toolsDependencies": []
57+
},
58+
{
59+
"name": "SparkFun AVR Boards",
60+
"architecture": "avr",
61+
"version": "1.1.6",
62+
"category": "Contributed",
63+
"url": "https://github.com/sparkfun/Arduino_Boards/raw/master/IDE_Board_Manager/sparkfunboards.1.1.6.tar.bz2",
64+
"archiveFileName": "sparkfunboards.1.1.6.tar.bz2",
65+
"checksum": "SHA256:049FA0DF51602120EC1BDAC19F440FC0CC448C23BB277DD0D8DF855C52ACD483"
66+
"size": "1159276",
67+
"help": {
68+
"online": "https://forums.sparkfun.com"
69+
},
70+
"boards": [
71+
{
72+
"name": "RedBoard"
73+
},
74+
{
75+
"name": "MaKey MaKey"
76+
},
77+
{
78+
"name": "Pro Micro"
79+
},
80+
{
81+
"name": "Fio v3"
82+
},
83+
{
84+
"name": "Qduino Mini"
85+
},
86+
{
87+
"name": "Digital Sandbox"
88+
},
89+
{
90+
"name": "Mega Pro"
91+
},
92+
{
93+
"name": "RedBot"
94+
},
95+
{
96+
"name": "Serial 7-segment Display"
97+
},
98+
{
99+
"name": "ATmega128RFA1 Dev Board"
100+
}
101+
],
102+
"toolsDependencies": []
57103
},
58104
{
59105
"name": "SparkFun SAMD Boards (dependency: Arduino SAMD Boards 1.6.5)",
1.11 MB
Binary file not shown.

sparkfun/avr/boards.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ digitalsandbox.build.mcu=atmega328p
220220
# Can run at less than 5V on battery, so run at only 8MHz
221221
digitalsandbox.build.f_cpu=8000000L
222222
digitalsandbox.build.core=arduino:arduino
223-
digitalsandbox.build.variant=arduino:standard
223+
digitalsandbox.build.variant=digitalsandbox
224224

225225

226226
################################################################################
Lines changed: 264 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,264 @@
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+
23+
#ifndef Pins_Arduino_h
24+
#define Pins_Arduino_h
25+
26+
#include <avr/pgmspace.h>
27+
28+
#define NUM_DIGITAL_PINS 20
29+
#define NUM_ANALOG_INPUTS 6
30+
#define analogInputToDigitalPin(p) ((p < 6) ? (p) + 14 : -1)
31+
32+
#if defined(__AVR_ATmega8__)
33+
#define digitalPinHasPWM(p) ((p) == 9 || (p) == 10 || (p) == 11)
34+
#else
35+
#define digitalPinHasPWM(p) ((p) == 3 || (p) == 5 || (p) == 6 || (p) == 9 || (p) == 10 || (p) == 11)
36+
#endif
37+
38+
#define PIN_SPI_SS (10)
39+
#define PIN_SPI_MOSI (11)
40+
#define PIN_SPI_MISO (12)
41+
#define PIN_SPI_SCK (13)
42+
43+
static const uint8_t SS = PIN_SPI_SS;
44+
static const uint8_t MOSI = PIN_SPI_MOSI;
45+
static const uint8_t MISO = PIN_SPI_MISO;
46+
static const uint8_t SCK = PIN_SPI_SCK;
47+
48+
#define PIN_WIRE_SDA (18)
49+
#define PIN_WIRE_SCL (19)
50+
51+
static const uint8_t SDA = PIN_WIRE_SDA;
52+
static const uint8_t SCL = PIN_WIRE_SCL;
53+
54+
#define LED_BUILTIN 13
55+
56+
#define PIN_A0 (14)
57+
#define PIN_A1 (15)
58+
#define PIN_A2 (16)
59+
#define PIN_A3 (17)
60+
#define PIN_A4 (18)
61+
#define PIN_A5 (19)
62+
#define PIN_A6 (20)
63+
#define PIN_A7 (21)
64+
65+
static const uint8_t A0 = PIN_A0;
66+
static const uint8_t A1 = PIN_A1;
67+
static const uint8_t A2 = PIN_A2;
68+
static const uint8_t A3 = PIN_A3;
69+
static const uint8_t A4 = PIN_A4;
70+
static const uint8_t A5 = PIN_A5;
71+
static const uint8_t A6 = PIN_A6;
72+
static const uint8_t A7 = PIN_A7;
73+
74+
#define digitalPinToPCICR(p) (((p) >= 0 && (p) <= 21) ? (&PCICR) : ((uint8_t *)0))
75+
#define digitalPinToPCICRbit(p) (((p) <= 7) ? 2 : (((p) <= 13) ? 0 : 1))
76+
#define digitalPinToPCMSK(p) (((p) <= 7) ? (&PCMSK2) : (((p) <= 13) ? (&PCMSK0) : (((p) <= 21) ? (&PCMSK1) : ((uint8_t *)0))))
77+
#define digitalPinToPCMSKbit(p) (((p) <= 7) ? (p) : (((p) <= 13) ? ((p) - 8) : ((p) - 14)))
78+
79+
#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : NOT_AN_INTERRUPT))
80+
81+
#ifdef ARDUINO_MAIN
82+
83+
// On the Arduino board, digital pins are also used
84+
// for the analog output (software PWM). Analog input
85+
// pins are a separate set.
86+
87+
// ATMEL ATMEGA8 & 168 / ARDUINO
88+
//
89+
// +-\/-+
90+
// PC6 1| |28 PC5 (AI 5)
91+
// (D 0) PD0 2| |27 PC4 (AI 4)
92+
// (D 1) PD1 3| |26 PC3 (AI 3)
93+
// (D 2) PD2 4| |25 PC2 (AI 2)
94+
// PWM+ (D 3) PD3 5| |24 PC1 (AI 1)
95+
// (D 4) PD4 6| |23 PC0 (AI 0)
96+
// VCC 7| |22 GND
97+
// GND 8| |21 AREF
98+
// PB6 9| |20 AVCC
99+
// PB7 10| |19 PB5 (D 13)
100+
// PWM+ (D 5) PD5 11| |18 PB4 (D 12)
101+
// PWM+ (D 6) PD6 12| |17 PB3 (D 11) PWM
102+
// (D 7) PD7 13| |16 PB2 (D 10) PWM
103+
// (D 8) PB0 14| |15 PB1 (D 9) PWM
104+
// +----+
105+
//
106+
// (PWM+ indicates the additional PWM pins on the ATmega168.)
107+
108+
// ATMEL ATMEGA1280 / ARDUINO
109+
//
110+
// 0-7 PE0-PE7 works
111+
// 8-13 PB0-PB5 works
112+
// 14-21 PA0-PA7 works
113+
// 22-29 PH0-PH7 works
114+
// 30-35 PG5-PG0 works
115+
// 36-43 PC7-PC0 works
116+
// 44-51 PJ7-PJ0 works
117+
// 52-59 PL7-PL0 works
118+
// 60-67 PD7-PD0 works
119+
// A0-A7 PF0-PF7
120+
// A8-A15 PK0-PK7
121+
122+
123+
// these arrays map port names (e.g. port B) to the
124+
// appropriate addresses for various functions (e.g. reading
125+
// and writing)
126+
const uint16_t PROGMEM port_to_mode_PGM[] = {
127+
NOT_A_PORT,
128+
NOT_A_PORT,
129+
(uint16_t) &DDRB,
130+
(uint16_t) &DDRC,
131+
(uint16_t) &DDRD,
132+
};
133+
134+
const uint16_t PROGMEM port_to_output_PGM[] = {
135+
NOT_A_PORT,
136+
NOT_A_PORT,
137+
(uint16_t) &PORTB,
138+
(uint16_t) &PORTC,
139+
(uint16_t) &PORTD,
140+
};
141+
142+
const uint16_t PROGMEM port_to_input_PGM[] = {
143+
NOT_A_PORT,
144+
NOT_A_PORT,
145+
(uint16_t) &PINB,
146+
(uint16_t) &PINC,
147+
(uint16_t) &PIND,
148+
};
149+
150+
const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
151+
PD, /* 0 */
152+
PD,
153+
PD,
154+
PD,
155+
PD,
156+
PD,
157+
PD,
158+
PD,
159+
PB, /* 8 */
160+
PB,
161+
PB,
162+
PB,
163+
PB,
164+
PB,
165+
PC, /* 14 */
166+
PC,
167+
PC,
168+
PC,
169+
PC,
170+
PC,
171+
};
172+
173+
const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = {
174+
_BV(0), /* 0, port D */
175+
_BV(1),
176+
_BV(2),
177+
_BV(3),
178+
_BV(4),
179+
_BV(5),
180+
_BV(6),
181+
_BV(7),
182+
_BV(0), /* 8, port B */
183+
_BV(1),
184+
_BV(2),
185+
_BV(3),
186+
_BV(4),
187+
_BV(5),
188+
_BV(0), /* 14, port C */
189+
_BV(1),
190+
_BV(2),
191+
_BV(3),
192+
_BV(4),
193+
_BV(5),
194+
};
195+
196+
const uint8_t PROGMEM digital_pin_to_timer_PGM[] = {
197+
NOT_ON_TIMER, /* 0 - port D */
198+
NOT_ON_TIMER,
199+
NOT_ON_TIMER,
200+
// on the ATmega168, digital pin 3 has hardware pwm
201+
#if defined(__AVR_ATmega8__)
202+
NOT_ON_TIMER,
203+
#else
204+
TIMER2B,
205+
#endif
206+
NOT_ON_TIMER,
207+
// on the ATmega168, digital pins 5 and 6 have hardware pwm
208+
#if defined(__AVR_ATmega8__)
209+
NOT_ON_TIMER,
210+
NOT_ON_TIMER,
211+
#else
212+
TIMER0B,
213+
TIMER0A,
214+
#endif
215+
NOT_ON_TIMER,
216+
NOT_ON_TIMER, /* 8 - port B */
217+
TIMER1A,
218+
TIMER1B,
219+
#if defined(__AVR_ATmega8__)
220+
TIMER2,
221+
#else
222+
TIMER2A,
223+
#endif
224+
NOT_ON_TIMER,
225+
NOT_ON_TIMER,
226+
NOT_ON_TIMER,
227+
NOT_ON_TIMER, /* 14 - port C */
228+
NOT_ON_TIMER,
229+
NOT_ON_TIMER,
230+
NOT_ON_TIMER,
231+
NOT_ON_TIMER,
232+
};
233+
234+
// Digital Sandbox specific functions
235+
236+
void initVariant() {
237+
238+
// Set pin 3 to be a low output to avoid heating up buzzer attached to expansion port
239+
240+
pinMode(3,OUTPUT);
241+
digitalWrite(3,LOW);
242+
}
243+
244+
#endif
245+
246+
// These serial port names are intended to allow libraries and architecture-neutral
247+
// sketches to automatically default to the correct port name for a particular type
248+
// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
249+
// the first hardware serial port whose RX/TX pins are not dedicated to another use.
250+
//
251+
// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor
252+
//
253+
// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial
254+
//
255+
// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library
256+
//
257+
// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins.
258+
//
259+
// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX
260+
// pins are NOT connected to anything by default.
261+
#define SERIAL_PORT_MONITOR Serial
262+
#define SERIAL_PORT_HARDWARE Serial
263+
264+
#endif

0 commit comments

Comments
 (0)