Forum: Mikrocontroller und Digitale Elektronik Probleme mit TIM0_OVF


von Chris (Gast)


Angehängte Dateien:

Lesenswert?

Hy Leute, ich hoffe es kann mir wer helfen!

Habe erst angefangen in CodeVision zu programmieren.
Hab voher Assembler programmiert.

Also ich wollte eine einfache Uhr programmieren um einmal
etwas mit Timer Interrupts auszuprobieren.
Habe das Programm mit AVRStudio simuliert und bin draufgekommen
das der Timer0 Interrupt aufgerufen wird.
Das Problem ist jetzt dass das Programm von der ISR nicht mehr
wegkommt. d.h. das Programm bleibt immer in der ISR des Interrupts und
springt nicht mehr ins Hauptprogramm zurück.

Wo könnte das Problem liegen, weiß jemand Rat?

mfg Chris!!

von crazy horse (Gast)


Lesenswert?

sieht auf den ersten Blick zumindest korrekt aus.
temp in der ISR solltest du allerdings als static declarieren, hat aber
nichts mit dem von dir beschriebenen Fehler zu tun. Wenn du im
Einzelschrittbetrieb vorgehst, siehst du doch, an welcher Stelle es
"hängt". Breakpunkt an den Einsprung setzen, laufen lassen und dann
mit F11 immer Schritt für Schritt.
Ich habe jetzt keine Lust, das Ding zu testen.

von Chris (Gast)


Lesenswert?

Wenn er bei der ISR auf die letzte Zeile kommt fängt er wieder in der 1.
Zeile der ISR an.
Habe keine Ahnung warum.

mfg Chris!

von crazy horse (Gast)


Lesenswert?

habs mal versucht, zu compilieren, irgendwas mit dem LCD-Kram haut da
nicht, also Essig.
Kann natürlich gut sein, dass sich dein Hauptprogramm im Teil
delay_ms() aufhält (bei 250ms ist die Wahrscheinlichkeit recht hoch)
wenn der int kommt. Das sieht dann so aus, als ob direkt ein neuer int
kommt. Setz doch mal einen Breakpoint auf den Beginn der ISR, wenn er
da ankommt, cycle-counter auf 0 setzen und wieder auf F5, dann siehst
du, ob die timer-Zeit abgelaufen ist.
Ich schätze mal, das funktioniert alles und du merkst es nicht :-)

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.