Hallo, ich bräuchte etwas Hilfe bei meinen ersten AVR Projekt. Zunächst möchte ich in ein externes EEPROM schreiben. Habe mir dazu ein 24C512 geholt, das die Aufschrift ATMLU818 trägt. Ich verwende die twimaster.c von P. Fleury und habe diese um einen zusätzlichen Write für das HighByte erweitert. Allerdings scheint er das zu ignorieren, ich kann zwar wunderbar die ersten 256 Bytes schreiben, allerdings sehe ich das dann auf jeder der weiteren 256 Pages gespiegelt. Was kann ich da falsch machen? Danke & Gruß Newbee
Gast
#1742768
.. dann liest du bestimmt falsch aus. wenn jede page dasselbe anzeigt, werden irgendwelche höheren adressbits falsch gesendet. gruss hagbard
Ich habe die write und read routine nur um das extra High byte
erweitert.
Mich wundert das der das einfach ignoriert und das Datum dann wieder
richtig ablegt.
write
...
ret = i2c_start(Dev24C512+I2C_WRITE);
if ( ret ) {
i2c_stop();
} else {
ret = i2c_write( (addr/256) ); << extra high byte
ret = i2c_write( (addr%256) );
ret = i2c_write(val);
i2c_stop();
}
read
...
i2c_start_wait(Dev24C512+I2C_WRITE);
i2c_write( (addr/256) ); << extra high byte
i2c_write( (addr%256) );
i2c_rep_start(Dev24C512+I2C_READ);
ret = i2c_readNak();
i2c_stop();
Gast
#1743840
ich hab bei sowas immer:
1 | |
2 | |
3 | |
4 | |
5 | |
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.