www.mikrocontroller.net

Forum: Compiler & IDEs Code verhält sich völlig unberechenbar


Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

beim Versuch, einen Wii Nunchuk mit einem Atmega8 über TWI anzusteuern, 
bin ich an eine Stelle gestoßen, an der mein Code völlig merkwürdige 
Sachen tut und kleine Codeänderungen, die das Verhalten eigentlich nicht 
beeinflussen sollten, entscheiden, ob mein Programm läuft oder nicht.

Mein Code gibt eigentlich in einer Endlosschleife die Daten von dem 
Controller schön formatiert über den UART aus, was auch soweit ganz gut 
geklappt hat. Jetzt habe ich zwei Versionen von meinem Code: Die eine 
funktioniert problemlos und die andere gibt nur einen Haufen "x" aus, 
was bedeutet, dass main() immer wieder von vorne ausgeführt wird. Der 
einzige Unterschied zwischen den Programmen ist eine Funktion 
("dumme_funktion()"), die nicht einmal aufgerufen wird.

Hier ist der Code:

main.c, die tut und Daten ausspuckt:
http://pastebin.com/f52c6555e

main.c, die nur laufend "x" ausgibt:
http://pastebin.com/f44a72ced

serial.h:
pastebin.com/f3270ee9b

serial.c:
pastebin.com/f4601c083

CMakeLists.txt (statt Makefile):
pastebin.com/f5ca0a7db

Hier sind noch die zwei disassemblierten Programme, falls das etwas 
hilft:
funktionierende Version: http://pastebin.com/f2eea5073
nicht funktionierende Version: http://pastebin.com/f2ab22dec

Ich hätte gerne ein Minimalbeispiel gepostet, aber bei der Art von 
Problemen ist das etwas schwierig. ;)

Wenn mir jemand dabei helfen könnte, wäre ich euch unendlich dankbar. 
Ich stehe grade kurz vor dem Verrücktwerden... Ach ja: Den Atmega8 habe 
ich natürlich schon ausgetauscht, mit genau dem gleichen Ergebnis. Daran 
kann es also nicht liegen.

Vielen Dank!
Daniel

Autor: Uwe ... (uwegw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie viel RAM ist belegt? Die vielen Texte belegen grob geschätzt schon 
deutlich mehr als 600 Bytes. Irgendwann wird es eng, wenn noch die 
sonstigen Variablen und der Stack dazukommen...

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stack Überlauf da der RAM durch die ganzen Strings voll ist?

Autor: Roland Praml (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke! duck

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.