madangdive
30.01.2010, 09:36
Hallo!
Wenn ich via I2C eine Chipkarte auslese und das Ganze 2x hintereinander, dann habe ich 2 völlig unterschiedliche Werte (v1_EEPROM ist dann nicht gleich v2_EEPROM), obwohl ich 2 x die gleiche Adresse angebe!
Frage: Kann man ein EEPROM (24C02) so schnell hintereinander nicht auslesen, od. was läuft hier falsch, bzw. wie wäre es richtig?
Verwende das Source-File von: Peter Fleury <pfleury@gmx.ch> http://jump.to/fleury und bin im AVR-Studio 4.14 zu Hause!
Danke Mad
Code:
…….
// 1. Mal EEPROM-Chipk. lesen und speichern in v1_EEPROM
i2c_write(5); // write address = 5
i2c_rep_start(Tuer1_24C02_Chipkarte+I2C_READ); // set device address and read mode
v1_EEPROM = i2c_readNak(); // read one byte from EEPROM
_delay_us(30); // Zeit zum /Schreiben/Lesen des EEPROM's/Bus
i2c_stop();
// nochmal EEPROM-Chipkarte lesen und Wert speichern in v2_EEPROM
i2c_write(5); // write address = 5
i2c_rep_start(Tuer1_24C02_Chipkarte+I2C_READ); // set device address and read mode
v2_EEPROM = i2c_readNak(); // read one byte from EEPROM
_delay_us(30); // Zeit zum /Schreiben/Lesen des EEPROM's/Bus
i2c_stop();
……….
Wenn ich via I2C eine Chipkarte auslese und das Ganze 2x hintereinander, dann habe ich 2 völlig unterschiedliche Werte (v1_EEPROM ist dann nicht gleich v2_EEPROM), obwohl ich 2 x die gleiche Adresse angebe!
Frage: Kann man ein EEPROM (24C02) so schnell hintereinander nicht auslesen, od. was läuft hier falsch, bzw. wie wäre es richtig?
Verwende das Source-File von: Peter Fleury <pfleury@gmx.ch> http://jump.to/fleury und bin im AVR-Studio 4.14 zu Hause!
Danke Mad
Code:
…….
// 1. Mal EEPROM-Chipk. lesen und speichern in v1_EEPROM
i2c_write(5); // write address = 5
i2c_rep_start(Tuer1_24C02_Chipkarte+I2C_READ); // set device address and read mode
v1_EEPROM = i2c_readNak(); // read one byte from EEPROM
_delay_us(30); // Zeit zum /Schreiben/Lesen des EEPROM's/Bus
i2c_stop();
// nochmal EEPROM-Chipkarte lesen und Wert speichern in v2_EEPROM
i2c_write(5); // write address = 5
i2c_rep_start(Tuer1_24C02_Chipkarte+I2C_READ); // set device address and read mode
v2_EEPROM = i2c_readNak(); // read one byte from EEPROM
_delay_us(30); // Zeit zum /Schreiben/Lesen des EEPROM's/Bus
i2c_stop();
……….