alles klar. Ich danke dir schonmal im vorraus.
Hallo Flash_64,
Interrupts kann der Compiler bis jetzt noch nicht. Ich schau mal dass ich bis zur nächsten Version Interrupts implementiere. Ich werde dann auch ein Beispielprogramm beilegen wo das Verwenden von Interrupts erklärt wird.
Wenn eine neue Version draussen ist schreib ichs wieder hier rein.
alles klar. Ich danke dir schonmal im vorraus.
sind eigentlich case-anweisungen implementiert, oder muss man äquivalente if-anweisungen nutzen?
bei dem versuch eine case-anweisung (nach iso-c) zu implementieren, gab der compiler mir eine fehlermeldung...
case fehlt bis jetzt auch noch, musst du also bis jetzt mit if-Anweisungen machen. Wird es warscheinlich frühestens in der übernächsten Version geben.
In der nächsten kommt jetzt erst mal eine Formeloptimierung rein (Dann wird z. B. auch 5 + 5 als konstanter Wert genommen weil der Compiler es gleich ausrechnet) und mit & vorne dran kann die Adresse von einer Variablen oder einer Funktion abgefragt werden. Dann ist nicht mehr viel zu machen dass auch der Interrupt verwendet werden kann.
Aber es kann noch ne Weile dauern bis eine neue Version rauskommt, mal schauen ob ich sie bis zum 20. fertig hab, ab dem 21. bin ich nämlich ne Woche weg und dann würde das ganze noch ein Stück in die Länge ziehen.
Ansonsten hat bis jetzt alles geklappt, oder?
ich werde heute abend noch ausgiebig programmieren und geb dir danach nochmal eine antwort
Die neue Version (2.1.0) ist endlich fertig. Hat jetzt verdammt lange gedauert da ich Abi usw. gehabt hab, ne Weile im Urlaub war und bei dem Wetter nicht so viel Lust hatte. Eigentlich hatte ich vor gestern damit fertig zu werden aber da hab ich Abends bis um 12 Zeugnisausgabe und was dazu gehört gehabt.
In der neuen Version ist wie schon gesagt die Formeloptimierung drin, es können mit & vorne dran die Adressen von Variablen und Funktionen ermittelt werden und Interrupts sind möglich. Wie immer ist alles weitere im Handbuch erklärt.
Der Quelltext ist bis jetzt nicht verfügbar da ich da noch ein paar Probleme habe aber ist auch nicht so sonderlich wichtig.
Wenn ihr irgendwelche Bugs findet könnt ihr euch melden, viel Spaß beim Programmieren
Hier noch der Link zu den Downloads: http://sourceforge.net/project/showf...roup_id=165854
Guten Tag! Ich muss erstmal sagen, dass ich den ccccc (übrigens ein wundervoller name :P ) echt ziemlich genial finde, C is meiner Meinung nach wirklich ein wenig besser für sowas^^
naja, was solls, auf jeden fall hab ich da ein kleines Problem, weil ich irgendwie nich wirklich eine gute abfrage der ACS-Sensoren hinbekomme....wie habt ihr das implementiert bzw. mit welchen funktionen war das gedacht? also wie gesagt, ich finde bisher alles echt klasse was du geleistet hast mit dem ccccc, aber damit hab ich irgendwie meine probleme^^ (liegt wahrscheinlich nur daran dass ich was überlesen habe oder einfach nen kleinen denkfehler habe...:P)
Sorry, ein bisschen (oder eher ziemlich) spät aber:
Du kannst erst mal die Empfindlichkeit mit acs_power() einstellen, einfach als Argument ACSLO, ACSHI oder ACSMAX angeben.
Dann wird mit subsys_getstate() beim Subsystem der Status abgefragt, in dem zurückgegebenen Byte sind auch 2 Bits für die Abstandssensoren dabei (Bit 0 und 1).
Entweder kann man also wie im Beispiel 02_acs.c Bitvariablen an der gleichen Stelle im RAM wie eine Bytevariable anlegen. Wenn man dann das zurückgegebene Byte in die Bytevariable speichert kann man über die Bitvariablen die Bits für die Sensoren abfragen.
Eine andere Möglichkeit ist über ein binäres Und das einzelne Bit aus dem Byte zu holen. Also z. B. so:
SS_ACSL ist auch eine in ccrp5.h definierte Konstante.Code:if(subsys_getstate() & SS_ACSL) { // Sachen die er machen soll wenn der linke Sensor anspricht }
Die obere Methode ist sinnvoller normalerweise weil man einmal den Status abfragt und die Bit-Variablen danach so oft nimmt wie man will. Die zweite Möglichkeit macht eigentlich nur Sinn wenn man nur einmal einen Sensor abfragen will und das kommt wohl so gut wie nie vor.
Also einfach eine Bytevariable machen und 2 Bitvariablen, machen wir mal auf Byteadresse 4:
32 weil du ja immer * 8 nehmen musst wegen Byte/Bit.Code:char[4] subsysstate; bool[32] acsl, acsr;
Und dann die Rückgabe von subsys_getstate() in die Bytevariable schreiben damit die aktuellen Sensordaten drin sind.
Danach kannst du aus acsr und acsl die Sensorzustände rauslesen wo du willst, war in den CCBASIC-Routinen glaub ich sogar auch so.Code:subsysstate = subsys_getstate();
Ich hoffe du hast jetzt mehr kapiert, sonst kannst du gern nochmal fragen bei den Sachen die unverständlich waren, ich werd schauen dass ich ein Stück früher antworte
Viel Spaß beim programmieren, Oliver
Herzlichen Danke für die (schnelle :P) Antwort...naja ich hab ja jetzt auch nich direkt geantwortet, was? also ich muss da mal gleich noch ein wenig rumprobieren, meine erste version hat nich ganz so gut funktioniert, aber das wird sicherlich ich weiß ja jetzt wenigstens wie ich das richtig machen kann^^
Hallo,
ich bin seid einigen Tagen stolzer Besitzer eines RP5.
Das Programmieren und Übertragen mit der Conrad-IDE funktioniert (LINUX+WINE).
An liebsten würde ich den RP5 mit C programmieren können nur leider kriege ich die Daten wohl nicht richtig auf den RP5.
also folgendes habe ich gemacht:
code übersetzen:
bin/ccccc -a asm/ccrp5.s19 -l examples/ccrp5/01_leds.c
AUSGABE:
Logbuchdatei: examples/ccrp5/01_leds.log
Quellcodedatei: examples/ccrp5/01_leds.c
Ausgabedatei: examples/ccrp5/01_leds.dat
Assemblerdatei: asm/ccrp5.s19
Dann der Übertragungsversuch:
bin/ccdl -d /dev/ttyUSB0 -sc examples/ccrp5/01_leds.dat
AUSGABE:
/dev/ttyUSB0: Port geöffnet
C-Control-Version korrekt
Programm wird ÃŒbertragen...
356 Bytes
Assemblerdaten werden ÃŒbertragen...
/dev/ttyUSB0i: Fehler: Timeout erreicht
wenn ich ein Linux von ttyUSB0 auf ttyS0 lege ist das Ergebnis das selbe nur ohne 'i' nach den Gerätenamen
Das Programm ohne '-a asm/ccrp5.s19' zu kompilieren funktioniert und auch bei der Übertragung gibt es dann keine Fehler aber der Robby macht dann rein gar nichts
was mache ich falsch
Bitte helft mir, ich hab keine Lust das Ding mit BASIC zu programmieren.
Lesezeichen