Forum: Mikrocontroller und Digitale Elektronik Interrupt geht aber falsch


von Stefan (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,
kann mir jemand helfen, ich will die LEDS an meinem Board (STK500)
blinken lassen.
Leider funktioniert es nicht mit Interrupt.
Das Programm ist in Assembler und ist im Anhang!

Mal eine Fage "RETI"-Befehl bedeuted, dass nach dem Interrupt an die
Stelle zurückgekehrt wird, wo der Interrupt gestartet wurde, warum
startet das Programm dann wieder neu mit Initialisierung.

von Mode (Gast)


Lesenswert?

Ohne das Programm gesehen zu haben. In den FuseBits den Watchdog
aktiviert?

von Stefan (Gast)


Lesenswert?

nein ist nich aktiviert

von ArminD (Gast)


Lesenswert?

Der Stackpointer ist nicht initialisiert.
Sprünge und Rücksprünge führen dann zu
merkwürdigen Effekten.


Gruss,
Armin

von mmerten (Gast)


Lesenswert?

Ohne Stackpointer Initialisierung wird das nix.
Immer zuerst SPL und SPH mit den richtigen Werten (letzte RAM Adresse)
belegen.

von Stefan (Gast)


Angehängte Dateien:

Lesenswert?

hier habe ich Stackpionter initialisiert, geht aber trotzdem nicht!
Das neue Programm ist im Anhang!

von ArminD (Gast)


Lesenswert?

Die LEDs werden in der Interruptroutine kurz
eingeschalten, aber sofort wieder im Hauptprogramm
ausgeschaltet. Vielleicht solltest Du im Timerinterrupt
die LEDs togglen und den Zugriff im Hauptprogramm
entfernen.


Gruss,
Armin

von johnny.m (Gast)


Lesenswert?

> ldi temp, low(RAMEND)  ;Stackpointer initialisieren
> out SPL, temp
> ldi temp, high(RAMEND)  ;Stackpointer initialisieren
> out SPL, temp

Du schreibst zweimal SPL statt SPL und SPH!

Ansonsten teile ich Armins Ansicht...

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.