Contare 60 minuti

Scusate se mi intrometto ma la discussione mi interessa.. Ho un progetto su questo forum che riguarda un sistema di controllo dei consumi di casa con delle azioni di distacco e di segnalazione che dipendono proprio dal tempo passato che attualmente viene calcolato in base ai millis() !!!

Inoltre lo sketch calcola l'uptime del sistema visualizzandolo su lcd. Sino ad oggi non mi sono mai accorto di GROSSI "sbalzi" di tempo, però leggere che in base a tanti fattori (tra cui la temperatura) il "tempo" possa cambiare mi ha fatto pensare un po, inoltre:

Siccome il progetto iniziato con UNO sta continuando con YUN (per aggiungere funzionalità web, di lettura e controllo remoto), da due giorni circa avevo pensato (prima di imbattermi in questo thread) di trasformare tutto il codice che si basa su "millis() - millisprecedenti > intervallo"... come da esempio "BlinkWithoutDelay", in una cosa del genere:

...
Process uptime;
uptime.runShellCommand("echo | cut -d. -f1 /proc/uptime");
while (uptime.available() > 0) {
    int sec = uptime.read();
    Serial.write(sec);
}
Serial.flush();
...

attualmente in codice così come postato scrive correttamente su monitor seriale il numero di SECONDI che il processore con linux mi passa.
Due domande:

  1. Il modo in cui Yun calcola quanti secondi sono trascorsi dall'avvio di un processo, è soggetto pure ad "errori" come per UNO con i millis?
  2. Avendo il valore dentro una INT, come mai se prima del Serial.write aggiungo un: sec += x; dove x è un qualsiasi numero, il serial monitor mi scrive dei caratteri strani anzichè il risultato dell'operazione ?