Bei RN-Wissen steht:
.Bascom verfügt für diesen Zweck über den PULSEIN-Befehl, daher wird ein Programm extrem kurz. Die Messung erfolgt in etwa in 100 Abstufungen, da Pulsein in 10 µSek Schritten die Zeit ermittelt (läßt sich in Libary ändern)
Ich würde dazu einen Timer1 ( 16Bit ) und den Input Capture Interrupt verwenden.
Bei einem 8MHz Quarz und einem Prescaler von 8 bekommst Du die Messwerte in µS raus.
Das Interrupt Sensing wir dazu zuerst auf steigende Flanke gestellt.
Kommt diese wird der Wert des Timers1 ( ICR1 ! ) in einer Variablen abgespeichert und das Sensing auf fallende Flanke umgestellt.
Tritt diese dann auf wird der Timer1 erneut ausgelesen und der vorherige Wert abgezogen.
Das Ergebnis ist die Impulslänge in µs und daraus sollte sich die Ausrichtung des Kompasses errechnen lassen.
Lesezeichen