www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 4433 bleibt bei rcall stehen


Autor: Stefan Kneller (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Tagchen zusammen,

ich beschäftige mich schon einige Zeit mit Assembler auf den
Controllern 1200, 8535 und Mega16 von Atmel. In der Regel klappt auch
das meiste, was ich so anstelle. Nun möchte ich einen 4433, der noch
hier rumliegt, unter anderem als Betriebsstundenzähler mit
gemultiplextem LED-Display einsetzen. Ich habe zwei Probleme, die im
Umgang mit anderen Controllern bisher nicht aufgetaucht sind:
bei meinem kurzen Testprogramm können keine Unterprogramme aufgerufen
werden, sondern es bleibt beim Befehl rcall stehen.
Im AVR-STUDIO 3.5 bleibt das Programm im Einzelstepmodus auch dort
hängen im Multistep läuft es jedoch korrekt.

und zweitens
wenn ich die Unterprogrammaufrufe weglasse oder durch entsprechenden
Code ersetze, läuft das Programm. Lasse ich am Ende des Programmes den
rjmp start-Befehl weg, dann läuft das Programm trotzdem in einer
Endlosschleife. Rausgefunden habe ich schon, dass es dann am Ende über
die Reset-Adresse wieder einspringt. Aber warum ? Was sind meine
Denkfehler ?

Ich weiss nicht mehr weiter und stehe kurz vor dem Entsorgen/Zerstören
des Controllers.
Mit einem Mega 8 wäre das sicher nicht passiert.

Stefan Kneller

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die nicht funktionierenden Calls klingen nach einem falsch
initialisierten Stack.

Was soll das Programm denn am Ende machen?  Die CPU kann ja nicht
einfach ,,anhalten'', sondern sie führt stur einen Befehl nach dem
anderen aus.  Den Zustand ,,es gibt keinen Befehl mehr'' gibt's ja
nicht: irgendwas steht immer im ROM.  Der gelöschte ROM enthält das
Bitmuster 0xffff, das (undokumentierterweise) wie NOP behandelt wird.
Damit wird der ungelöschte ROM praktisch stillschweigend vom
Befehlszähler durchlaufen, bis Du wieder von vorn beginnst.

> Ich weiss nicht mehr weiter und stehe kurz vor dem
> Entsorgen/Zerstören des Controllers.

Vielleicht solltest Du lieber über einen Compiler nachdenken, der Dir
die Trivialfehler dieser Art vermeidet. ;-)

Autor: Nik Bamert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, vielleicht funktioniert's mit dem neuen Avrstudio 4 ja..(?)
siehe:http://www.atmel.com/dyn/products/tools_card.asp?t...

MFG Nik

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist doch kein 8051.
Beim AVR mußt Du immer den Stack setzen, der zeigt nach einem Reset in
den Wald.

Und bei den größeren SPH nicht vergessen.


Peter

Autor: Stefan Kneller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, dass der Controller nicht einfach an dem Punkt anhält, ab dem keine
weiteren befehle stehen und den gesamten FLASH-Speicherbereich
abarbeitet, leuchtet ein.
Aber warum springt er nicht in die Unterprogramme. Ich bin der festen
Meinung, den SP richtig initialisiert zu haben.

;***** Include if used on device with RAM

  ldi  temp,low(RAMEND)
  out  SP,temp

Für den Kleinen 4433 gibt es doch nur eine 8bit-Adresse, oder ?

Stefan K.

Autor: René König (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Initialisierung des Stacks wird durch das 'rjmp reset' einfach
übersprungen, Du mußt das Label 'Reset:' zwei Befehle höher setzen.

Autor: Stefan Kneller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke René,

genau das war es. Wie konnte ich nur so blind sein.

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.