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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.