www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Warum funktioniert das Programm ohne Stack?


Autor: Michael D. (etzen_michi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Bin grad im Tutorial bei den LCD`s und frage mich warum das angehängte 
Programm ohne einen Stack funktioniert.

Zumindest sehe ich nirgends das ein Stack initialisiert wurde, er zeigt 
mir aber die richtige Zahl auf dem Display an.

Theoretisch müsste er doch spätestens beim zweiten durchlauf nurnoch 
Müll schreiben b.z.w. schon beim ersten ret Mist bauen.

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael Dierken schrieb:
> Theoretisch müsste er doch spätestens beim zweiten durchlauf nurnoch
> Müll schreiben b.z.w. schon beim ersten ret Mist bauen.
Ja tut er auch. Hab grad mal dein Programm laufen lassen. Nur wenn der 
Stackpointer initialisiert wird funktioniert es.

Autor: Michael D. (etzen_michi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber wie kommt es das er mir alles richtig auf dem Display angezeigt 
wird .. ist es möglich das der Stack nach einem Reset weiterhin 
initialisiert ist?


Edit: Läuft auch nach kurzem abschalten der Spannung (lasse das jetzt 
mal etwas länger abgeschaltet)

Edit2: Habe nun 10Minuten aus gehabt .. geht noch immer ... AVR 
gelöscht, neu beschrieben .. geht immernoch...

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael Dierken schrieb:
> Aber wie kommt es das er mir alles richtig auf dem Display angezeigt
> wird .. ist es möglich das der Stack nach einem Reset weiterhin
> initialisiert ist?

Ich habe dir ne Fehlinformation gegeben. Im Datenblatt steht, dass der 
Stackpointer beim Reset mit RAMEND initialisieret wird.

Den AVR-Simulator scheint das aber wenig zu kümmernn. Damit habe ich 
den Code getestet unter Zuhilfenahme von Hapsim.


Gruß Skriptkiddy

Autor: Michael D. (etzen_michi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich dich richtig verstehe wird der Stack automatisch initialisiert 
.... Sprich ich brauch den nie Initilisieren???

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael Dierken schrieb:
> Sprich ich brauch den nie Initilisieren???

Beim tiny2313 trifft das zu. Beim Atmega8 nicht. Da wird der 
Stackpointer mit 0x0000 initalisiert. Im Datenblatt des jeweiligen 
Controllers stehen die Resetwerte drinnen.

Gruß Skriptkiddy

Autor: Michael D. (etzen_michi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch gut ... alles total lustig hier


Vielen Dank für deine Hilfe .. währe ich nie drauf gekommen.

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael Dierken schrieb:
> währe ich nie drauf gekommen.

Ein Blick ins Preliminary ist manchmal sehr aufschlussreich. ;)

Gruß Skriptkiddy

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael Dierken schrieb:
> Auch gut ... alles total lustig hier
>
>
> Vielen Dank für deine Hilfe .. währe ich nie drauf gekommen.

Was glaubst du, warum fast jede dritte Frage hier im Forum mit einem 
"Schau ins Datenblatt" beantwortet wird.

Autor: Michael D. (etzen_michi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sagen wir so .. ich habe das so "gerlernt" das der Stack immer wenn call 
oder rcall verwendet werden soll initialisiert werden MUSS.

Ich hatte jetzt erstmal nach fehlern im Programm, initialisierung des 
Stack und sonstiges geguckt ... aber ins Datenblatt ... da währe massig 
Zeit vergangen .... werde ich mir merken einmal mehr ins Datenblatt zu 
schauen.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael Dierken schrieb:
> aber ins Datenblatt ... da währe massig
> Zeit vergangen

Nö.
Ein Datenblatt ist kein Roman, den man komplett lesen muß.
Und es gibt eine Suchfunktion, ruckzuck ist man beim "Stack Pointer" und 
dessen "Initial Value".
Dauert schätzungsweise 5s zum Öffnen des PDF und nochmal 5s zum Suchen 
nach "Stack Pointer".


Peter

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.