Der Nachfolger des WDR-Computerclub mit Wolfgang Back und Wolfgang Rudolph - ...und immer ein Bit übrigbehalten!


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Speichern auf dem EEPROM Kategorie: Programmierung CC-Plus (von das |_ Team - 25.05.2015 1:04)
 Als Antwort auf Re: Speichern auf dem EEPROM von eeg - 22.05.2015 10:16
Könnte man in Plus noch die eine oder andere Word Variable „freischalten“ ?

Mit diesen neuen Tabellen sollte es funktionieren :)



Bild1: Liste der Tabellen die ein BASIC-Unterprogramm für die erweiterten RAM-Variablen enthalten

Den erweiterten Variablenbereich bitte mit Bedacht verwenden.
Bei dieser CCPlus-Umsetzung handelt es sich um experimentelle Software, die auch Fehler enthalten kann;
sie ist nicht zugelassen für Anlagen, aus deren Versagen Personen- und/oder Sachschäden resultieren könnten.




Wie funktioniert nun das Ganze?

Am einfachsten wäre es die erweitertenVariablen in CCPlus direkt über deren Index anzusprechen,
genau wie die üblichen 24 Uservariablen. Dazu müsste allerdings eine entprechend modifizierte Version
der CCPlus-IDE existieren. Die gibt es unseres Wissens nicht.

Oft führen ja mehrere Wege zum gleichen Ziel. In diesem Fall helfen kleine BASIC-Unterprogramme, die
durch Anwendung des zuvor erwähnten Tabellentricks in das CCPlus Programm eingebettet werden. Das Einbetten kann auch
nachträglich erfolgen, indem die Tabellen mittels Kopieren-und-Einfügen in ein schon bestehendes CCPlus-Programm geholt werden. Man kann natürlich auch unser Beispielprgramm als Grundlage für eigene Programme hernehmen. Link: siehe unten.

Schreib- und Lesezugriffe auf die erweiterten Variablen erfordern allerdings etwas Umdenken.






Bild2: Dieses Beispiel schreibt einen Wert ungleich Null in eine erweiterte RAM-Variable

Es wird eine Hilfsvariable aus dem User-Variablenbereich zwischen geschalten, die aber sofort nach dem Schreibvorgang
wieder für andere Aufgaben verwendet werden kann. In diesem Beispiel ist es die Wordvariable mit dem Index 12.

Sinn der ganzen Übung ist, CCPlus zu veranlassen den in der erweiterten Variable zu speichernden Wert zunächst auf den Top of Stack
(ToS) zu pushen. Index und Typ der Hilfsvariable können dabei frei gewählt werden. Für das Schreiben reicht bereits eine Bit-Variable
aus, falls der Platz im User-RAM mal wieder knapp ist ;-)

Dies ist möglich weil die Hilfsvariable lediglich als Dummy dient um die CCPlus Routinen anzustossen die einen zu schreibenden Wert auf den Stack zu befördern. Dort wird dieser durch das
in den CCPlus Tabellen enthaltene BASIC-Unterprogramm abgeholt und in die gewünschte erweiterte RAM-Variable
geschrieben (Put_Word_xx).













Bild3: Das Lesen einer erweiterten RAM-Variable benötigt immer die Wordvariable 12

Das Lesen aus einer erweiterten RAM-Variable ist in etwa vergleichbar. Allerdings erfolgt die Rückbgabe des
gelesenen Wertes stets in der Wordvariable mit dem Index 12. Auch sollte man aufpassen, nicht mehrere
Variablen innerhalb derselben Programmzelle auszulesen. Für das Lesen ist ein anderes BASIC-Unterprogramm zuständig (Get_Word_xx).

Genaugenommen zeigt unser Beispiel in Bild 3 einen Murks, denn ob und welcher Wert zuerst über die Serielle
Schnittstelle ausgegeben wird, kann aus dem Blockbild nicht abgeleitet werden. Die CCPlus-Darstellung innerhalb
einer Programmzelle hat ja keine Vorzugsleserichtung, etwa "Link-nach-Rechts", oder "Oben-nach-Unten"...

Durch das quasi-parallele Programmschema innerhalb von CCPlus Programmzellen kann das Ergebnis variieren, wenn
mehrere Blöcke ohne Eingangsverbindungen gleichzeitig in einer Programmzelle enthalten sind.

Schon merkwürdig, die vor etwa 20 Jahren konzipierte grafische Programmier-Schnittstelle CCPlus impliziert die heutzutage
übliche Parallelisierung von Prozessen - zumindest auf Ebene Quelldarstellung und je Programmzelle. Was explizit durch das
Verbinden konkurrierender Blöcke mittels Flussgraphen aufgehoben (sequenziert) werden muss, damit es nicht zum Dead-Lock
oder Race-Condition kommt (Der CCPlus Kompiler und C-Control Chip verarbeiten das Programm aber natürlich schon sequenziell).

Immerhin, im Gedankenexperiment könnte man eine mit Berechnungsblöcken vollgepackte, nicht sequenzierte CCPlus-Programmzelle hernehmen,
um sie 1:1 auf eine entsprechende Anzahl paralleler Recheneinheiten einer hypothetischen "Multiprozessor-C-Control" ;-) abzubilden
und dann die Leistungsfähigkeit so eines Kontrukts abschätzen. Ein interessanter Gedanke. Aber das ist ein anderes Thema.











Bild4, "Stolperfalle": Diese Zuweisung an die erweiterte Variable, Word 30, wird niemals ausgeführt!
warum


Wir hoffen dass dieser Beitrag hilfreich ist, und würden uns besonders auch über weitere Ideen zum Thema CCPlus freuen!

Zur Zeit beschäftigen wir uns mit 2 Lösungsansätze zu den bekannten Fragestellungen, die besonders auch die CCPlus-Programmierumgebung betreffen:


Nr 1 - EEPROM-Erweiterung für grössere CCPlus Programme tatsächlich nutzbar machen

Nr 2 - Neuprogrammierung (9600baud) und Zeitkorrektur trotz Overclocking auch unter CCPlus.

Wer möchte darf natürlich auch hier noch am Betatest teilnehmen ;-)



Viele Grüsse


das |_ Team






> Hallo Jungs
>
> Erst mal Danke für die Informationen, die Umsetzung habe ich noch nicht so richtig verstanden, mach das mal am Wochenende in den Praxis.
>
> Der Hintergrund des „Abspeicherns“ ist das ja nur 11 (12) Word Variablem zur Verfügung stehen und ich aber noch 2 bis 3 brauche.
> Könnte man in Plus noch die eine oder andere Word Variable „freischalten“ ?
>
> Gruß
>
>
> > .
> >
> > Es gibt noch eine weitere Möglichkeit, die ohne Assemblertreiber auskommt. Link: http://ccintern.dharlos.de/forum/lesen.php?eintrag=720
> >
> > Angeregt durch die vorstehende Anfrage im Forum, haben wir heute unsere CCPLUS-Adaption online gestellt. Den Link findest du weiter unten.
> >
> > Bitte die Dokumentation im CCPLUS-Beispielprogramm lesen oder bei Fragen an das Forum wenden.
> >
> >
> > Tipp: Öffne die CCPLUS-IDE in zwei separaten Fenstern. Dies ermöglicht, nur die Funktionstabellen mittels Copy-and-Paste aus dem Beispielprogramm (linkes Fenster) in ein bestehendes Programm (rechtes Fenster) zu übernehmen. Schon bestehende CCPLUS-Programme können so relativ bequem angepasst werden, ohne dass alle Programmzellen neu eingegeben werden müssen.
> >
> > Bitte darauf achten die Funktionstabellen (Get_FileStart, Put_FileStart, usw.) immer oberhalb aller anderen, evt. schon in einem Programm enthaltenen Datentabellen einzufügen.
> >
> >
> >
> >
> >
> > Bild 1: Auch unter CCPLUS lässt sich der "Tabellentrick" anwenden um zusätzliche System-Funktionen freizuschalten.
> >
> >
> >
> >
> >
> >
> > Bild 2: Testlauf auf C-Control I 1.1, Main-Unit, mit zusätzlich installierter Lbit Firmware
> >
> >
> >
> >
> > Verwandtes Thema: http://ccintern.dharlos.de/tipsutri.txt
> >
> >
> >
> >
> >
> > das |_ Team
> >
> >
> > > Hallo
> > >
> > > Ich möchte mit C-control Plus (1.08)
> > >
> > > Zahlen abspeichern auf dem EEPROM und wieder auslesen, alles kein Problem.
> > >
> > > Nun möchte ich einzelne Zahlen auslesen und ändern, danach wieder abspeichern, ist das möglich?
> > >
> > > z.B. Zahl Nr.33 = 200 auslesen aus dem Speicher.
> > > Zahl Nr.33 ändern auf 210 und wieder auf den Speicherplatz Nr.33 die 210 abspeichern.
> > >
> > > Ist das möglich?
> > > Hallo
> > >
> > > Ich möchte mit C-control Plus (1.08)
> > >
> > > Zahlen abspeichern auf dem EEPROM und wieder auslesen, alles kein Problem.
> > >
> > > Nun möchte ich einzelne Zahlen auslesen und ändern, danach wieder abspeichern, ist das möglich?
> > >
> > > z.B. Zahl Nr.33 = 200 auslesen aus dem Speicher.
> > > Zahl Nr.33 ändern auf 210 und wieder auf den Speicherplatz Nr.33 die 210 abspeichern.
> > >
> > > Ist das möglich?
> > >
> > > Gruß
> Hallo Jungs
>
> Erst mal Danke für die Informationen, die Umsetzung habe ich noch nicht so richtig verstanden, mach das mal am Wochenende in den Praxis.
>
> Der Hintergrund des „Abspeicherns“ ist das ja nur 11 (12) Word Variablem zur Verfügung stehen und ich aber noch 2 bis 3 brauche.
> Könnte man in Plus noch die eine oder andere Word Variable „freischalten“ ?
>
> Gruß
>
>
> > .
> >
> > Es gibt noch eine weitere Möglichkeit, die ohne Assemblertreiber auskommt. Link: http://ccintern.dharlos.de/forum/lesen.php?eintrag=720
> >
> > Angeregt durch die vorstehende Anfrage im Forum, haben wir heute unsere CCPLUS-Adaption online gestellt. Den Link findest du weiter unten.
> >
> > Bitte die Dokumentation im CCPLUS-Beispielprogramm lesen oder bei Fragen an das Forum wenden.
> >
> >
> > Tipp: Öffne die CCPLUS-IDE in zwei separaten Fenstern. Dies ermöglicht, nur die Funktionstabellen mittels Copy-and-Paste aus dem Beispielprogramm (linkes Fenster) in ein bestehendes Programm (rechtes Fenster) zu übernehmen. Schon bestehende CCPLUS-Programme können so relativ bequem angepasst werden, ohne dass alle Programmzellen neu eingegeben werden müssen.
> >
> > Bitte darauf achten die Funktionstabellen (Get_FileStart, Put_FileStart, usw.) immer oberhalb aller anderen, evt. schon in einem Programm enthaltenen Datentabellen einzufügen.
> >
> >
> >
> >
> >
> > Bild 1: Auch unter CCPLUS lässt sich der "Tabellentrick" anwenden um zusätzliche System-Funktionen freizuschalten.
> >
> >
> >
> >
> >
> >
> > Bild 2: Testlauf auf C-Control I 1.1, Main-Unit, mit zusätzlich installierter Lbit Firmware
> >
> >
> >
> >
> > Verwandtes Thema: http://ccintern.dharlos.de/tipsutri.txt
> >
> >
> >
> >
> >
> > das |_ Team
> >
> >
> > > Hallo
> > >
> > > Ich möchte mit C-control Plus (1.08)
> > >
> > > Zahlen abspeichern auf dem EEPROM und wieder auslesen, alles kein Problem.
> > >
> > > Nun möchte ich einzelne Zahlen auslesen und ändern, danach wieder abspeichern, ist das möglich?
> > >
> > > z.B. Zahl Nr.33 = 200 auslesen aus dem Speicher.
> > > Zahl Nr.33 ändern auf 210 und wieder auf den Speicherplatz Nr.33 die 210 abspeichern.
> > >
> > > Ist das möglich?
> > > Hallo
> > >
> > > Ich möchte mit C-control Plus (1.08)
> > >
> > > Zahlen abspeichern auf dem EEPROM und wieder auslesen, alles kein Problem.
> > >
> > > Nun möchte ich einzelne Zahlen auslesen und ändern, danach wieder abspeichern, ist das möglich?
> > >
> > > z.B. Zahl Nr.33 = 200 auslesen aus dem Speicher.
> > > Zahl Nr.33 ändern auf 210 und wieder auf den Speicherplatz Nr.33 die 210 abspeichern.
> > >
> > > Ist das möglich?
> > >
> > > Gruß

Passender Link: CC-I-1.1-FileStart_A.cpf

 Antwort schreiben

Bisherige Antworten:

Re: Speichern auf dem EEPROM (von eeg - 28.05.2015 9:01)
    Re: Speichern auf dem EEPROM (von das |_ Team - 30.05.2015 1:13)
        CCPlus-Tin - Downloadlink (von das |_ Team - 30.05.2015 1:18)
            Re: CCPlus-Tin - Downloadlink (von eeg - 7.06.2015 12:44)
                Re: CCPlus-Tin - Downloadlink (von das |_ Team - 8.06.2015 14:36)
                    Re: CCPlus-Tin - Downloadlink (von eeg - 13.06.2015 8:14)
                       Re: CCPlus-Tin - Downloadlink (von das |_ Team - 17.06.2015 23:18)