-
EEPROM
Hallo
Ich hab eine Verständnissfrage. Und zwar will ich diesen EEPROM im I²C ansteuern
->http://www.conrad.de/goto.php?artikel=160997
Im Datenblatt steht ja die Adresse so:
1 0 1 0 A2 A1 A0 R/W
(http://www2.produktinfo.conrad.com/d...1-en-24C16.pdf)
Wenn ich nun alle Adressleitungen also A2-A0 an GND liegen habe ist die Adresse ja:
1 0 1 0 0 0 0 R/W
Was setze ich den für die Hex berechnung für R/W ein? Weil im moment würde der Code ja &H50 sein-
Danke für die Hilfe
-
Beim Schreiben ist R/W 0 (0x50), beim Lesen 1 (0x51).
-
Achso. D.h. ich muss einfach nur wenn ich die Zahl 4 auf das EEPROM schreiben will sagen das die Adresse &H50 ist und wenn ich diese Zahl auslesen will muss ich &H51 schreiben?
-
Genau so.
Ich machs immer so, dass ich die Adresse z.B. so angeb:
I2C_WriteByte(0x50 + I2C_WRITE) bzw. I2C_ReadByte(0x50 + I2C_READ),
wobei I2C_WRITE = 0 und I2C_READ = 1 ist.
-
Wie kommt den das 0x50 zustande?
-
0x50 = &H50 = 50h... je nach Compiler.
Dezimal jedes mal 80.
-
Ahh ok ..... hab mir sowas in der Richtung schon gedacht.
-
So und ich hab dann direkt noch eine Frage. Wie funktioniert das mit dem Speichern der Daten in dem EEPROM? Ich hab mir da jetzt ein Programm zusammengezimmert wo ich was eingebe und das im EEPROM gespeichert wird und dann per Print ausgegeben wird. Allerdings zeigt er jedesmal 0 oder 255 an..... . Ist das richtig so?
-
Kommt drauf an...
Wie sieht das Programm aus und was steht schon im EEPROM drin? Wenn er noch unbeschrieben ist, ist die Antwort von jeder Speicherzelle 0xFF = 255.
Welche Befehlssequenz zum schreiben/lesen gebraucht wird, steht im Datenblatt.
-
Code:
$regfile = "m32def.dat"
$crystal = 16000000
'SDA und SCL definieren
Config Sda = Portc.1
Config Scl = Portc.0
Dim X As Word
Dim A As Byte
Dim B As Byte
Dim Lesen As Word
CLS
Do '
Input "Eingabe:" , X
I2cstart
I2cwbyte &HA0
I2cwbyte X
I2cstop
Waitms 1000
'--- lesen vom EEprom ----
I2cstart
I2cwbyte &HA0
I2cstart
I2cwbyte &HA1
I2crbyte X
I2cstop
Print Lesen
Loop
End
So sieht das Programm aus. Hab ich da evtl. einen Denkfehler gemacht?