Go Down

Topic: micros() help (Read 807 times) previous topic - next topic


Here is my code.When i is 100,the result of the serial is 96.But When i is 10000,the result is still 96.If i change"a++" into "Serial.print(1)",the result changed. :~
Code: [Select]
void setup(){
void loop(){
 long i,a;


Shouldn't you be declaring "a=0" instead of just "a" ?


Feb 28, 2011, 02:40 am Last Edit: Feb 28, 2011, 02:41 am by frank26080115 Reason: 1
probably an optimization issue, the compiler probably knew that "a" was useless and didn't bother running your for-loop, but if you tell it to output "1", then it's forced to actually send that out the serial port, thus the for-loop remained in that case

solve the problem by using a NOP instruction in the for-loop, that's what I would do. Or make "i" volatile.


I got the result after added "Serial.println(a)"and change "a++" into "a+=2".
It proves that the compiler is smart! :)
Thanks for your time!


Qualify 'a' as "volatile".
"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.
I speak for myself, not Arduino.

Go Up