AnalogRead e ritardi

Ma hai provato questo codice che ti ho postato?
A me funziona perfettamente, e non si blocca.

leo72:

void readline(void) {
char c;
buffidx = 0; // start at begninning
unsigned long tempMillis = millis();

Serial.print(batt);
while (millis() - tempMillis < 5000) {
c=gps.read();
if (c == -1)
continue;
//Serial.print(" ");
delay(1);
if (c == '\n')
continue;
if ((buffidx == BUFFSIZ-1) || (c == '\r')) {
buffer[buffidx] = 0;
return;
}
buffer[buffidx++]= c;
}
}

Con questo funziona perfettamente.
E' un timeout di 5 secondi, se non riceve nulla sulla seriale software, esce.