Hallo, baue hier gerade ne Anwendung mit einem 90s8535 und einem Display dran. Aber ich glaube das wird langsam alles zu gross. avr-gcc sagt nämlich das gleich kein Platz mehr für den Stack auf dem SRAM da ist, und ich solle mir doch mal was einfallen lassen. :-) Nur ist das Problem, das ich noch nicht wirklich fertig bin mit meinem Programm. Da kommt also noch einiges dazu in Form von ASCII Zeichen fürs Display. (Menueführung und so) Was soll ich denn nun tun? Bleibt mir nur der Umstieg auf einen Mega? Der ATMega128 hätte da 4k antatt einem halben k wie der 8535. Das würde reichen, oder kann man da was anderen machen? Den Code verkleinern geht nicht. Programm verkleinern bring mir nix. Dann wäre ich ja in funktionalität des Endproduktes beschnitten. Liebe Grüsse Division
Code optimieren (Verschachtelungstiefe der Funktionsaufrufe reduzieren, Variablen reduzieren oder - falls selten benutzt - ins EEPROM auslagern) oder für mehr RAM sorgen. Ohne Programmeinsicht sind Vorschläge schwierig. Willst Du die ASCII-Zeichen auch im RAM ablegen? Falls ja, wozu ist das gut? Gruß, Frank
Thema Variablen: Nicht unnötig gross machen, oft schon gesehen, dass für logische Bitvariablen chars eingesetzt werden, ebenso int und long statt char und int. Wie gross sie wirklich sein müssen, können wir nicht wissen. Ganz wichtiges Thema: lokale statt globale Variablen einsetzen. Lokale Variablen können überlagert werden (solange sie nicht static sind), im Normalfall braucht man nur wenige globale Variablen. Zeichenketten haben im RAM nichts verloren, sie stehen im Normalfall ja schon im flash. Für Zeichenketten, die ans Display geschickt werden, einen Buffer anlegen, max. so groß wie das Display Zeichen pro Zeile hat. Alle Ausgaben werden in diesen Buffer geschrieben und dann ins Display. Sorgsam mit Arrays umgehen, die können ganz schnell richtige Speicherfresser werden, int [10][2][2], schwups sind 80byte RAM weg. Wie managt der Compiler die Verteilung von Daten- und Hardwarestack?
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.