EEPROM AT24C1024B

OP #1955896
Lesenswert?

Hallo an alle,

ich arbeite mit der Plattform von Conrad, sprich C-Control. Habe mir den 
PRO BOT 128 gekauft und diesen anschließend mit einem 
Beschleunigungssensor verbunden. Wenn der Robi jetzt fährt, werden die 
Beschleunigungen in x,y und z Richtung ausgelesen. Das ganze habe ich 
über den I2C BUS konzipiert.

Nun möchte ich die augelesenen Werte zwischenspeichern und später wieder 
auslesen. Dafür habe ich das AT24c1024B EEPROM gewählt.
Da ich mehrer Daten speichern möchte empfiehlt sich der Page Write 
Modus.

Laut Datenblatt kenne ich die Deviceadresse(1010 xx10) und bin nach der 
Routine bei meine Programmierung vorgegangen.

void main (void)
{

    PRO_BOT128_INIT();
    I2C_Init(I2C_100kHz);

    Thread_Start(1,bma);
    Thread_Delay(10);

    //EEPROM speichern

    word adresse_eep;
    adresse_eep=0xA2;

    int x_long,y_long,z_long;
    unsigned int x_short,y_short,z_short;

    unsigned int EEPROM_x_short,EEPROM_y_short,EEPROM_z_short;
    int EEPROM_x_long,EEPROM_y_long,EEPROM_z_long;

    I2C_Start();
    I2C_Write(adresse_eep); //Device Adresse write
    I2C_Write(0x00); // MSB
    I2C_Write(0x02); // LSB

    I2C_Write(x_short);
    I2C_Write(x_long);

    I2C_Write(y_short);
    I2C_Write(y_long);

    I2C_Write(z_short);
    I2C_Write(z_long);

    I2C_Stop();

    // EEPROM lesen

    I2C_Start();
    I2C_Write(adresse_eep); // Device Adresse write
    I2C_Write(0x00);
    I2C_Write(0x02);

    I2C_Start();
    I2C_Write(0xA3); // Device Adresse read

    EEPROM_x_short=I2C_Read_ACK();
    EEPROM_y_short=I2C_Read_ACK();
    EEPROM_z_short=I2C_Read_ACK();

    EEPROM_x_long=I2C_Read_ACK();
    EEPROM_y_long=I2C_Read_ACK();
    EEPROM_z_long=I2C_Read_NACK();

    I2C_Stop();

    AbsDelay(100);


    EEPROM_x_long=((EEPROM_x_long*4)+(EEPROM_x_short/64));

    EEPROM_y_long=((EEPROM_y_long*4)+(EEPROM_y_short/64));

    EEPROM_z_long=((EEPROM_z_long*4)+(EEPROM_z_short/64));

// Anschließend erfolgt die Ausgabe
}

Damit ich in C-Control den Robi fahren und Werte auslesen kann, arbeite 
ich hier mit Threads.
Nun zu meinem Problem, die Daten die ich anschließend erhalte nach dem 
Speichern sind für x,y und z identisch warum??

Wo liegt mein Fehler?
Wenn ich ein Testprogramm schreibe indem ich nur 2 festgelegte Werte von 
mir ins EEPROM speicher(ohne fahren,ohne Sensor) und anschließend 
auslese erhalte ich exakt die richtigen Werte.

Über Eure hilfe wäre ich sehr dankbar.

Gruß
Jenny

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren