diff --git a/DFMoco-Teensy.ino b/DFMoco-Teensy.ino index d198401..a7b8d7b 100644 --- a/DFMoco-Teensy.ino +++ b/DFMoco-Teensy.ino @@ -100,6 +100,8 @@ #elif defined(ARDUINO_ARCH_ARC32) // Intel Curie/101 #define BOARD_101 1 #include "CurieTimerOne.h" +#elif defined(__arm__) && defined(TEENSYDUINO) + #define BOARD_TEENSY 1 #else #error Cannot identify board #endif @@ -112,6 +114,9 @@ #if defined(BOARD_101) #define PIN_ON(port, pin) { digitalWrite(pin, 1); } #define PIN_OFF(port, pin) { digitalWrite(pin, 0); } +#elif defined(BOARD_TEENSY) + #define PIN_ON(port, pin) { digitalWriteFast(pin, HIGH); } + #define PIN_OFF(port, pin) { digitalWriteFast(pin, LOW); } #else #define PIN_ON(port, pin) { port |= pin; } #define PIN_OFF(port, pin) { port &= ~pin; } @@ -208,6 +213,41 @@ #define MOTOR3_STEP_PORT PORTB #define MOTOR3_STEP_PIN B00000100 +#elif defined(BOARD_TEENSY) + + #define MOTOR0_STEP_PORT 0 + #define MOTOR0_STEP_PIN 2 + + #define MOTOR1_STEP_PORT 0 + #define MOTOR1_STEP_PIN 4 + + #define MOTOR2_STEP_PORT 0 + #define MOTOR2_STEP_PIN 6 + + #define MOTOR3_STEP_PORT 0 + #define MOTOR3_STEP_PIN 8 + + #define MOTOR4_STEP_PORT 0 + #define MOTOR4_STEP_PIN 14 + + #define MOTOR5_STEP_PORT 0 + #define MOTOR5_STEP_PIN 16 + + #define MOTOR6_STEP_PORT 0 + #define MOTOR6_STEP_PIN 18 + + #define MOTOR7_STEP_PORT 0 + #define MOTOR7_STEP_PIN 20 + + byte stepPins[] = {MOTOR0_STEP_PIN, + MOTOR1_STEP_PIN, + MOTOR2_STEP_PIN, + MOTOR3_STEP_PIN, + MOTOR4_STEP_PIN, + MOTOR5_STEP_PIN, + MOTOR6_STEP_PIN, + MOTOR7_STEP_PIN}; + #endif @@ -448,7 +488,10 @@ void setup() // setup motor pins - you can customize/modify these after loop // default sets step/dir pairs together, with first four motors at 4/5, 6/7, 8/9, 10/11 // then, for the Mega boards, it jumps to 28/29, 30/31, 32/33, 34/35 - #if ( PINOUT_VERSION == 2 ) + + #if defined(BOARD_TEENSY) + motors[i].stepPin = stepPins[i]; + #elif ( PINOUT_VERSION == 2 ) motors[i].stepPin = (i * 2) + ( (i < 4) ? 4 : 20 ); #elif ( PINOUT_VERSION == 1 ) motors[i].stepPin = (i * 2) + ( (i < 4) ? 4 : 14 ); @@ -543,10 +586,16 @@ void setup() CurieTimerOne.start(25, &updateStepDirection); + #elif defined(BOARD_TEENSY) + + static IntervalTimer timer; + timer.priority(128); + timer.begin(updateStepDirection, 25); + #endif } -#if defined(BOARD_101) +#if defined(BOARD_101) || defined(BOARD_TEENSY) void updateStepDirection(void) { #else