BoGe-Ro
01.10.2010, 10:50
Hallo Forum,
der Titel ist zugegebenerweise sehr verwirrend, aber das Problem ist folgendes:
Ich entwickel ein Program auf dem Savvy128 Controller Board von chip45.com.
Mitlerweile meldet der Bascom-Compiler: Flash used: 51%
seit ich etwa die 50%-Marke überschritten habe, treten sehr oft Programmabstürze im ATMEGA auf.
Wenn ich beispielsweise eine Function ans Programmende anfüge, sie ordentlich deklariere, compiliere und auf den Controller brenne, spinnt anschließend mein Programm auf dem Controller.
Es werden wild Ausgänge geschaltet - an denen wo Hardware hinterhängt, seh ich anziehende und abfallende Ventile, oder PWM-Ansteuerungen von Lüftern und Heizungen und über die serielle Schnittstelle sehe ich Statusmeldungen von Neustarts aller paar Sekunden.
Mein LCD-Display füllt sich auf allen Positionen mit einem Zeichen.
Dies alles geschieht, nur durch den zusätzlichen Code, es gab noch keinen Aufruf der function.
Ein anderes Bespiel:
Ich möchte Parameter, zur Anzeige auf das Display bringen. Ca. 20 Parameter, wobei jeweils ein Parameter und sein Variablenname auf dem Display abgebildet werden soll.
Ursprünglich eine Case-Auswahl, zwischenzeitlich zur Fehlereingrenzung 20 If-Then Anweisungen wo je nach gewählter Parameter-Nummer die zwei LCD-Anweisungen ausgeführt werden (Variablenname und Variablenwert)
Jedenfalls, habe ich die gesamt Sub im Programm, spinnt alles, wie oben beschrieben, grenze ich per Auskommentierung vielleicht 10 der 20 If-Then-Blöcke aus läuft es.
Ich möchte damit ausdrücken, dass funktionstüchtiger Programmcode, offensichtlich einfach durch sein Vorhandensein für diese Abstürze verantwortlich ist - und das bei einem Flash-use von ca. 50%.
Da das Programm aus sehr vielen Änderungen besteht, wobei alte Programmteile nicht mehr aufgerufen werden, helfe ich mir jetzt damit, dass ich beim Auftreten eines Fehlers solch alten Code suche und lösche - mir damit Platz schaffe und somit dann auch an neuen Baustellen weiterkomme.
Aber der Fehler muss ja woanders liegen - wo kann ich noch suchen?
Wer hat ähnliches beobachtet - und vielleicht die Lösung gefunden?
besten Dank für kommende Lösungsvorschläge
BoGe-Ro
der Titel ist zugegebenerweise sehr verwirrend, aber das Problem ist folgendes:
Ich entwickel ein Program auf dem Savvy128 Controller Board von chip45.com.
Mitlerweile meldet der Bascom-Compiler: Flash used: 51%
seit ich etwa die 50%-Marke überschritten habe, treten sehr oft Programmabstürze im ATMEGA auf.
Wenn ich beispielsweise eine Function ans Programmende anfüge, sie ordentlich deklariere, compiliere und auf den Controller brenne, spinnt anschließend mein Programm auf dem Controller.
Es werden wild Ausgänge geschaltet - an denen wo Hardware hinterhängt, seh ich anziehende und abfallende Ventile, oder PWM-Ansteuerungen von Lüftern und Heizungen und über die serielle Schnittstelle sehe ich Statusmeldungen von Neustarts aller paar Sekunden.
Mein LCD-Display füllt sich auf allen Positionen mit einem Zeichen.
Dies alles geschieht, nur durch den zusätzlichen Code, es gab noch keinen Aufruf der function.
Ein anderes Bespiel:
Ich möchte Parameter, zur Anzeige auf das Display bringen. Ca. 20 Parameter, wobei jeweils ein Parameter und sein Variablenname auf dem Display abgebildet werden soll.
Ursprünglich eine Case-Auswahl, zwischenzeitlich zur Fehlereingrenzung 20 If-Then Anweisungen wo je nach gewählter Parameter-Nummer die zwei LCD-Anweisungen ausgeführt werden (Variablenname und Variablenwert)
Jedenfalls, habe ich die gesamt Sub im Programm, spinnt alles, wie oben beschrieben, grenze ich per Auskommentierung vielleicht 10 der 20 If-Then-Blöcke aus läuft es.
Ich möchte damit ausdrücken, dass funktionstüchtiger Programmcode, offensichtlich einfach durch sein Vorhandensein für diese Abstürze verantwortlich ist - und das bei einem Flash-use von ca. 50%.
Da das Programm aus sehr vielen Änderungen besteht, wobei alte Programmteile nicht mehr aufgerufen werden, helfe ich mir jetzt damit, dass ich beim Auftreten eines Fehlers solch alten Code suche und lösche - mir damit Platz schaffe und somit dann auch an neuen Baustellen weiterkomme.
Aber der Fehler muss ja woanders liegen - wo kann ich noch suchen?
Wer hat ähnliches beobachtet - und vielleicht die Lösung gefunden?
besten Dank für kommende Lösungsvorschläge
BoGe-Ro