@Roberto
Der Datentyp Long belegt 4 Byte pro Wert, der Datentyp Word nur 2.Diese Meldung kommt eben auch, wenn ich eine falsche Variablen-Bezeichnung eingebe.
Siehe oben halt mit long.
Wenn du sowieso schon an der Speichergrenze des Controllers oder der 2k Begrenzung der Demo-Version kratzt, kann es gut sein, dass du die Begrenzung durch den Wechsel von Word auf Long überschreitest. Dann wäre die Fehlermeldung völlig richtig.
Auch wenn du den Datentyp nur für eine einzige Variable änderst, wird eventuell die ganze Berechnung mit Long-Werten statt mit Word-Werten durchgeführt. D.H. du brauchst nicht nur einmal sondern eventuell mehrfach die 2 Byte Unterschied zwischen Word und Long mehr.
Ausserdem musst du bedenken, dass manche Berechnungen die dir als Quelltext eventuell ganz trivial erscheinen für einen Controller sehr viele Rechenoperationen erfordern.
Eine Multiplikation oder eine Division von Fliesskommazahlen ist in Maschinensprache wesentlich aufwendiger als sie im Bascon-Quelltext aussieht. Hierbei kommt es soweit ich weiss auch noch drauf an welchen Controller du verwendest. Ich glaube manche AVRs unterstützen die Multiplikation intern, dann dürfte der Quellcode den Bacom generieren muss kürzer ausfallen als bei kleineren AVRs die die Multiplikation nicht unterstützen.
Bei den begrenzten Speicherkapazitäten die so ein MC hat, macht es Sinn sich genau zu überlegen, welche Datentypen man verwendet und bei Berechnungen lohnt es sich ein bischen länger zu überlegen welche Rechenschritte wirklich notwendig sind und ob sie sich eventuell vereinfachen lassen.
Manchmal lässt sich durch eine kleine unscheinbare Änderung die sich auf das Ergebnis kaum auswirkt eine ganze Menge Speicher sparen.
Im Zweifelsfall würde ich ein bischen rumprobieren, der Bascom Compiler zeigt dir ja ungefähr an wieviel Speicher dein Programm nach der Compilierung belegt.
Falls du die Demo-Version von Bascom benutzt, würde ich mir mal die aktuelle Version 1.11.7.7 herunterladen. Die unterstützt Programme bis 4 kB Grösse und nicht nur 2kB wie die Vorgängerversion.
Lesezeichen