Code verhält sich völlig unberechenbar

Gast #1268004
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren