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> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > Hallo an alle, > > ich habe mich am Beispiel von der Doku mit dem Speichern von Daten auf > das interne EEPROM befasst. > Wenn ich nur einen Wert gebe zu speichern und anschließend auslese, > erhalte ich den richtigen Wert. > Versuche ich aber nun zwei Werte nach der Berechnung auszugeben, stimmt der > erste Wert aber der zweite ist falsch. > > x Wert=-7.5 > y Wert=-122.5 > > Muss ich denn sozusagen ein Page Write durchführen? > Oder woran kann es liegen? > > Ich habe diese Beispielprogramm benutzt um die Funktion und Programmierung > eines EEPROM besser zu verstehen. Später möchte ich ein externes EEPROM über > I2C ansprechen und Daten speichern und auslesen. > > Über Eure hilfe wäre ich sehr dankbar. > > void main(void) > > { > > word address; > int datax,EEPROM_datax,datay,EEPROM_datay; > address=0x20; > datax=25; > datay=65; > > PRO_BOT128_INIT(); > I2C_Init(I2C_100kHz ); > > // write data to 24C64 (8k x 8) EEPROM > > I2C_Start(); > I2C_Write(0xA0); // DEVICE ADDRESS : A0 > > I2C_Write(address>>8); // HIGH WORD ADDRESS > > I2C_Write(address); // LOW WORD ADDRESS > > I2C_Write(datax); > I2C_Write(datay); // write Data > I2C_Stop(); > > AbsDelay(5); // delay for EEPROM Write Cycle > > > > // read data from 24C64 (8k x 8) EEPROM > > I2C_Start(); > > I2C_Write(0xA0); // DEVICE ADDRESS : A0 > > I2C_Write(address>>8); // HIGH WORD ADDRESS > > I2C_Write(address); // LOW WORD ADDRESS > > I2C_Start(); // RESTART > > I2C_Write(0xA1); // DEVICE ADDRESS : A1 > > EEPROM_datax=I2C_Read_NACK(); > EEPROM_datay=I2C_Read_NACK(); > I2C_Stop(); > > float x,y; > > if(EEPROM_datax>10) > { > EEPROM_datax=(10- EEPROM_datax); > > x=(EEPROM_datax*0.5); > } > > if(EEPROM_datay>10) > { > > EEPROM_datay=(10 - EEPROM_datay); > > y=(EEPROM_datay*0.5); > } > > > float str[3]; > str[1]=x; > str[2]=y; > > Str_Printf(str,"%1.2f",x); > Msg_WriteChar(97); > Msg_WriteChar(120); > Msg_WriteChar(61); > Msg_WriteText(str); > Msg_WriteChar(13); > > > Str_Printf(str,"%1.2f",y); > Msg_WriteChar(97); > Msg_WriteChar(121); > Msg_WriteChar(61); > Msg_WriteText(str); > Msg_WriteChar(13); > > }