KurtE
Senior Member+
Sorry, this has probably been asked before, but was playing around with a Teensy 2 and found that digitalWriteFast is not defined for a Teensy 2. Windows 10, Arduino 1.6.9, Beta Teensyduino...
Example:
Compiles fine for 3.2, but change board type to Teensy 2 and it fails...
Tried including a version of digitalWriteFast I had on my machine and it fails to compile as well:
#include <digitalWriteFast.h>
Not a big deal, I was simply using digitalWriteFast for debug code to watch things using Logic Analyzer.
Can look for newer version of this header file to see if that works, and/or simply use digitalWrite instead, but was wondering if there is preferred way to handle this between these chips...
Edit: I believe my old copy came directly from the old google code: https://code.google.com/archive/p/digitalwritefast/downloads
Example:
Code:
void setup() {
// put your setup code here, to run once:
pinMode(13, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWriteFast(13, HIGH);
delay(500);
digitalWriteFast(13, LOW);
delay(500);
}
Tried including a version of digitalWriteFast I had on my machine and it fails to compile as well:
#include <digitalWriteFast.h>
Code:
Arduino: 1.6.9 (Windows 10), TD: 1.29-beta1, Board: "Teensy 2.0, Serial, 16 MHz, US English"
Build options changed, rebuilding all
In file included from C:\Program Files (x86)\Arduino\hardware\teensy\avr\cores\teensy/WProgram.h:19:0,
from C:\Program Files (x86)\Arduino\hardware\teensy\avr\cores\teensy/Arduino.h:1,
from C:\Users\Kurt\AppData\Local\Temp\build76549ddd49c526a7c849f11ae1a19cc0.tmp\sketch\foo.ino.cpp:1:
foo: In function 'void loop()':
C:\Users\Kurt\Documents\Arduino\libraries\digitalWriteFast/digitalWriteFast.h:124:59: error: '__digitalPinToBit' was not declared in this scope
if ( (int)(A) < 0x40) { bitWrite(*(A), __digitalPinToBit(P), (V) );} \
^
C:\Program Files (x86)\Arduino\hardware\teensy\avr\cores\teensy/wiring.h:88:49: note: in definition of macro 'bitSet'
#define bitSet(value, bit) ((value) |= (1UL << (bit)))
^
C:\Users\Kurt\Documents\Arduino\libraries\digitalWriteFast/digitalWriteFast.h:124:25: note: in expansion of macro 'bitWrite'
if ( (int)(A) < 0x40) { bitWrite(*(A), __digitalPinToBit(P), (V) );} \
^
C:\Users\Kurt\Documents\Arduino\libraries\digitalWriteFast/digitalWriteFast.h:136:59: note: in expansion of macro '__atomicWrite__'
if (__builtin_constant_p(P) && __builtin_constant_p(V)) __atomicWrite__((uint8_t*) digitalPinToPortReg(P),P,V) \
^
C:\Users\Kurt\Documents\Arduino\foo\foo\foo.ino:10:3: note: in expansion of macro 'digitalWriteFast'
digitalWriteFast(13, HIGH);
^
C:\Users\Kurt\Documents\Arduino\libraries\digitalWriteFast/digitalWriteFast.h:128:35: error: '__digitalPinToBit' was not declared in this scope
bitWrite(*(A), __digitalPinToBit(P), (V) ); \
^
C:\Program Files (x86)\Arduino\hardware\teensy\avr\cores\teensy/wiring.h:88:49: note: in definition of macro 'bitSet'
#define bitSet(value, bit) ((value) |= (1UL << (bit)))
^
C:\Users\Kurt\Documents\Arduino\libraries\digitalWriteFast/digitalWriteFast.h:128:1: note: in expansion of macro 'bitWrite'
bitWrite(*(A), __digitalPinToBit(P), (V) ); \
^
C:\Users\Kurt\Documents\Arduino\libraries\digitalWriteFast/digitalWriteFast.h:136:59: note: in expansion of macro '__atomicWrite__'
if (__builtin_constant_p(P) && __builtin_constant_p(V)) __atomicWrite__((uint8_t*) digitalPinToPortReg(P),P,V) \
^
C:\Users\Kurt\Documents\Arduino\foo\foo\foo.ino:10:3: note: in expansion of macro 'digitalWriteFast'
digitalWriteFast(13, HIGH);
^
C:\Users\Kurt\Documents\Arduino\libraries\digitalWriteFast/digitalWriteFast.h:124:59: error: '__digitalPinToBit' was not declared in this scope
if ( (int)(A) < 0x40) { bitWrite(*(A), __digitalPinToBit(P), (V) );} \
^
C:\Program Files (x86)\Arduino\hardware\teensy\avr\cores\teensy/wiring.h:88:49: note: in definition of macro 'bitSet'
#define bitSet(value, bit) ((value) |= (1UL << (bit)))
^
C:\Users\Kurt\Documents\Arduino\libraries\digitalWriteFast/digitalWriteFast.h:124:25: note: in expansion of macro 'bitWrite'
if ( (int)(A) < 0x40) { bitWrite(*(A), __digitalPinToBit(P), (V) );} \
^
C:\Users\Kurt\Documents\Arduino\libraries\digitalWriteFast/digitalWriteFast.h:136:59: note: in expansion of macro '__atomicWrite__'
if (__builtin_constant_p(P) && __builtin_constant_p(V)) __atomicWrite__((uint8_t*) digitalPinToPortReg(P),P,V) \
^
C:\Users\Kurt\Documents\Arduino\foo\foo\foo.ino:12:3: note: in expansion of macro 'digitalWriteFast'
digitalWriteFast(13, LOW);
^
C:\Users\Kurt\Documents\Arduino\libraries\digitalWriteFast/digitalWriteFast.h:128:35: error: '__digitalPinToBit' was not declared in this scope
bitWrite(*(A), __digitalPinToBit(P), (V) ); \
^
C:\Program Files (x86)\Arduino\hardware\teensy\avr\cores\teensy/wiring.h:88:49: note: in definition of macro 'bitSet'
#define bitSet(value, bit) ((value) |= (1UL << (bit)))
^
C:\Users\Kurt\Documents\Arduino\libraries\digitalWriteFast/digitalWriteFast.h:128:1: note: in expansion of macro 'bitWrite'
bitWrite(*(A), __digitalPinToBit(P), (V) ); \
^
C:\Users\Kurt\Documents\Arduino\libraries\digitalWriteFast/digitalWriteFast.h:136:59: note: in expansion of macro '__atomicWrite__'
if (__builtin_constant_p(P) && __builtin_constant_p(V)) __atomicWrite__((uint8_t*) digitalPinToPortReg(P),P,V) \
^
C:\Users\Kurt\Documents\Arduino\foo\foo\foo.ino:12:3: note: in expansion of macro 'digitalWriteFast'
digitalWriteFast(13, LOW);
^
Error compiling for board Teensy 2.0.
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
Can look for newer version of this header file to see if that works, and/or simply use digitalWrite instead, but was wondering if there is preferred way to handle this between these chips...
Edit: I believe my old copy came directly from the old google code: https://code.google.com/archive/p/digitalwritefast/downloads
Last edited: