mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega debuggen


Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hab das Problem, dass mein Atmega1280 + ENC board nach 2 - 5 Tagen 
einfach den Dienst verwehrt und garnichts mehr tut (nicht nur Netzwerk 
funktioniert nicht, sondern auch die einfachsten sachen in der main 
nicht)


Gibt es eine Möglichkeit das Ding 2 Tage laufen zu lassen bis es 
abstürzt und dann irgendwie via so einem JTAG zu sehen, was er gerade 
macht und denkt? (Also wo er sich im Programm befindet und hängt oder 
was evtl. für ein Fehler aufgetreten ist)


Bin wirklich etwas ratlos :(

Autor: nixVerstaan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Controller ist noch ok? Also Ein-Ausschalten hilft?

Ist es sicher, dass Deine Anwendung abschmiert? Und wie sollen wir Dir 
helfen, wenn wir nicht wissen, was Du eigentlich machst?

Einen Post-Mortem-Debugger müsstest Du Dir selbst zusammenschrauben. 
Vielleicht einfach ein paar Statusmeldungen ins EEPROM schreiben, aber 
Vorsicht! Das interne EEPROM kann nur 10000 Schreibzyklen (beim mega88) 
ab. Blick ins Datenblatt hilft.

Oder dasselbe mit externem RAM (das Du auch von extern auslesen kannst),

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also im Prinzip läuft da einfach nur der Stack von Ulrich Radig mit ein 
paar kleinen Erweiterungen um Ports zu schalten etc.

Was abschmiert weiß ich leider nicht, der Controller hält seine 
Pinzustände, macht aber einfach garnix mehr (in der hauptschleife wird 
eine Funktion aufgerufen, die auf Eingänge pollt und dann Ausgänge 
setzt, das funktioniert schon nichtmehr)

Strom Weg, Strom Rein und alles funktioniert sofort wieder ein paar Tage 
lang.

Was tut ein AVR eigentlich bei ner Division durch 0? Bin grad auf der 
Suche, ob ich sowas vielleicht eingebaut hab.


Grüße

Autor: Roland Praml (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also mit dem JTAGICE MKii geht das.

Du musst allerdings alles schon "vorverkabeln", d.h. PC, JTAG sowie 
Board müssen die 2 Tage lang durchlaufen. Wenn sich der Prozessor dann 
aufhängt* klickst im AVRstudio auf "Pause" und du siehst die Codestelle

*aufhängt in dem Sinne, dass er eigentlich das macht was du programmiert 
hast, typische Fehler sind z.B.:
- Stack-Pointer modifizieren bei eingeschalteten Interrupts
- Register r0 modifizieren (der GCC geht davon aus, dass zu jeder Zeit 
eine 0 drin steht)
- Stack Overflows (irgendwelche Buffer überschreiben den Stack oder 
umgekehrt)

wenn er sich aber "richtig" aufhängt, z.B. durch 
Spanungseinbrüche/Spitzen oder Ausfall des Taktes hilft dir auch der 
Debugger nicht mehr.

Gruß
Roland

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann werd ich mir mal so nen JTAG besorgen, anders komm ich irgendwie 
nichtmehr weiter :( V.a. ist der Testzyklus echt langwierig wenn es 
immer 5 Tage dauert bis man mal weiß, ob es nun tut oder wiedermal 
nicht...

Wenn er dann richtig abstürzt, dann weiß ich wenigstens, dass ich beim 
hardware bauen schrott gebaut hab und nicht in der software... So weiß 
ich irgendwie garnicht wo ich suchen soll.

Um Hardwareprobleme auszuschließen hab ich nun mal versucht den externen 
Quarz runterzunehmen und ihn mit dem internen osszilator zu betreiben. 
Sollte dann keine Antenne mehr geben und mit der kleineren Frequenz ist 
er dann auch vielleicht ein bisschen stabiler gegen 
Spannungsschwankungen (BOD ist aber auf 4,3V gesetzt)

Danke für euere Hilfe!

Autor: MeinerEiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also wenn er wirklich hängenbleibt und nix mehr tut, könnte man ja mal 
den Watchdog einschalten. Wenn er dann durchläuft, ist zwar die 
eigentliche Ursache nicht weg, aber zumindest das Problem, dass er 
irgendwann nix mehr tut.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ansonsten mal über freie IO's (der Prozessor hat ja genug davon) sowie 
der uart ein-eindeutige Zustände ausgeben, die anzeigen, wo sich das 
Programm gerade befindet. Wenn die Ports nach dem Absturz erhalten 
bleiben, sollte das gehen. Vielleicht lässt sich da ein Muster ableiten 
und eine kritsche Stelle einkreisen.

Ganz blöd wird es nur, wenn das Programm mit den zusätzlichen Ausgaben 
nicht mehr abstürzt...

Oliver

Autor: Pete K. (pete77)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kanst Du nicht debug-Ausgaben auf eine serielle Schnittstelle ausgeben 
und am PC loggen ?

Ist Deine Stromversorgung stabil ? Abblockkondensatoren ?

Poste doch mal den Schaltplan und das Board. Vielleicht kann man da 
schon etwas sehen.

Als Softwarefehler bietet sich ein Stack-Overflow an, das ist natürlich 
schwer zu debuggen.

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.