Forum: Mikrocontroller und Digitale Elektronik DutyCycle mit AtMega32 funktioniert nur halb


von clorky (Gast)


Angehängte Dateien:

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

von P. M. (o-o)


Lesenswert?

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.

von clorky (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.