Den Tipp hast du dir selbst schon gegeben. Wenn du SerRead() mit Timeout 0 aufrufst, bleibt dein asuro hier hängen, solange er kein neues Zeichen empfängt, und kann deshalb die Liniensensoren nicht mehr auswerten:
Code:
/* blocking */
else { // timeout ist 0
while (i < length) { // solange zuwenig Zeichen empfangen wurden
if (UCSRA & 0x80) // hat der USART ein Zeichen eingelesen?
data[i++] = UDR; // Zeichen in Übergabevariable kopieren
}
}
(Aus der Funktion SerRead() in asuro.c)
Deshalb lautet der Kommentar über dem Else-Zweig von "if (timeout != 0) {" auch "blocking".
Gruß
mic
Lesezeichen