Ich benutze kein Bascom, kenne daher den PULSEIN Befehl nicht. Aber so wie es ein Datenblatt zum CMPS09 gibt (mein Zitat ist aus diesem) wird es auch ein Bascom Handbuch geben, in dem PULSEIN beschrieben ist.
MfG Klebwax
Ich benutze kein Bascom, kenne daher den PULSEIN Befehl nicht. Aber so wie es ein Datenblatt zum CMPS09 gibt (mein Zitat ist aus diesem) wird es auch ein Bascom Handbuch geben, in dem PULSEIN beschrieben ist.
MfG Klebwax
Strom fließt auch durch krumme Drähte !
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.
Pulsein ist 'ne recht einfach aufgebaute Zählschleife, die pro Durchgang 10 Prozessorzyklen braucht, die Angabe laut Hilfe von 10µS bezieht sich also auf einen Takt von 1MHz.
Somit ist ein Zählwert von 3837 theoretisch 38370 µs = 38,37ms, der Fehler zu 36,99ms resultiert ganz einfach aus der Ungenauigkeit des internen RC-Oszillators.
Geändert von MagicWSmoke (03.07.2012 um 19:40 Uhr)
Lesezeichen