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


von Carsten (Gast)


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

von Schlappi (Gast)


Lesenswert?

Da wird der Stack doch nicht richtig initialisiert???

von Carsten (Gast)


Lesenswert?

Reset:
  ldi  Temp1,RAMEND            ;Stack initialisieren
  out  SPL,Temp1
doch

von Ingo Henze (Gast)


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

von Carsten (Gast)


Lesenswert?

Das ist mir schon klar, aber wie finde ich den Hund ?

von Carsten (Gast)


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 ?

von Schlappi (Gast)


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...

von Carsten (Gast)


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.

von Schlappi (Gast)


Lesenswert?

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

von Carsten (Gast)


Lesenswert?

aha, und wie?
In der Hilfe finde ich nichts...

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.