Für dieses Forum muß Javascript im Browser aktiviert werden!
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