Gast
#223013
Auch wenn es kein prägnanter Betreff ist, passen tut es irgendwie schon... Ich versuche seit längerem eine Schleifen-Funktion mit dem Output-Compare-Mode des Atmega16 mit GCC zu realisieren. Nach jeweils einer Millisekunde wird ein Output-Compare-Match-Interrupt ausgelöst, der eine Variable "n" hochzählt. In der delay-Schleife wird die Variable mit der Anzahl (abgespeichert in der Variablen "timer") der zu durchlaufenden Schleifen verglichen und wenn beide gleich sind, der Timer wieder gestoppt. Dieser Vergleich klappt jedoch nicht in der delay-Routine, allerdings gelingt er in der Interrupt-Routine schon. Zur Anzeige dienen mir PB0 (in der delay-Routine) und PB1 (in der Interupt-Routine), die jeweils gesetzt werden, wenn der Vergleichswert erreicht wurde. "n" ist als globale Variable definiert, warum scheitert dann also der Vergleich in der delay-Routine? Ich hoffe, es weiß jemand Rat. Gruß Christoph PS: Benutze ich keine Interrupts und frage des Output-Compare-Match-Flag direkt in der delay-Routine ab und zähle dabei "timer" einfach runter, funktioniert es wunderbar (Dieser Code-Teil ist auskommentiert.).