-
-
Erfahrener Benutzer
Robotik Einstein
Mögliche Interruptquellen sind der INT0, der INT1, der INT2.
Ausserdem könnte man noch den ICP Pin verwenden, sowie den Analog Komperator. Auch diese beiden Quellen können Interrups auslösen.
EDIT! Jeder Sensor sollte natürlich seinen eigenen Interrupteingang kriegen.
Da es hierbei um, für einen Controller relativ niedriege Frequenzen der Geber geht, würd ich die Erfassungsroutine anders gestalten.
Ich selber hab dazu, bei einem Drehzahlmesser, den Timer 1 frei laufen lassen.
Bei einem Interrupt wird der Wert des Timers ( der auch ein Überlaufregister haben sollte, das im Timer Overflow Interrupt hochgezählt wird ) abgespeichert und der Zählerstand des vorausgehenden Interrupts der gleichen Quelle abgezogen.
Die Zählerstände werden dann über eine selbst zu entwickelnde Formel in die entsprechenden Werte umgerechnet.
Man kann so bei jedem Impuls eine Aussage über die momentanen Werte machen. Das bedeutet die Sache ist sehr schnell.
Ich hab ausserdem im Interrupt nur die Zählerstände ausgelesen, subtrahiert und ein Bit Flag gesetzt. Die eigentliche Berechnung hab ich dann im Hauptprogramm ausführen lassen.
Ob man dann per Software noch irgendwelche Dämpfungsfaktoren mit einrechnet ( unrund laufende Sensoren ?! ) kann man immer noch entscheiden.
Man muß lediglich darauf achten, das man Zählerüberläufe erkennen kann, z.B. wenn das Auto steht.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen