www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hilfe, R21 verändert sich


Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum...
Ich habe hier ein Problem mit einem Register.
Ich habe das r21 mit .def Status =r21 definiert.
Während des Programmablaufes wird dieses plötzlich zu 255.
Bis dahin sind aber schon einige Zyklen vergangen und ich habe
definitiv keinen Zugriff auf dieses Register von anderer Seite gehabt.
Wie kann ich da den Fehler suchen ?
Es handelt sich um den ATTiny2313

Autor: Schlappi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da wird der Stack doch nicht richtig initialisiert???

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Reset:
  ldi  Temp1,RAMEND            ;Stack initialisieren
  out  SPL,Temp1
doch

Autor: Ingo Henze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da die Register auch im RAM-Bereich abgebildet werden (ab Adresse 0),
kann man sie auch mit den Datentransfer-Befehlen wie LD und ST
erreichen.
Falls da ein "Zeiger" nicht stimmt, oder der Stack überläuft, kann
man sich damit auch ungewollt Register überschreiben, ohne diese
explizit anzusprechen.

Gruß
Ingo

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist mir schon klar, aber wie finde ich den Hund ?

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab den Übeltäter durch zufall gefunden...
gibt es da keine andere Möglichkeit als das Programm step by step durch
zu orgeln ?
Kann man nicht irgendwie Stopmarken setzen, wenn ein Ereignis resp.
Registerwechsel stattfindet ?
Gibt's sowas wie debug.print in VB im AVR Studio ?

Autor: Schlappi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nö, bedingte Breakpoints sind dem AVR-Studio unbekannt...
Da hilft nur ein Einbau einer Abfrage in deinen Quelltext, dort kannst
du dann einen Brechpunkt setzen...

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alles in allem schein der Simulationsbetrieb im Studio ja sehr schwach
zu sein...
Oder kann man das UART bedienen bzw. Daten über's UART ausgeben ?
Alternativ kann ich zwar auf mein STK500 brennen aber da kann ich ja
offensichtlich nicht den Programmablauf verfolgen. Oder hab ich das nur
noch nicht gefunden ?
Wie debugt Ihr denn so?
Auf den MC schießen und gucken ob sich die letzte Änderung gelohnt hat
?
Ich hab nämlich noch ein Problem mit dem SRAM.
Ich schreibe da ein Byte vom UART ins SRAM und lese es danach wieder
aus um es auf einem Display anzuzeigen.
Im Studio absolut top, auf'm Board Schrott.

Autor: Schlappi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eingaben an Ports (auch UART) z.B., kannst du mit einem Inputfile
simulieren.

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aha, und wie?
In der Hilfe finde ich nichts...

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.