Hallo Ihr Lieben, ich habe mir einen 7x7x7 LED Würfel gebaut, der über einen ATMega644P und 74HC573 gesteuert wird. Prinzipell funktioniert alles wunderbar. Mittlerweile habe ich viele verschiedene Programme erstellt, die ich in einer Endlosschleife ablaufen lasse. Prinzip: while (1) { // Programm1 // Programm1 // Programm1 // Programm1 // Programm1 // ... } Wenn ich die Programme einzeln bis max. 4 Programme auf den ATMega aufspiele funktioniert alles wie gewollt. Wenn ich allerdings alle meine Programme aufspiele hat der ATMega ab einem Punkt "Aussetzer". Bis zu diesem gewissen Punkt laufen die Programme sauber durch, dann werden die Bilder "zerrissen" und der Programmdurchlauf bricht (für mein Empfinden) vorzeitig ab und beginnt von vorne. Das Programm hat eine Größe von 18.5kB (28% Speicherbelegung). An Variablen welche sich gegenseitig in die Quere kommen liegt das Problem definitiv nicht. Wäre es geschickt die einzelnen Programme in Unterprogramme zu packen und über die Endlosschleife aufzurufen? Vielleicht hat jemand eine Idee, ich weiß nicht weiter... So groß war bisher noch keines meiner Mikrocontroller-Projekte. Den Code (ca. 100 Din A4-Seiten) möchte ich ungern hochstellen... Danke zander
>Wenn ich allerdings alle meine Programme aufspiele hat der ATMega ab >einem Punkt "Aussetzer". Bis zu diesem gewissen Punkt laufen die >Programme sauber durch, dann werden die Bilder "zerrissen" und der >Programmdurchlauf bricht (für mein Empfinden) vorzeitig ab und beginnt >von vorne. Hört sich nach Stack Überlauf an. Hast du grosse lokale Arrays? Die erscheinen nicht in der Speicherübersicht.
Hallo Holger, Arrays hab ich, jede Menge. Das Größte hat 344 Positionen (sagt man das so?). Wenn ich die Programme alleine auf den ATMega aufspiele funktioniert alles, warum sollte es bei mehreren Programmen plötzlich Probleme mit den Arrays geben? Als "Speicherübersicht" nutze ich die Info, welche ich von AVR Studio nach dem Kompiliern bekomme. Kann ich den Speicherplatz der Array irgendwie sichtbar machen? Gruß zander
Ausprobieren. Den RAM komplett mit einem bestimmten Wert zupflastern und nach einer Weile nachschauen bis wohin dieser Wert überschrieben wurde.
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.