Forum: Mikrocontroller und Digitale Elektronik clock interrupt [assembler]


von Fabian S. (fabian727)


Angehängte Dateien:

Lesenswert?

Hi @ all,

ich bin am anfang des programmierens und versuche Interrupts zu 
kontrollieren.

Ziel des angehängten Projektes ist es 12 LEDs nacheinander aufleuchten 
zu lassen. Jedes mal, wenn die Clock ein Interrupt abgibt, wird die 
nächste LED angeschaltet und die vorherige ausgeschaltet -> immer nur 1 
LED an.

Leider bin ich noch nicht einmal bis dahin gekommen, da sich das 
Interrupt nach dem ersten aktivieren nicht mehr abschaltet. Wo ist der 
Fehler?

Als erstes wird alles initialisiert, wie es soll. Danach geht er in die 
Loop.
Sobald der erste Interrupt kommt in die Clock:
Danach springt er aber mit dem Befehl "reti" nicht zur 0x000 -> main, 
sondern wieder zur "Clock:" und bleibt dort in der Dauerschleife.

Die Uhr wird mit reti immer auf 0x04 gesetzt, egal was ich mache. Warum?
Desweiteren aktivieren sich die Flags für die CompareMatch, sobald die 
clock bei 0x00 angekommen ist. Warum aktivieren die sich? ich habe noch 
nicht einmal den Interrupt dafür enabled

thanks im voraus
fabi

von chris (Gast)


Lesenswert?

der stack fehlt also nicht initialisiert

von Fabian S. (fabian727)


Lesenswert?

sehr cool, was die zeile:

        ldi r16, RAMEND  ; Stackpointer initialisieren
         out SPL, r16

beim attiny2313 ausmacht :D

jetzt funktionierts.
Danke

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.