Epyon
Well-known member
I was writing a quick sketch to read an absolute encoder, and then encountered some strange behaviour of both the Arduino IDE, Teensyduino and my T3.2. Commenting out some code, I pinned it down to the use of sizeof().
Sketch A:
This runs perfectly. LED goes on, serial monitor outputs 'ready', pin 1 strobes.
Sketch B:
I only replaced 32 with sizeof(). This uploads fine the first time. LED goes on, but serial monitor doesn't output anything (it is online though), the pin only strobes the first 32 times. From then the Teensy hangs.
Furthermore, if I want to upload another sketch, the Arduino IDE says 'Uploading to IO board' and hangs there for around 30 seconds. Then the compiling process starts. After compiling, Teensyduino is stuck on 'Arduino IDE is attempting to put Teensy into bootloader' or something like that. Only after pressing the manual button does it really start to upload.
If I upload a working sketch (or sketch A) this way, the Teensy will upload and work correctly again the next time.
I'm using Arduino 1.8.5 with TD 1.41 with a T3.2.
Sketch A:
Code:
int inputValues[32];
int grayCode[13];
int binaryCode[13];
int result;
void setup() {
Serial.begin(9600);
pinMode(0, INPUT);
pinMode(1, OUTPUT);
pinMode(13, OUTPUT);
digitalWrite(1, HIGH);
digitalWrite(13, HIGH);
delay(6000);
Serial.println("Ready");
}
void loop() {
for(int i = 0; i < 32; i++){
digitalWrite(1, LOW);
delayMicroseconds(10);
inputValues[i] = digitalRead(0);
digitalWrite(1, HIGH);
delayMicroseconds(10);
}
/*Rest of code commented*/
This runs perfectly. LED goes on, serial monitor outputs 'ready', pin 1 strobes.
Sketch B:
Code:
int inputValues[32];
int grayCode[13];
int binaryCode[13];
int result;
void setup() {
Serial.begin(9600);
pinMode(0, INPUT);
pinMode(1, OUTPUT);
pinMode(13, OUTPUT);
digitalWrite(1, HIGH);
digitalWrite(13, HIGH);
delay(6000);
Serial.println("Ready");
}
void loop() {
for(int i = 0; i < sizeof(inputValues); i++){
digitalWrite(1, LOW);
delayMicroseconds(10);
inputValues[i] = digitalRead(0);
digitalWrite(1, HIGH);
delayMicroseconds(10);
}
/*Rest of code commented*/
Furthermore, if I want to upload another sketch, the Arduino IDE says 'Uploading to IO board' and hangs there for around 30 seconds. Then the compiling process starts. After compiling, Teensyduino is stuck on 'Arduino IDE is attempting to put Teensy into bootloader' or something like that. Only after pressing the manual button does it really start to upload.
If I upload a working sketch (or sketch A) this way, the Teensy will upload and work correctly again the next time.
I'm using Arduino 1.8.5 with TD 1.41 with a T3.2.