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:
(Aus der Funktion SerRead() in asuro.c)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 } }
Deshalb lautet der Kommentar über dem Else-Zweig von "if (timeout != 0) {" auch "blocking".
Gruß
mic







Zitieren

Lesezeichen