Hallo, ich habe ein relativ großes Programm in BASCOM. Grob gesagt liest es einen UART ein und generiert Ausgaben auf einem zweiten UART. Nach einiger Zeit tritt ein seltsamer Effekt auf und zwar werden einfach wahllos irgendwelche Zeichen ausgegeben, diese Ausgaben kommen definitiv nicht in meinen "prints" vor. Falls es zu diesem Absturz kommt, werden die Zeichen sehr schnell hintereinander ausgegeben, sprich es sieht so aus als würde meine main Loop nicht mehr durchlaufen werden. Ich würde ungerne das ganze Programm posten, auch weil es einfach ziemlich groß ist und es ein grundsätzliches Problem zu sein scheint. Könnte mir jemand einen Tipp geben, in welchen Bereichen ich suchen muss bzw was solche Fehler verursachen kann? Wird da irgendwie der Stack überschrieben? Der µC ist ein Atmega644P. Danke!
> Wird da irgendwie der Stack überschrieben? Möglicherweise. >Könnte mir jemand einen Tipp geben, in welchen Bereichen ich suchen muss >bzw was solche Fehler verursachen kann? Große Teile des Programms rausschmeißen und probieren ob es dann wieder geht. Lange Texte z.B.
Reicht es diese auszukommentieren oder komplett rausschmeissen?
>Reicht es diese auszukommentieren oder komplett rausschmeissen?
Na was wohl? Kommentare fressen keinen Speicher auf dem uC;)
Habe den Fehler gefunden, glaube ich. Es lag an einer Funktion, aus der ich in einer if-Abfrage per return rausgesprungen bin. Habe dort am Anfang pushall und vor dem return popall hinzugefügt. Nun klappt es
Alex schrieb: > Es lag an einer Funktion, aus der ich in einer if-Abfrage per return > rausgesprungen bin. Habe dort am Anfang pushall und vor dem return > popall hinzugefügt. Huch, was es in Bascom nicht alles gibt. Unter C springt ein Return nicht irgendwohin, sondern kehrt zum Aufrufer zurück. Unter C ist ein Return uneingeschränkt an jeder Stelle möglich, ansonsten wäre es ein Bug des Compilers. Unter C hat der Compiler die verdammte Pflicht, den Stack so aufzuräumen, daß das Return keine Unordnung hinterläßt. Da scheint es also einige eklatante Unterschiede zwischen Bascom und C zu geben. Peter
Jap, das wundert mich auch, vor allem weil ich eigentlich aus der Java-Ecke komme. Naja hinnehmen und nicht drüber wundern. Alternativ C lernen, aber nicht bei diesem Projekt :)
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.