Forum: Mikrocontroller und Digitale Elektronik Timer0 Problem - Bascom - ATMega64


von Ralf P. (ralfp)


Lesenswert?

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.

von bascom-looser (Gast)


Lesenswert?


von Ralf P. (ralfp)


Lesenswert?

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

von bascom-looser (Gast)


Lesenswert?

Compare Match ist dort auch must nur alles lesen

von Ralf P. (ralfp)


Lesenswert?

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

von Ralf P. (ralfp)


Lesenswert?

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

von bascom-looser (Gast)


Lesenswert?


von Gast (Gast)


Lesenswert?

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.

von Ralf P. (ralfp)


Lesenswert?

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