Hallo an alle,

ich habe an meinen PRO BOT128 von Conrad einen Beschleunigungssensor von BOSCH(BMA150) und ein EEPROM AT24C1014B angeschlossen.

Mein Programm funktoniert so:
Der Robi soll eine gewisse Zeit fahren, dabei sollen die Beschleunigungen gemessen und ins EEPROM gespeichert werden.

Nun funktonieren die beiden Programme Beschleunigungen lesen und speichern nicht zusammen ich erhalte für x,y und z immer den gleichen Wert.(ax=ay=az=0.00)
Speicher ich einen beliebigen Wert in mein EEPROM(ohne BMA) dann erhalte ich die richtigen Werte.

Zum EEPROM meine Device Adresse ist 10100000(=0xA0), anschließen schicke ich mein MSB(0x00) und mein LSB(0x01) und den x-Wert den ich unter 0x01 speichern möchte.


Wo kann mein Fehler liegen?
Ich programmiere in C-Compakt(ähnlich zu c), weil der Robi von Conrad ist. Die Ganze Kommunikation zwischen Sensor; EEPROM und ROBI erfolgt über I2C.

Über hilfreiche Tipps wäre ichEuch sehr dankbar.

Gruß
TJ

Code für die Sensordaten
Code:
void thread1(void)
{
    word adresse;
    adresse=0x02;

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


    PRO_BOT128_INIT();
    I2C_Init(I2C_100kHz);

        I2C_Start();
        I2C_Write(0x70);
        I2C_Write(adresse);
        I2C_Stop();

        I2C_Start();
        I2C_Write(0x71);

         x_short=I2C_Read_ACK();
         x_long=I2C_Read_ACK();

         x_long=(((x_long)*4)*+(x_short/64));



         y_short=I2C_Read_ACK();
         y_long=I2C_Read_ACK();

         y_long=(((y_long)*4)+(y_short/64));




         z_short=I2C_Read_ACK();
         z_long=I2C_Read_NACK();

         z_long=(((z_long)*4)+(z_short/64));


        I2C_Stop();


}
Code um Werte ins EEPROM zu schreiben und umzuwandeln bsp nur für den x-Wert
Code:
//Die Beschleunigungen in x,y und z Richtung sollen mithilfe des BMA150 und dem PRO BOT128 ausgelesen werden


void main(void)
{
    PRO_BOT128_INIT();
    I2C_Init(I2C_100kHz);

    g_Werte();

    DRIVE_INIT();

   // Beginn Kommunikation BMA und ROBI

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

   //EEPROM schreiben

   word add_H,add_L;
   add_H=0x00;
   add_L=0x00;
   int  x_long,y_long,z_long;
   int  EEPROM_x_long,EEPROM_y_long,EEPROM_z_long;

   I2C_Start();
   I2C_Write(0xA0);
   I2C_Write(0x00>>8);
   I2C_Write(0x01);
   I2C_Write(x_long);
   I2C_Stop();

   AbsDelay(100);

   I2C_Start();
   I2C_Write(0xA0);
   I2C_Write(0x00>>8);
   I2C_Write(0x01);
   I2C_Start();
   I2C_Write(0xA1);
   EEPROM_x_long=I2C_Read_ACK();

   I2C_Stop();

   // Daten bearbeiten

   if (EEPROM_x_long > 511)
        {
            EEPROM_x_long= (EEPROM_x_long - 511);
            EEPROM_x_long= (511 - EEPROM_x_long);
            EEPROM_x_long= (EEPROM_x_long*(-1));

            x= (EEPROM_x_long * 0.00390625);
        }
         else
        {
            x= (EEPROM_x_long * 0.00390625);
        }
    

        float x;
        float str[4];
      

        Str_Printf(str,"%1.2f",x);
        Msg_WriteChar(97);
        Msg_WriteChar(120);
        Msg_WriteChar(61);
        Msg_WriteText(str);
        Msg_WriteChar(13);

          
}