Gast
#2932306
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