Skip to content

Commit d4cde66

Browse files
Merge pull request firmata#451 from jimsynz/add-teensy-40
Add support for Teensy 4.0.
2 parents 75c5ab6 + 5f42c13 commit d4cde66

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

Boards.h

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,36 @@ writePort(port, value, bitmask): Write an 8 bit port.
536536
#define PIN_TO_PWM(p) PIN_TO_DIGITAL(p)
537537
#define PIN_TO_SERVO(p) (p)
538538

539+
// Teensy 4.0
540+
#elif defined(__IMXRT1062__)
541+
#define TOTAL_ANALOG_PINS 14
542+
#define TOTAL_PINS 40
543+
#define VERSION_BLINK_PIN 13
544+
#define PIN_SERIAL1_RX 0
545+
#define PIN_SERIAL1_TX 1
546+
#define PIN_SERIAL2_RX 7
547+
#define PIN_SERIAL2_TX 8
548+
#define PIN_SERIAL3_RX 15
549+
#define PIN_SERIAL3_TX 14
550+
#define PIN_SERIAL4_RX 16
551+
#define PIN_SERIAL4_TX 17
552+
#define PIN_SERIAL5_RX 21
553+
#define PIN_SERIAL5_TX 20
554+
#define PIN_SERIAL6_RX 25
555+
#define PIN_SERIAL6_TX 24
556+
#define PIN_SERIAL7_RX 28
557+
#define PIN_SERIAL7_TX 29
558+
#define IS_PIN_DIGITAL(p) ((p) >= 0 && (p) < TOTAL_PINS)
559+
#define IS_PIN_ANALOG(p) ((p) >= 14 && (p) <= 27)
560+
#define IS_PIN_PWM(p) (((p) >= 0 && (p) <= 16) || ((p) >= 18 && (p) <= 19) || ((p) >= 22 && (p) <= 25) || ((p) >= 28 && (p) <= 29)|| ((p) >= 33 && (p) <= 39))
561+
#define IS_PIN_SERVO(p) ((p) >= 0 && (p) < MAX_SERVOS)
562+
#define IS_PIN_I2C(p) ((p) == 18 || (p) == 19)
563+
#define IS_PIN_SERIAL(p) (((p) >= 0 && (p) <= 1) || ((p) >= 7 && (p) <= 8) || ((p) >= 14 && (p) <= 17) || ((p) >= 20 && (p) <= 21) || ((p) >= 24 && (p) <= 25) || ((p) >= 28 && (p) <= 29))
564+
#define PIN_TO_DIGITAL(p) (p)
565+
#define PIN_TO_ANALOG(p) ((p) - 14)
566+
#define PIN_TO_PWM(p) (p)
567+
#define PIN_TO_SERVO(p) (p)
568+
539569

540570
// Leonardo
541571
#elif defined(__AVR_ATmega32U4__)

utility/SerialFirmata.h

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
#define HW_SERIAL4 0x04
6666
#define HW_SERIAL5 0x05
6767
#define HW_SERIAL6 0x06
68-
// extensible up to 0x07
68+
#define HW_SERIAL7 0x07
6969

7070
#define SW_SERIAL0 0x08
7171
#define SW_SERIAL1 0x09
@@ -90,6 +90,8 @@
9090
#define RES_TX5 0x0b
9191
#define RES_RX6 0x0c
9292
#define RES_TX6 0x0d
93+
#define RES_RX7 0x0e
94+
#define RES_TX7 0x0f
9395

9496
// Serial command bytes
9597
#define SERIAL_CONFIG 0x10
@@ -142,6 +144,10 @@ namespace {
142144
#if defined(PIN_SERIAL6_RX)
143145
if (pin == PIN_SERIAL6_RX) return RES_RX6;
144146
if (pin == PIN_SERIAL6_TX) return RES_TX6;
147+
#endif
148+
#if defined(PIN_SERIAL7_RX)
149+
if (pin == PIN_SERIAL7_RX) return RES_RX7;
150+
if (pin == PIN_SERIAL7_TX) return RES_TX7;
145151
#endif
146152
return 0;
147153
}
@@ -192,6 +198,12 @@ namespace {
192198
pins.rx = PIN_SERIAL6_RX;
193199
pins.tx = PIN_SERIAL6_TX;
194200
break;
201+
#endif
202+
#if defined(PIN_SERIAL7_RX)
203+
case HW_SERIAL7:
204+
pins.rx = PIN_SERIAL7_RX;
205+
pins.tx = PIN_SERIAL7_TX;
206+
break;
195207
#endif
196208
default:
197209
pins.rx = 0;

0 commit comments

Comments
 (0)