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 ! > Hier ein Beispiel, die Longwerte Byteweise zu speichern. Ich hoffe es hilft. > > Willi aus Oelde > > > // ------------- Globale Variablen ---------------------- > string r ; // > string s ; // String für LCD Ausgabe > string t ; // Für Meldungen > > byte Merker ; // Betriebsart LCD - Ausgabe > > byte Fehler ; // 1=WSO Board > byte Status2 ; // fuer Boilerladen > byte Byte_Out2 ; // für Ausgabe an WSO Board > > byte Index ; /* Index im Auswahlmenue */ > byte ti ; /* Zähler im Auswahlmenue */ > byte Byte_in ; /* Eingabebyte vom WSO_Board */ > byte Speicher [64]; // 64 nicht 63 !! Erst mal Platz für 16 Long-Werte machen > byte d[17]; // Korrektur / Einstellungen 16 Werte > > int Zeit_bis_Speicher ; // > int T_Kollektor ; > // int T_Kollektor_Ruecklauf ; wird nur angezeigt > int T_Rezirkulation ; > int T_Speicher_Oben ; > int T_Speicher_Unten ; > int T_Boiler_Oben ; > int T_Boiler_Unten ; > int T_Heizungs_Ruecklauf ; > > long Zeit_Zaehler [20] ; /* Zeit Zaehler -12 werden gespeichert */ > > float Temp_Sensor[9] ; /* Temp. der Sensoren */ > float ADC1 ; /* Analogwerteingabe PT 500 */ > > etc...... > > > > > /**********************/ > function EEprom_Write() > /**********************/ > { byte i,j; > // long k; > > plm.beep(plm.TONE_A2); // Piepen zum Speichern > sleep 1500; > plm.beep(plm.TONE_OFF); > > if d[10] and 2 // Modusbit 1 gesetzt ? > { for i = 0 ... 11 > Zeit_Zaehler[i]=0; // Alle Zeitzähler löschen > } > > // Tageszähler löschen > Zeit_Zaehler[12]=0; > Zeit_Zaehler[13]=0; > Zeit_Zaehler[14]=0; > Zeit_Zaehler[15]=0; > > /* Daten in Daten-Speicher (EEPROM) übertragen */ > for i = 0 ... 11 > { mem.putlong(Speicher,i*4,Zeit_Zaehler[i]); > } > /* ab Adresse $1f00 schreiben */ > i2c.start(160) ; // Addressbits : A0-A3=GND > i2c.write(0x1f); // Byte-Addr. : high-byte > i2c.write(0x00); // Byte-Addr. : low-byte > > // Erst Korrekturwerte schreiben ab $1f00 > i2c.write(d[0]); // dT aus: mindeste Temp. sonst aus > i2c.write(d[1]); // dT Boiler minimale höhere Temp. zum laden > i2c.write(d[2]); // dT Speicher minimale höhere Temp. zum laden > i2c.write(d[3]); // max. Boiler > i2c.write(d[4]); // max. Speicher > i2c.write(d[5]); // min. Fussboden > i2c.write(d[6]); // max. Fussboden > i2c.write(d[7]); // dt Zeit Kollektor erwärmen > i2c.write(d[8]); // NF aus: Nachheizung aus > i2c.write(d[9]); // NF ein: Nachheizung ein > i2c.write(d[10]); // Modus > i2c.write(d[11]); // or > i2c.write(d[12]); // and > i2c.write(d[13]); // Sicherheitstemp Start Pumpe > i2c.write(d[14]); // Boiler laden von Speicher > i2c.write(d[15]); // > > //for i = 0 ... 15 > // {i2c.write(d[i]); > // } > > for i = 0 ... 47 > { i2c.write(Speicher[i]); // Byte-schreiben > } > i2c.stop(); // max. 64 Werte am Stück schreiben !! > > plm.beep(plm.TONE_E2); // Piepen zum Speichern > clear(); /* Display löschen */ > goto(1,3); print ("Gespeichert !! "); // Signalisieren, das gespeichert ! > sleep 1500; > plm.beep(plm.TONE_OFF); > } > > /**********************/ > function EEprom_Read() > /**********************/ > { byte i,j; > > for j = 0 ... 10 // 10 mal, um Fehler zu vermeiden > { > i2c.init(); > i2c.start(160); // Schreibzugriff > i2c.write(0x1f); // zum Adresse übermitteln ( 1f = last page ) > i2c.write(0x00); // High Endurance Block bis 100.000 x schreiben > i2c.start(161); // Lesezugriff > > /* Korrekturwerte/ Einstellungen lesen (16 Stück) */ > for i = 0 ... 15 > {d[i] = i2c.read(); // > } > > /* Zeit_Zaehler lesen */ > for i = 0 ... 47 // zur Zeit 32+16 Bytes Lesen / hier 48 Bytes > { Speicher[i] = i2c.read(); // > } > Speicher[63] = i2c.readlast(); // und letztes Byte lesen > i2c.stop(); > > for i = 0 ... <12 // 12 Longveriable aus Speicher[] holen > { Zeit_Zaehler[i] = mem.getlong(Speicher,i*4); > } > if d[10]!=255 > j = 10; > > } > > if d[10] == 255 // Defaultwerte laden > { d[0]=04; // dT > d[1]=07; // dT Boiler > d[2]=08; // dt Speicher > d[3]=60; // max. Boiler > d[4]=90; // max. Speicher > d[5]=22; // Fussb. aus > d[6]=24; // Fussb. ein > d[7]=06; // Zeit * 30 ! > d[8]=24; // Nachheizen Fussboden aus > d[9]=22; // Nachheizen Fussboden ein > d[10]=9; // Modus > d[11]=0; // Or > d[12]=255;// And > d[13]=98; // Pumpen starten wegen Speicher zu heiss > d[14]=45; // Boiler vom Speicher nachheizen > d[15]=80; // max. Temp vor dem Heizungspumpe starten > > for i = 0 ... 15 // 15 Variable löschen > { Zeit_Zaehler[i] = 0; > } > plm.beep(plm.TONE_G2); // Piepen beim Lesen > clear(); /* Display löschen */ > goto(1,3); print ("Defaultwerte geladen !! "); // Signalisieren, das gespeichert ! > sleep 1500; > plm.beep(plm.TONE_OFF); > } > }