Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> > Hallo > > > > Brauche dringend Hilfe! Ich versuche mit folgendem c2 Code die integer Variabel TASINT als Array auf > > meiner I2C Chipkarte (24LC65) im 1 sek.Takt abzulegen. Dies im Zeitraum einer halben Stunde. > > sollte dann 1800 Integerarrays mit einer grösse von 3600 Bytes haben. Benütze das Modul eeprom.c2. > > > > //------------ > > thread main > > //------------ > > { > > float TAS, DP, AP, T, R, TASEQN, VSDP, VSAP, VST; > > int TASINT; > > > > loop > > { > > VSDP = 0.00488*ports.adc(0); > > VSAP = 0.00488*ports.adc(1); > > VST = 0.00488*ports.adc(2); > > if VSDP > 1 > > { > > DP = ((5*VSDP)/5)-1; > > AP = ((94.4287*VSAP)/5)+14.3532; > > R = 5/VST-1; > > T = 1000/(math.ln(R)/3.9+1000/298); > > TASEQN =((2*DP)/(AP/(287*T))); > > TAS = math.sqrt(TASEQN)*3.6; > > TASINT = TAS; > > eeprom.writeintarray(0,0x0000,TASINT,1800); > > sleep 1000; > > } > > } > > } > > > > 0 (im eeprom.c2 Modul) sollte die Chipkartenadresse auf dem I2C Bus sein beim schreiben. > > 0x0000 Startadresse im eeprom > > TASINT = Variabelname > > 1800 = Anzahl Arrays > > > > Könnt Ihr mir sagen, was ich falsch mache? Habe extrem wenig Erfahrung mit SW schreiben > > und Speicheradressierung. > > > > p.s. Braucht man in jedem Fall pull up Widerstände bei der CC2 oder nur bei langen Leitungen? > > > > Besten Dank !!! > > > > MfG Marco > > > > Hallo Marco, > > wenn ich mich nicht irre, hast Du leider einige Fehler in Deinem Code. So kann es nicht funktionieren. > 1. Wenn Du ein Daten-Array benutzt, dann mußt Du es zu Beginn auch entspr. definieren, also > int TASINT[1800]; > Damit initiierst Du 1800 Array-Einträge, mußt jedoch bei den Indizes darauf achten, dass ab 0 ge- > zählt wird, als TASINT[0] bis TASINT[1799] !!!!!!! > 2. In Deinem Programmcode läßt Du die Berechnung jede Sekunde wiederholen, und damit auch in > jeder Sekunde Deine frisch geschriebenen Daten überschreiben. Grund: Du erhöhst die Datenadresse > in der Zeile "eeprom.writeintarray(0,0x0000,TASINT,1800);" nicht. > > Ich kann leider Deine Berechnungen nicht nachvollziehen, würde jedoch ganz einfach mal folgendes > empfehlen: > > <code> > //------------ > thread main > //------------ > { > float TAS, DP, AP, T, R, TASEQN, VSDP, VSAP, VST; > int TASINT[1800]; // -------------------------------------------geändert > int arrayzaehler,eepromadresse; // --------------------------------------------eingefügt > > loop > { > VSDP = 0.00488*ports.adc(0); > VSAP = 0.00488*ports.adc(1); > VST = 0.00488*ports.adc(2); > if VSDP > 1 > { > DP = ((5*VSDP)/5)-1; > AP = ((94.4287*VSAP)/5)+14.3532; > R = 5/VST-1; > T = 1000/(math.ln(R)/3.9+1000/298); > TASEQN =((2*DP)/(AP/(287*T))); > TAS = math.sqrt(TASEQN)*3.6; > TASINT[arrayzaehler] = TAS; // --------------------------------------------geändert > arrayzaehler = arrayzaehler + 1; // -------------------------------------eingefügt > eeprom.writeintarray(0,eepromadresse,TASINT,1800); // -------------geändert > eepromadresse=eepromadresse+2; //um 2 erhöhen, da INTEGER , ----------------eingefügt > if arrayzaehler==1800 // -------------------------------IF-Schleife eingefügt > { > arrayzaehler=0; > eepromadresse=0; > // jetzt müßten die Daten ausgelesen oder die Karte ausgetauscht werden, > // ansonsten würden die Daten beim nächsten Durchgang ab 0 wieder überschrieben!!!!! > } > sleep 1000; > } > } > } > </code> > Ich hoffe, ich konnte Dir etwas helfen und habe mich verständlich ausgedrückt. > > Aber auch ich habe eine Frage an Dich: Wie ließt Du Deine Karte aus?? Ich schreibe auch ein Daten- > logg auf eine Chipkarte von André, möchte diese jedoch aber an meinem PC auslesen. Mein normaler > TOWITOKO Chipkartenleser kann jedoch scheinbar mit den I2C-EEpromkarten nichts anfangen. > Hast Du eine Lösung?????? > > Gruß und einen schönen Abend noch, > wema
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB