-
-
Erfahrener Benutzer
Robotik Visionär
Man braucht für die Aufgabe nur eine Uhr. Die kann man wenn man will sogar vor der eigentlichen Messung starten. Bei jeder Flanke wird einfach die Zeit in die passende Variable geschrieben. Nachdem die Messung dann fertig ist, kann man die Zeitdifferenzen berechenen.
Wenn einem die 50 µs (oder etwas kürzer) ausreichen, kann man den Zähler im Interrupts nehmen. Alternativ kann man auch direkt den Timerstand auslesen und nimmt ggf. die Zahl der Überläufe dazu. Für die meisten Lichtschranken sollten aber 10-50 µs Schritte ausreichen.
Der Messteil des Programms besteht dann im Wesenlichen aus kruzen Schleifen die darauf warten, das die nächste Flanke kommt. Also z.B.:
while (PINA & 1) ;
cli();
zeit1= Zeit;
sei();
while (~ (PINA & 1)) ;
cli();
zeit2= Zeit;
sei();
usw.....
Das Cli / Sei wird man brauchen wenn "Zeit" im Interrupt hochgezählt wird.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen