![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
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 |