ok, mi avete fatto tirare fuori l'arduino.
Prima di tutto una cosa che centra nulla ma volevo testare:
con Serial.print(' '); lo skecth misura 2888byte: invece con Serial.print(" "); misura 2896 byte! quindi se scrivete un solo carattere privilegiate l'apice singolo!
certo una differenza di 8byte è tanta.. bha
comunque le sto provando tutte e effettivamente non riesco a capire cosa diavolo succeda.
il mio test per ora... ora proseguo per capire se per caso c'è una flag(o bug) assegnata ad ogni variabile che ne identifica l'overflow e rende sempre veri gli if
unsigned long Tempo;
unsigned int ScrollTime;
const byte LED=13;
boolean stato=true;
unsigned long tempo2;
unsigned int *p;
void setup () {
delay(2000);
pinMode(LED, OUTPUT);
digitalWrite(LED, stato);
Serial.begin(115200);
Serial.println("Partito");
}
void loop () {
Tempo=millis();
if (Tempo > (unsigned long)(ScrollTime + 50)) {
tempo2 = ScrollTime+50;
// ScrollTime = tempo2;
/*
Serial.print(tempo2, DEC);
Serial.print(' ');
Serial.print(tempo2, BIN);
Serial.print(' ');
Serial.print(ScrollTime + 50, DEC);
Serial.print(' ');
Serial.print(ScrollTime + 50, BIN);
Serial.print(' ');
*/
Serial.print(ScrollTime, DEC);
Serial.print(' ');
Serial.print(ScrollTime, BIN);
Serial.print(' ');
Serial.print(Tempo, DEC);
Serial.print(' ');
Serial.print(Tempo, BIN);
/*
p = (unsigned long *)&Tempo;
Serial.print(' ');
Serial.print( (*p), BIN);
tempo2 = Tempo;
Serial.print(' ');
Serial.print(tempo2, DEC);
Serial.print(' ');
Serial.print(tempo2, BIN);
*/
p = &ScrollTime;
Serial.print('p');
Serial.print( (*p), BIN);
p = &ScrollTime+1;
Serial.print('+');
Serial.print( (*p), BIN);
p = &ScrollTime-1;
Serial.print('-');
Serial.print( (*p), BIN);
unsigned long *a;
p = &ScrollTime;
a = (unsigned long *)p;
Serial.print('a');
Serial.print( (*a), BIN);
p-=sizeof(unsigned long);
p+=sizeof(unsigned int);
a = (unsigned long *)p;
Serial.print('A');
Serial.print( (*a), BIN);
Serial.print('A');
Serial.print( (*a), DEC);
p = &ScrollTime;
p+=sizeof(unsigned long);
p-=sizeof(unsigned int);
a = (unsigned long *)p;
Serial.print('B');
Serial.print( (*a), BIN);
Serial.print('B');
Serial.print( (*a), DEC);
if ((*a) < 135593984){
(*a)=135593984;
}
Serial.println();
/*
if (Tempo > 70000L){
while(1);//stop!!
}
*/
stato ^= true;
digitalWrite(LED, stato);
ScrollTime = millis();
}
}