-
-
Erfahrener Benutzer
Roboter Genie
Hallo Salvador,
natürlich steckt die Impulslänge zwischen 2 steigenden Flanken,
Config Int0 = Rising war richtig.
Bei 16 Mhz Taktfrequenz und einem Prescaler von 256 läuft der Timer mit 62500 Hz. Also nach gut 4ms ist ein Überlauf zu erwarten.
Der Wert für einen Impuls von 1,5ms sollte um 93 liegen.
Kannst du nachprüfen, ob der Interrupt überhaupt angesprungen wird? Du kannst ja z.B. eine LED anschalten lassen.
Nach dem Einsprung in den Interrupt würde ich (nach dem Sichern) Timer0 löschen. Dann läuft er wieder von 0 losfür die nächste Messung.
Ein Stoppen des Timers ist nicht erforderlich und für die Genauigkeit der Messung nicht hilfreich.
Im Überlauf-Interrupt löschst du einfach die Kanal-Variable. Dort kannst du auch ein Flag setzen, welches im Hauptprogramm nach dem seriellem Senden dieses wieder löscht.
So hast du die Werte einmal pro Impulstelegramm gesendet.
Bedenke aber, daß bei 9600 Baud ein Zeichen ungefähr 1 Millisekunde dauert. Bei deinen 4 Werten mit je 5 Zeichen sind das schon 20ms!
Dazu kommt noch das Wörtchen "pause" welches nochmal 7ms braucht.
Gruß, Michael
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen