Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > > > > > > > > Hallo > > > > > > > > > > > > > > > > Ich nutze das Application Board mit Pro Mega128 für eine Heizungs - und Haussteuerung > > > > > > > > Ich nutze 1-wire Temperatursensoren, I2C Relaisplatinen von CCTools und eine RS232 Kopplung > > > > > > > > zu einem Linux Webserver (Foxboard). > > > > > > > > Ab ziemlich genau 16Kb Byte Code geht die interne Uhr auf 0, Datum und Uhrzeit. > > > > > > > > Es ist egal welchen Code und auch wo ich ihn einfüge. Die Anzahl der Variablen scheint keine Rolle > > > > > > > > zu spielen 217 Byte globale Variablen, ohne Multithreading. > > > > > > > > Ich nutze IDE 2.13.0.15 mit der neuen Version bricht die serielle Kopplung nach kurzer Zeit ab. > > > > > > > > Kann mir jemand einen Tip geben wie ich mehr Bytecode nutzen kann. > > > > > > > > > > > > > > > > Danke und viele Grüße Henry > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hallo, > > > > > > > > > > > > > > ich benutze für meine Haussteuerung das Projectboard mit dem Mega128. Mein Bytecode liegt bei ca. 28Kb. > > > > > > > Ich habe immer Angst > > > > > > > über die magische 30Kb Grenze zu kommen.. > > > > > > > Ich hatte eine zeitlang das Problem, das die Minuten oder Sekunden zum Teil über 59 gegangen sind. > > > > > > > Ich hatte allerdings auch 14 Threads im Einsatz. > > > > > > > Obwohl ich die Speicher der einzelnen Threads sehr großzügig ausgelegt hatte, > > > > > > > war die Vermutung von PeterS, dass der Speicher überschrieben wird. > > > > > > > Ich habe dann das Programm deutlich vereinfacht und auf 2 Threads reduziert. > > > > > > > Seitdem habe ich keine Probleme mehr. Auch die Umstellung auf 2.31.0.89 lief dann ohne Probleme. > > > > > > > Ich würde auf jeden Fall erstmal auf die neue IDE gehen und das Programm in Teilen reduzieren > > > > > > > (mal ohne 1-wire Temperatursensoren), bis die serielle Kopplung wieder geht. > > > > > > > > > > > > > > Grüße Joerg > > > > > > > > > > > > > > Hallo Joerg > > > > > > > Vielen Dank für den Lösungsansatz, ich denke da habe ich Reserven. Ich dachte bis jetzt das > > > > > > > Flashspeicher (128KB - 51KB - 4KB) noch reichlich verfügbar ist. Wie kommt es eigentlich zu > > > > > > > diesem Engpass? > > > > > > > Viele Grüsse Henry > > > > > > > > > > Hallo Henry, > > > > > > > > > > keine Ahnung woran das liegt. Ich wollte das immer mal testen durch Dummy Code. > > > > > Bin aber bisher nicht dazu gekommen. Ist halt schon eine Bastellei... > > > > > Aber der wechsel, zu eine anderen Platform wäre für mich schon sehr aufwendig.... > > > > > > > > > > > > > > > Grüße Joerg > > > > > > > > > Hallo, > > > > meines Wissens liegt die 'magische' Grenze beim CC-Pro 128 bei 64kByte Flash-Speicher. Allerdings > > > > inklusive Interpreter. Die Ursache liegt darin, dass beim Daten-Zugriff auf die oberen 64kByte ein > > > > anderer Maschinenbefehl nötig ist. So wie ich das sehe, ist der Bytecode den wir beim Programmieren > > > > erstellen ja 'Daten' für den Interpreter. Sobald der also über der 64kByte-Grenze liegt, muss der > > > > Interpreter das berücksichtigen, und anders darauf zugreifen. Und da gibt es wohl so den einen oder > > > > anderen 'Fallstrick'. > > > > Bei mir läuft es derzeit aber ganz ordentlich. Ich hoffe das bleibt auch bei der nächsten > > > > Programmänderung so.... > > > > > > > > Gruß > > > > Franz-Peter > > > > > > Hallo, > > > > > > Vielen Dank für die Info > > > Ich habe gleichmal gegoogelt und unter: > > > <a href="http://www.acmc-ls.de/intranet/Programmiermodell_ATmega128.pdf" target="_blank">Handbuch Atmega</a> > > > gelesen, das die Adressregister 16bit (65Kb)sind und der Flash Wordweise aufgebaut ist. Wenn man dann > > > Bytecode wörtlich nimmt könnte es bei Sprüngen schwierig werden. Wie man das als Endanwender > > > beinflussen kann ist mir noch nicht klar. > > > Ich habe jetzt mal mit 2.31.0.89 experimentiert. So bald ich ein Programmteil weglasse läuft der Rest. > > > Ansonsten kommt: 22000ms Interpreter beendet > > > > > > Viele Grüsse Henry > > > > Hallo Henry, > > als Endanwender kann man das gar nicht beeinflussen, das muss der Interpreter entsprechend > > verarbeiten. Prinzipiell kann er das auch, es gibt wohl aber ein paar Sonderfälle, wo es evtl. noch > > hakt. PeterS hat da schon einiges gemacht, aber ob es inzwischen völlig fehlerfrei ist ???... > > > > Mit dem Maschinenbefehl 'lpm' kann man schon byteweise auf das Flash zugreifen. Bit0 der Adresse im > > Z-Register wird dabei genutzt, um zwischen Byte 0/1 des adressierten Words im Flash zu unterscheiden. > > Allerdings bleiben dann nur noch 15Bit für die Adressierung des Wortes übrig, und das ist eben die > > besagte 32K-Worte (bzw 64kByte) -Grenze. Um das ganze Flash Byteweise adressieren zu können, gibt es > > beim Mega128 den Befehl elpm, der dann aber 17Bit zur Adressierung benötigt. Diese Spezialität wird > > übrigends in dem von dir verlinkten Dokument unterschlagen - da muss man dann ins Datenblatt von Atmel > > schauen. > > Gruß > > Franz-Peter > > > > P.S. hast Du bei deinem Programm die Überwachung der Array-Grenzen aktiviert? In dem Fall beendet sich > > der Interpreter auch, wenn die Prüfung einen Fehler ergibt. Das hat mir auch schon ein paar graue > > Haare beschert ;-)) > > Hallo > > Danke für genaue Beschreibung des Problems. > Mit der Überwachung Array-Grenzen habe ich experimentiert, ohne Änderung. > Ich habe jetzt mein Steuerprogramm auf Code sparen optimiert, eigentlich nur mehrfach ausgeführten > Code in Unterfunktionen zum mehrfachen Aufruf umgeschrieben 1,5kb eingespart und es funktionieren > beide IDE Versionen (2.13.0.15 und 2.31.0.89). Ich konnte jetzt auch die Rollo-Steuerung realisieren > Bin erstmal erleichtert, aber ich fürchte, ich werde irgendwann wieder an die Grenze stossen. > Bei der neuen IDE Version 2.31.0.89 habe ich Probleme beim Stoppen des Programms im Normalmodus > zum neu laden. > Bei den bisherigen Versionen zog ich nur kurz das USB ab und wieder ran schon konnte ich neu laden > Jetzt kommt beim Abziehen folgende Meldung 2x: Application Error > Exception EInOutError in module CP_IDE.exe at 002D77E5. > Device read error > Anschliessend muss ich Unit suchen. Ich benutze Win 7 64bit und die Unit ist etwas abseits. > > Viele Grüsse Henry