
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
> Hallo, > > > Doch ach, erstes Basic++ Programm geuploaded (ein Beispiel aus dem Programmpaket wohlgemerkt) und C-Control hat sich aufgehängt. Als ich dann ein Assemblerprogramm versucht hab, einzubinden (ebenfalls Beispiel-Code, aber nebenbei ich bin Assembler-Profi) war mir klar, dass die Maschinenbefehle überhaupt nicht ausgeführt wurden. Auf die Orthografie der offiziellen Doku des offiziellen Basic++ gehe ich nicht weiter ein. Mir war für mich klar, was zu tun ist. Mit sowas ärgere ich mich gar nicht lang rum. > > Eventuell solltest Du mal ein Online Update machen. Ich gehe mal von einer veralteten Version aus. > > > Also doch Assembler ? Nach weiterer Recherche habe ich herausgefunden, dass die V2.0 der C-Control I den Sys-Befehl nicht ausführt, man also keine eigenen Assembler-Routine starten kann. Wozu also dieser CCASM ? Ich konnte/wollte es einfach nicht glauben. Also weitere Experimente. > > Das ist so nicht richtig. Mit CCASM werden die wichtigsten Assemblerbefehle auf der V2.0 unterstützt. Du musst offenbar einen Fehler bei der Einbindung gemacht haben. Du sagtest jedoch selbst, dass Du kein erfahrener Assemblerprogrammierer bist. Eventuell kann ich Dich hier auf das CCASM Forum verweisen. Der SYS Befehl wird sowieso ausgeführt. Schließlich gibt es von Conrad ja getestete Systemtreiber. Bei dieser Falschinformation frage ich mich daher wo Du das her hast. > > > Ich habe schließlich herausgefunden, dass man mittels des LOOKTAB-Befehls durch Angabe eines beliebigen Index den gesamten Speicher der Station auslesen kann (z.B. ist der Inhalt des Flash bei der CControl I 2.0 ebenfalls im Hauptspeicher adressiert...). Ich habe ein Label #beginn auf den Anfang des Basic-Programms gesetzt und die erste definierte Variable mit einem bekannten Wert belegt. Auf diesen habe ich die LOOKTAB-Ergebnisse abgefragt. So habe ich herausgefunden, welchem LOOKTAB-Index vom Beginn des Programms aus der Beginn des Variablenbereichs liegt. Da dieser absolut bei $00C0 liegt, war klar, unter welchem Index PORTD (Adresse $0003) zu finden ist. > > Das hättest Du auch einfacher haben können. In der CCASM Dokumentation stehen diese Konstanten drin. Übrigens wird auch ausdrücklich auf die Dokumentation des µC hingewiesen. > > Gruß, > > Stefan Sorry, aber Du hast da was falsch verstanden: ich BIN durchaus ein erfahrener Assembler-Programmierer. Und ich HABE die aktuelle Version von Basic++ verwendet. Aber das Ärgernis fängt schon damit an, dass in der Doku zu CCAsm steht, der Maschinencode würde nach Adresse $FD09 geladen, wohingegen meine Versuche mit der obigen LOOKTAB-Methode eindeutig eine Startadresse von $FD00 geliefert hat, was übrigens in Übereinstimmung mit anderweitiger Recherche im Web steht. Aber Ja: ich habe es sowohl mit $FD00 als auch mit $FD09 versucht. Ich möchte Basic++ auch nicht runtermachen, aber wenn das mit der Assemblereinbindung tatsächlich funktioniert, dann muss es eben besser dokumentiert werden. Apropos Falschinformation: wenn Du Google ein bisschen bemühst, dann wirst Du noch andere Leute finden, die dieselbe Beobachtung gemacht haben, wie ich: Maschinencode wird zwar ins Flash geladen, aber offensichtlich nicht ausgeführt. Ich bleibe dabei, ich habe meine C-Control Station 2.0 nicht in einem 1Euro-Laden gekauft. Und für 150Euro darf ich erwarten, dass sowohl die Hardware funktionstüchtig ist, also auch die "offizielle" Software. Ich persönlich habe keine Zeit, mich mit halbfertigen Lösungen abzugeben. Ich nehme das was schnell funktioniert. Und mit dem vorsintflutlichen CCBasic funktioniert es zumindest leidlich. Grüße, Olli |
| Antwort schreiben |