@@ -584,10 +584,23 @@ writePort(port, value, bitmask): Write an 8 bit port.
584584#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
585585#define PIN_TO_SERVO (p ) (p)
586586
587- // Teensy 4.0
587+ // Teensy 4.0 and Teensy 4.1
588588#elif defined(__IMXRT1062__ )
589- #define TOTAL_ANALOG_PINS 14
590- #define TOTAL_PINS 40
589+ #if !defined(TEENSY40 ) && !defined(TEENSY41 )
590+ #warning Assuming TEENSY40. Please #define TEENSY40 or TEENSY41.
591+ #define TEENSY40
592+ #endif
593+ #if defined(TEENSY40 )
594+ #define TOTAL_PINS 40
595+ #define TOTAL_ANALOG_PINS 14
596+ #define IS_PIN_ANALOG (p ) ((p) >= 14 && (p) <= 27)
597+ #define PIN_TO_ANALOG (p ) ((p) - 14)
598+ #elif defined(TEENSY41 )
599+ #define TOTAL_PINS 55
600+ #define TOTAL_ANALOG_PINS 18
601+ #define IS_PIN_ANALOG (p ) (((p) >= 14 && (p) <= 27) || ((p) >= 38 && (p) <= 41))
602+ #define PIN_TO_ANALOG (p ) (((p) <= 27) ? ((p) - 14 ) : ((p) - 24))
603+ #endif
591604#define VERSION_BLINK_PIN 13
592605#define PIN_SERIAL1_RX 0
593606#define PIN_SERIAL1_TX 1
@@ -603,14 +616,64 @@ writePort(port, value, bitmask): Write an 8 bit port.
603616#define PIN_SERIAL6_TX 24
604617#define PIN_SERIAL7_RX 28
605618#define PIN_SERIAL7_TX 29
619+ #if defined(TEENSY40 )
620+ #define IS_PIN_SERIAL (p ) (((p) == PIN_SERIAL1_RX) || \
621+ ((p) == PIN_SERIAL1_TX) || \
622+ ((p) == PIN_SERIAL2_RX) || \
623+ ((p) == PIN_SERIAL2_TX) || \
624+ ((p) == PIN_SERIAL3_RX) || \
625+ ((p) == PIN_SERIAL3_TX) || \
626+ ((p) == PIN_SERIAL4_RX) || \
627+ ((p) == PIN_SERIAL4_TX) || \
628+ ((p) == PIN_SERIAL5_RX) || \
629+ ((p) == PIN_SERIAL5_TX) || \
630+ ((p) == PIN_SERIAL6_RX) || \
631+ ((p) == PIN_SERIAL6_TX) || \
632+ ((p) == PIN_SERIAL7_RX) || \
633+ ((p) == PIN_SERIAL7_TX))
634+ #define IS_PIN_PWM (p ) (((p) >= 0 && (p) <= 16) || \
635+ ((p) == 18) || \
636+ ((p) == 19) || \
637+ ((p) >= 22 && (p) <= 25) || \
638+ ((p) == 28) || \
639+ ((p) == 29) || \
640+ ((p) >= 33 && (p) <= 39))
641+ #elif defined(TEENSY41 )
642+ #define PIN_SERIAL8_RX 34
643+ #define PIN_SERIAL8_TX 35
644+ #define IS_PIN_SERIAL (p ) (((p) == PIN_SERIAL1_RX) || \
645+ ((p) == PIN_SERIAL1_TX) || \
646+ ((p) == PIN_SERIAL2_RX) || \
647+ ((p) == PIN_SERIAL2_TX) || \
648+ ((p) == PIN_SERIAL3_RX) || \
649+ ((p) == PIN_SERIAL3_TX) || \
650+ ((p) == PIN_SERIAL4_RX) || \
651+ ((p) == PIN_SERIAL4_TX) || \
652+ ((p) == PIN_SERIAL5_RX) || \
653+ ((p) == PIN_SERIAL5_TX) || \
654+ ((p) == PIN_SERIAL6_RX) || \
655+ ((p) == PIN_SERIAL6_TX) || \
656+ ((p) == PIN_SERIAL7_RX) || \
657+ ((p) == PIN_SERIAL7_TX) ||\
658+ ((p) == PIN_SERIAL8_RX) || \
659+ ((p) == PIN_SERIAL8_TX))
660+ #define IS_PIN_PWM (p ) (((p) >= 0 && (p) <= 15) || \
661+ ((p) == 18) || \
662+ ((p) == 19) || \
663+ ((p) >= 22 && (p) <= 25) || \
664+ ((p) == 28) || \
665+ ((p) == 29) || \
666+ ((p) == 33) || \
667+ ((p) == 36) || \
668+ ((p) == 37) || \
669+ ((p) >= 42 && (p) <= 47) || \
670+ ((p) == 51) || \
671+ ((p) == 54))
672+ #endif
606673#define IS_PIN_DIGITAL (p ) ((p) >= 0 && (p) < TOTAL_PINS)
607- #define IS_PIN_ANALOG (p ) ((p) >= 14 && (p) <= 27)
608- #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))
609674#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
610675#define IS_PIN_I2C (p ) ((p) == 18 || (p) == 19)
611- #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))
612676#define PIN_TO_DIGITAL (p ) (p)
613- #define PIN_TO_ANALOG (p ) ((p) - 14)
614677#define PIN_TO_PWM (p ) (p)
615678#define PIN_TO_SERVO (p ) (p)
616679
0 commit comments