Hallo, ich benutze die I2C Routinen von http://www.mysunrise.ch/users/pfleury/avr-software.html. Klappt auch teilweise, aber... Jeder 2. Leseversuch geht in die hose! Da kommt nur FF raus! ---------------------- S C H N I P P ----------------- int main(void) { outp(0xFF, DDRB); outp(0xFF, DDRD); i2c_init(); outp(0x00,TCNT0); /* start value */ outp(0x03,TCCR0); sbi(TIMSK,TOIE0); sei(); while(1) { if (!read_ok) { i2c_start_wait(I2CADR + I2C_WRITE); i2c_write(0x00); i2c_rep_start(I2CADR + I2C_READ); // nun die nicht benutzten Adressen durchzählen for (unsigned int i=0; i < eeprom_cnt; i++) i2c_readAck(); // 5 Bytes einlesen for (unsigned int i=0; i < 5; i++) nextbytes[i] = i2c_readAck(); i2c_stop(); // eeprom zähler um 5 erhöhen eeprom_cnt = eeprom_cnt + 5; // flag auf "gelesen" setzen. read_ok = 1; } } } Das read_ok wird von einer Interrupt routine wieder auf 0 gesetzt und dann werden die weiteren 5 bytes eingelesen. Wie Gesagt, bytes 0-4 klappen einwandfrei, 5 - 9 ist ff und dass klappen die nächsten 5 wieder ?!??! Ich steh vor einem Rätsel! Das EEPROM ist ein 24C16. Gibt es noch eine Methode, das EEPROM direkt zu adressieren, das durchzählen ist mir etwas zeitaufwendig. Danke... Andreas
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.