Re: Beschleunigungssensor über I2C auslesen Kategorie: I²C-Bus (von Joerg - 16.12.2010 7:17) | ||
Als Antwort auf Beschleunigungssensor über I2C auslesen von Tim - 15.12.2010 19:50 | ||
| ||
> 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 Hallo Tim, hat der I2C Pull Ab's??? ich würde mal nach jedem i2C Befehl den I2C_Status ausgeben und mit der Tabelle vergleichen. Grue�e Joerg | ||
Antwort schreiben Antworten: 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) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum