Ram+Seriale+Overflow

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();
    } 
}