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

Beschleunigungssensor über I2C auslesen Kategorie: I²C-Bus (von Tim - 15.12.2010 19:50)
Ich nutze:
C-Control Pro Mega32, CC-Pro 32 Application Board
Hallo,

ich beschäftige mich seit kurzer Zeit mit dem Programmieren.
Nun versuche ich schon seit Tagen einen Beschleunigungssenor (BMA150) über I2C auszulesen.
Mit Hilfe dieses und anderen Foren konnte ich mir diesen Code erstellen:

void main(void)
{


    word adresse;
    adresse=0x02;

    int             x_long,y_long,z_long;
    unsigned int    x_short,y_short,z_short;
    float           x,y,z;

    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));

        if (x_long > 512)
        {
            x_long= (x_long - 512);
            x_long= (512 - x_long);
            x_long= (x_long*(-1));

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

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

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

         if (y_long > 512)
         {
              y_long= (y_long - 512);
              y_long= (512 - y_long);
              y_long= (y_long*(-1));

              y= (y_long * 0.00390625);
         }
         else
         {
              y= (y_long * 0.00390625);
         }


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

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

         if (z_long > 512)
        {
              z_long= (z_long - 512);
              z_long= (512 - z_long);
              z_long= (z_long*(-1));

              z= (z_long *0.00390625);
        }
        else
        {
              z= (z_long *0.00390625);
        }

    I2C_Stop();


    Msg_WriteFloat(x);
    Msg_WriteChar(13);

    Msg_WriteFloat(y);
    Msg_WriteChar(13);

    Msg_WriteFloat(z);
    Msg_WriteChar(13);
}

Leider gibt mir das C-Control Programm für x, y und z nur 0.00000 heraus. Also kann irgendetwas nicht stimmen.

Hat mir jemand einen Tipp?

Danke schonmal für die Mühe.

GruÃ? Tim


    Antwort schreiben


Antworten:

Re: Beschleunigungssensor über I2C auslesen (von Joerg - 16.12.2010 7:17)
    Re: Beschleunigungssensor über I2C auslesen (von Tim - 16.12.2010 12:41)
        Re: Beschleunigungssensor über I2C auslesen (von Joerg - 16.12.2010 13:32)
            Re: Beschleunigungssensor über I2C auslesen (von Tim - 16.12.2010 19:32)
                Re: Beschleunigungssensor über I2C auslesen (von Joerg - 17.12.2010 7:32)
                    Re: Beschleunigungssensor über I2C auslesen (von Tim - 18.12.2010 14:22)
                       Re: Beschleunigungssensor über I2C auslesen (von Jörg - 18.12.2010 18:07)
                Re: Beschleunigungssensor über I2C auslesen (von Jörg - 16.12.2010 20:47)