>Ich benutze die beiden Externen Interrupts dafür.
Sinnfrei. Der Controller lanweilt sich sowieso die ganze Zeit.
Da könntest du ihn auch schlafen legen.
Sollte es wirklich mal so sein, dass beide Lichtschranken exakt
gleichzeitig ausgelöst werden, wird trotzdem einer der beiden Wagen
"gewinnen", da es eine Interrupt-Priorität gibt, die einem der beiden
Eingänge den Vorrang gibt (welche das ist, weiß ich nicht, steht aber im
Datenblatt).
>Vielleicht habt ihr ja ein paar Kommentare und Verbesserungsvorschläge
>zum Code.
Was willst du mit den Daten, die in Spur1 und Spur2 drin sind machen?
Interessant ist doch die Rundenzeit, oder?
Besserer Ablauf:
Timer mit einer Interrupt-Periode von 1 oder 10ms starten (z.B.
CTC-Modus).
Bei jedem Interrupt eine Uhr hochzählen und den Zustand der
Gabellichtschranken überprüfen. Wenn eine unterbrochen wurde, die
aktuelle Zeit speichern (und an der RS232 ausgeben).
Eine Auflösung einer Tausendstelsekunde sollte auf jeden Fall reichen.
Und das sind bei einer Taktfrequenz von 1MHz schon 1000 Takte...