funzione millis

gpb01:
Salvo non disabilitare gli interrupt, il codice NON ha alcuna influenza sull'avanzamento del contatore ritornato da millis()

Vero, il contatore non subisce alcuna variazione, ma il valore memorizzato nella variabile 'mills_vecchi' può non avanzare come ci si aspetta, infatti dalle misure strumentali:

  mills_attuali = millis();
   if ((mills_attuali - mills_vecchi) > 10){   // 45.3 Hz, il caso in questione
       mills_vecchi = mills_attuali;
       val ^= 1;
       digitalWrite(OUT_PIN, val);
   }
   mills_attuali = millis();
    if ((mills_attuali - mills_vecchi) >= 10){  // 49.8 Hz, i tutorial sull'uso di millis
        mills_vecchi = millis();
        val ^= 1;
        digitalWrite(OUT_PIN, val);
    }
   mills_attuali = millis();
    if ((mills_attuali - mills_vecchi) >= 10){  // 50.0 Hz, errore solo di quarzo+interrupt
        mills_vecchi += 10;
        val ^= 1;
        digitalWrite(OUT_PIN, val);
    }