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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.