mikrocontroller.net

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


Autor: Ralf P. (ralfp)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: bascom-looser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Ralf P. (ralfp)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: bascom-looser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Compare Match ist dort auch must nur alles lesen

Autor: Ralf P. (ralfp)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ralf P. (ralfp)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: bascom-looser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ralf P. (ralfp)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.