DutyCycle mit AtMega32 funktioniert nur halb

Gast #2932306
Lesenswert?

Grüße,

ich möchte mit einem AtMega32 eine DutyCycle auslesen. Die Frequenz des 
Eingangsignals soll von so 1 kHz - 4 kHz sein.

Ich verwende den ICP um das Signal mittels Interrupt einzulesen. Die 3 
Interrupt funktionieren soweit auch (1. Statzeit ermitteln, 2. 
High-Dauer ermitteln, 3. Periodendauer ermitteln).

Dies Funktioniert bisher ganz gut, leider nur bis zu einer Frequenz von 
500 Hz.
Vergrößert man die Frequenz weiter, Wird die DutyCycle um einen Festen 
Wert falsch ermittelt (~ +37%).

Der µC läuft mit 1 MHz (zur Zeit noch ohne Quartz).

Ich habe leider zur zeit keine Möglichkeit zum Debuggen.

Der Code ist im Anhang; der Fehler ist entweder in den 
Interrupt-Registern oder in der ISR(TIMER1_CAPT_vect) Interrupt-Routine.

MFG
Angehängte Dateien:
Gast #2932323
Lesenswert?

P. M. schrieb:
> clorky schrieb:
>> Ich habe leider zur zeit keine Möglichkeit zum Debuggen.
>
> Doch, hast du. Irgendwie musst du den Wert für den Duty Cycle ja
> ausgeben. Und genau auf diesem Weg kannst du auch Zwischenergebnisse
> ausgeben und so mal feststellen, welche Zwischenergebnisse stimmen und
> woher der Fehler kommt.

Das tue ist bereits. Die Ausgabe besteht aus einem 4Stelligen Display 
(Blöd für 16 Bit-Variablen). Dennoch verstehe ich unter Debuggen etwas 
ganz anderes.

MFG

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren