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.