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
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...
Stack Überlauf da der RAM durch die ganzen Strings voll ist?
du möchtest dir http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Vereinfachung_f.C3.BCr_Zeichenketten_.28Strings.29_im_Flash ansehen :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.