www.mikrocontroller.net

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


Autor: fksystems (Gast)
Datum:

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

Autor: Matthias (Gast)
Datum:

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

Autor: HanneS (Gast)
Datum:

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

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.