Forum: Mikrocontroller und Digitale Elektronik 3 level deep hardware stack - was bedeutet das??


von fksystems (Gast)


Lesenswert?

Ich habe hier einen ATtiny11.

ich wollte da so ein programm in assembler reinmachen.
das lief auch alles fehlerfrei.

jetzt habe ich wo an einer stelle noch eine prozedur eingefügt:
und zwar das hier:


  sbis PORTB, 0
        rjmp an1
        cbi PORTB, 0
        rjmp lab5;
        an1:
        sbi PORTB, 0
  lab5:


(soll bei erreichen dieser befehle immer einen bestimmten ausgang von
low auf high und andersrum machen.)

das habe ich wo so reingemacht, daß es nur aufgerufen wird, wenn was
bestimmtes vorher passiert ist oder nicht.

ob diese befehle ausgeführt werden, wird mit befehlen wie brcs, sbis
und rjmp festgelegt.

tatsache ist jedoch, daß das da eingefügte an der stelle nicht korrekt
von dem microcontroller ausgeführt wird und nur müll bei rauskommt.

(die sprungmarken sind alle korrekt und nicht doppelt.)

und es kam auch müll raus, obwohl ich das da eingefügte schonmal an
anderen stellen wo ohne probleme benutzen konnte.

jetzt die frage:
kann da das mit dem 3-level deep hardware stack dran schuld sein?

wird denn auch für befehle wie brcs, sbis und rjmp der hardware stack
benutzt oder wird der hardware stack nur bei ganz anderen sachen
benutzt?

bei was würde denn sonst der hardware stack benutzt werden, also was
dürfte ich denn in diesem fall nicht mehr als "3 level deep" machen?

von Matthias (Gast)


Lesenswert?

die Befehle sbis, brcs und rjmp sind Sprungbefehle, wo der Stack nicht
verwendet wird. Der wird eher verwendet wenn du Poppst und Pushst oder
halt, wenn du ein Unterprogramm aufrufst. Dann wird die
Rücksprungadresse dort abgelegt.

von HanneS (Gast)


Lesenswert?

POP und PUSH geht bei Hardware-Stack nicht...

Hardware-Stack wird verwendet:

- bei Aufruf von Unterprogrammen mittels RCALL-RET,
- bei auftretenden Interrupts, deren ISR mit RETI verlassen wird.

Die 3-Level-Tiefe bedeutet, dass man nur 3 Ebenen hat, also
Unterprogramme nicht unnötig verschachteln sollte...

Bit- & Bytebruch...
...HanneS...

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.