Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Zeit und Datum gehen auf 0 bei Prog > 16Kb Kategorie: Programmierung C (von Henry - 28.02.2014 20:32)
Als Antwort auf Re: Zeit und Datum gehen auf 0 bei Prog > 16Kb von Franz-Peter - 23.02.2014 10:00
Ich nutze:
C-Control Pro Mega128, CC-Pro 128 Application Board, Pro-Bot128
> > > > > > > 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:
> > Handbuch Atmega
> > 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


    Antwort schreiben


Antworten: