Hallo Leute. Ich versuche gerade den Timer0 beim ATMega64 zu betreiben. Er soll, wenn der Timer den Zählerstend 250 erreicht hat in die Interrupt-Serviceroutine "Isr_on_compare_match_0" springen und dann RELOAD. Er kommt aber nicht in die ISR. Ich hab Euch mal einen Codeschnipsel angehängt, wie ich es versuche. Wo liegt mein Fehler? Wenn ich die Zeile "Enable Oc0" im Programm auskommentiere arbeitet er das Hauptprogramm ganz normal ab, springt aber nie in die ISR. Wenn ich die Zeile "Enable Oc0" im Programm drin habe kommt er nicht mal in´s Hauptprogramm. ************************************************************************ * ************************************************************************ * $regfile = "m64def.dat" $crystal = 6144000 $hwstack = 256 $swstack = 128 $framesize = 256 Config Timer0 = Timer , Prescale = 1024 , Clear Timer = 1 Ocr0 = 250 On Oc0 Isr_on_compare_match_0 Start Timer0 Enable Interrupts Enable Timer0 Enable Oc0 <****** Hier gibt´s Probleme ***************** '-----HAUPTPROGRAMM----------------------------------------------------- - Do Loop '----HAUPTPROGRAMM ENDE-------------------------------------------------- '-----ISR--------------------------------------------------------------- - Isr_on_compare_match_0: 'Hier springt er leider nie rein Return '-----ISR ENDE----------------------------------------------------------- ************************************************************************ * ************************************************************************ * Kann mir jemand sagen wie´s richtig geht? Danke schon mal. Gruß Ralf und einen schönen Sonntag noch.
Hallo. Danke für den Link (hab ich auch gleich in meine Favoriten übernommen). Für mein Problem mit dem Compare Match hab ich aber leider keine Lösung gefunden. Hat vieleicht noch jemand einen Tip für mich? Gruß Ralf
Hallo bascom-looser. Vielen dank nochmal für den Link in´s andere Forum. bascom-looser wrote: > Compare Match ist dort auch must nur alles lesen Ich hab´ alles gelesen, jetzt schon zum zweiten mal, falls ich beim ersten mal vieleicht was übersehen hätte. Diesen Eintrag http://bascom-forum.de/index.php?topic=10.msg646#msg646 habe ich auch schon beim ersten durchstöbern durchgelesen. Er hilft mir aber bei meinem Problem, wie bereits bemerkt, nicht weiter. Ich hoffe jetzt, daß mich vieleicht doch noch jemand auf den Fehler in meinem Code hinweisen kann. Bitte schaut Euch meinen Code an, ich habe extra alles unwichtige raus gelassen, daß er schön übersichtlich ist. Vieleicht brauche ich das "Enable OC0" ja auch gar nicht. Ich bin da noch recht unerfahren. Gruß Ralf
Hallo. Niemand da der sich erbarmt, ein Anfängerprogramm das in Bascom-Basic geschrieben wurde auf Fehler zu untersuchen und mir beim Weiterkommen hilft? Ist sicherlich nur ein Verständnisfehler meinerseits. Aber ohne Hilfe komme ich anscheinend nicht weiter. Bitte helft mir. Gruß Ralf
Wie stellst Du eigentlich fest, daß die ISR angesprungen wird? Die tut doch gar nichts? Falls Du den Simulator benutzt - "sim timers" angekreuzt? $SIM im Quelltext? Ansonsten - fang einfacher an, laß den Zähler von 250 rückwärst laufen, arbeite einfachere Beispiele ab (aus der Doku, die funktionieren) - dann gelangst Du wahrscheinlich zu neuen Erkenntnissen, die Dich weiterbringen.
Hallo allerseits. > Wie stellst Du eigentlich fest, daß die ISR angesprungen wird? Die tut > doch gar nichts? Oben habe ich ja geschrieben, daß ich alles nicht relevante zugunsten der Übersichtlichkeit raus gelassen habe. Unter anderem auch den Inhalt der ISR. Die tut im Programm selbst natürlich schon was. >Falls Du den Simulator benutzt - "sim timers" > angekreuzt? $SIM im Quelltext? Den Simulator habe ich auch benutzt, um zu sehen was sich tut. 'Sim timers' ist angekreuzt, $SIM klingt jedoch interessant... das hab´ ich nämlich nicht im Quelltext. Dieses steuert jedoch warscheinlich nur die simulierten Timer. Mit der realen Hardware hat es warscheinlich eher nix zu tun. Nehme ich an. Aber dort läuft´s ja auch nicht. Trotzdem Danke an alle. Ich wurstel mal weiter. Gruß Ralf
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.