Liebe Kollegen, ich vermute, dass ich in meinem C-Programm für ATMEGA1284P einen Overflow bei einer Berechnung habe. Ich habe nämlich in dem Programm drei lange int16 Arrays erstellt (3 * 1024) und mit 0 gefüllt. An einer anderen Stelle des Programms werden die Nullen testweise aufs Terminal ausgegeben und and drei hintereinander liegenden Stellen sind in einem der Arrays irgendwelche Zahlen drinn. Auf diese Arrays wird bis auf die Initialisierung sonst nirgendwo schreibend zugegriffen. Vermute ich es richtig, dass ich irgendwo im Programm einen Fehler habe, z.B. bei einer Berechnung, wo eine Variable überläuft, und es werden mir die Inhalte des Arrays überschrieben? Wie sucht man den Fehler :-)? Nutze Eclipse mit WinAVR (gcc). Vielen Dank Karel
Erstens mal das Programm posten und zweitens, kann man jede berechnung die man im Code hat mal von Hand durchführen und zwar genau so wie es der Controller auch macht. Dann sieht man auch schnell was für zahlen dabei raus kommt und ob sie über den Datentyp drüber hinaus gehen
Also ausgehend von deinem angehängten Quellcode würde ich sagen: vielleicht. Allerdings hört sich die Beschreibung etwas spanisch an, denn wenn auf die Variablen nur lesend zugegriffen wird, wie soll dann etwas überlaufen? Eher würde ich dann noch vermuten dass du irgendwo fehlerhaft mit Pointern o.ä. arbeitest und aus Versehen einen Speicherbereich manipulierst der eigentlich nicht angefasst werden soll. Ansonsten: Quellcode schrittweise durchdebuggen.
Karel Marsalek schrieb: > Wie sucht man den Fehler :-)? Man setzt im Debugger einen Breakpoint beim Schreibzugriff auf die entsprechende Variable oder den Variablenbereich. Ich würde erst mal schauen ob der richtige Prozessor beim Compiler eingestellt ist und schauen ob der Stackpointer entsprechend initialisiert ist. Gruß Anja
Danke! Problem gelöst. Es lag am (doofen) Zugriff auf das Array mittels Pointer. Karel
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.