Hallo, habe für eine Carrera-Bahn, zwei Lichtschranken gebaut, um die Rundenzahl und Rundenzeit zu erfassen. Die Lichtschranken sind mit nem IS471 und einer SFH409 aufgebaut. Als Controller nutze ich einen T89C51RD2. Wenn die Lichtschranke unterbrochen wird, wird ein Interrupt erzeugt, in dem der Cotroller die Runde aufaddiert. Nur mein Problem ist, er zählt nicht einmal, sondern mehrfach. Mal einen Schritt, mal zwei oder auch mal mehrere. Habe es schon mit ner Warteschleife in Interrupt-Routine versucht, half aber nicht. Hat jemand ne Idee? Mfg sascha
Nach dem Auslösen des Interruptes muß Du ihn als erstes sperren für ca. 1 Sekunde und danach freigeben.
Danke, habe es anders gemacht. Lösche das Interrupt-Bit beim verlassen der Interruptroutine und es funktioniert. Jetzt versuch ich mich gerade in der erfassung der Rundenzeit. Mfg Sascha
Wenn die Interrupt-Service-Routine kurz ist (ohne delay) und die Lichtschranke vom Fahrzeug mehrmals unterbrochen wird, kommt es zu Fehlzählungen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.