Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

EEPROM Ergbeniss falsch warum? Kategorie: Programmierung C (von Jenny - 24.11.2010 11:49)
Ich nutze:
C-Control Pro Mega128, Pro-Bot128
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);
           
}


    Antwort schreiben


Antworten:

Re: EEPROM Ergbeniss falsch warum? (von PeterS - 29.11.2010 15:24)
    Re: EEPROM Ergbeniss falsch warum? (von Jenny - 29.11.2010 18:31)
        Re: EEPROM Ergbeniss falsch warum? (von PeterS - 29.11.2010 22:26)
            Re: EEPROM Ergbeniss falsch warum? (von Jenny - 30.11.2010 11:25)
                Re: EEPROM Ergbeniss falsch warum? (von PeterS - 30.11.2010 13:42)
                    Re: EEPROM Ergbeniss falsch warum? (von Jenny - 30.11.2010 14:28)
                       Re: EEPROM Ergbeniss falsch warum? (von PeterS - 30.11.2010 15:47)