ske
30.05.2007, 14:01
Hallo zusammen,
ich arbeite zur Zeit an einem kleinen Projekt, und möchte einen Atmel-Prozessor (Attiny13) so programmieren, dass er mir die Länge eines quasi-analogen Impulses misst und ausgibt.
Problemstellung ist folgende:
- Ein NF-Signal wird gleichgerichtet und mit AIN0 verbunden
- Eine Referenzspannung gelangt über einen Spannungsteiler an AIN1
- Überschreitet die gleichgerichtete NF-Spannung an AIN0 einen bestimmten Schwellwert (also die Referenzspannung), soll ein Timer gestartet werden.
- Der Timer soll gestoppt werden, sobald die Spannung unter die Referenzspannung abfällt.
Den Timer zu starten ist einfach, bei Überschreiten der Referenzspannung wird der Timer in einer Interruptroutine gestartet, kein Problem. Aber wenn ich den Interrupt auf die steigende Flanke konfiguriere, kriegt der ja die fallende Flanke nicht mit und stoppt im Zweifelsfall erst, wenn die nächste steigende Flanke eintritt. Ich brauche aber die Dauer des Impulses, weil die Pausenzeiten (und die Impulslängen) nicht immer gleich lang sind.
Gibt es da eine Möglichkeit, das über den Comparator zu realisieren, oder ist es einfacher, die Schwellwerterkennung direkt im Messgleichrichter bzw. -Verstärker zu machen und dann die Pulsdauer mittels Pulsein zu messen?
Bin für jede noch so kleine Information dankbar :)
Grüße
Stefan
ich arbeite zur Zeit an einem kleinen Projekt, und möchte einen Atmel-Prozessor (Attiny13) so programmieren, dass er mir die Länge eines quasi-analogen Impulses misst und ausgibt.
Problemstellung ist folgende:
- Ein NF-Signal wird gleichgerichtet und mit AIN0 verbunden
- Eine Referenzspannung gelangt über einen Spannungsteiler an AIN1
- Überschreitet die gleichgerichtete NF-Spannung an AIN0 einen bestimmten Schwellwert (also die Referenzspannung), soll ein Timer gestartet werden.
- Der Timer soll gestoppt werden, sobald die Spannung unter die Referenzspannung abfällt.
Den Timer zu starten ist einfach, bei Überschreiten der Referenzspannung wird der Timer in einer Interruptroutine gestartet, kein Problem. Aber wenn ich den Interrupt auf die steigende Flanke konfiguriere, kriegt der ja die fallende Flanke nicht mit und stoppt im Zweifelsfall erst, wenn die nächste steigende Flanke eintritt. Ich brauche aber die Dauer des Impulses, weil die Pausenzeiten (und die Impulslängen) nicht immer gleich lang sind.
Gibt es da eine Möglichkeit, das über den Comparator zu realisieren, oder ist es einfacher, die Schwellwerterkennung direkt im Messgleichrichter bzw. -Verstärker zu machen und dann die Pulsdauer mittels Pulsein zu messen?
Bin für jede noch so kleine Information dankbar :)
Grüße
Stefan