
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
„Das Einbetten kann auch nachträglich erfolgen, indem die Tabellen mittels Kopieren-und-Einfügen in ein schon beste-hendes CCPlus-Programm geholt werden. Man kann natürlich auch unser Beispielprogramm als Grundlage für eigene Programme hernehmen. Link: siehe unten.“ Hallo das |_ Team, kann ich irgendwo ein Programm (Plus) finden im Netz wo die Umsetzungstabellen bereits enthalten sind. Das mit der Erweiterung der RAM-Variable und das Auslesen immer mit der gleichen Wordvariable z.B. Nr.12 löst ja auch mein Problem. Da stehen ja dann noch 6 zusätzliche Wordvariable „Speicherplätze“ zur Verfügung. Gruß > 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ß |
| Antwort schreiben |