Hallo,
ich habe einen EEPROM Baustein und versuche ihn mit dem ATmega16 zu
beschreiben und auszulesen.
Es handelt sich um einen EEPROM von Microchip:
http://www.reichelt.de/?;ACTION=3;LA=444;GROUP=A324;GROUPID=4511;ARTICLE=96564;START=0;SORT=artnr;OFFSET=76;SID=27aJIvtawQARsAAF7nYZU8422fdf6726e64be5077242d8881e3bf
Ich denke, das Beschreiben hat funktioniert. Jedenfalls bekam ich immer
die korrekten Status Codes im TWSR Register.
Das Lesen bereitet mit noch Probleme.
Im datasheet des 24LC512 finde ich auf Seite 14 folgenes Schema fürs
Auslesen:
Write Start Condition - ACK - Write ControlByte - Write HighByte_address
- ACK - Write LowByte_address - ACK - Write Start Condition - ACK -
Write Control Byte - ACK - READ data
So, nach dem Schreiben des LowBytes der Adresse steht in TWSR der Code
$28. Jetzt sende ich erneut eine Start Conditon, das ist dann eine
repeated Start conditon, also erwarte ich den Statuscode $10. Danach
wird 0xA1 für Auslsen an TWDR gesendet, allerdings wird kein Wert dort
reingeladen aus dem EEPROM. Ich kann euch ja mal einen Code schicken von
meinem C-Quelltext.
Ich glaube, der ATmega16 erwartet nach dem SSchreiben der Adresse ein
Auslesen des Bytes im EEPROM, und nicht eine erneute Start-Condition. So
ist es auf Seite 190/191 des ATmega16 datasheets.