Archiv verlassen und diese Seite im Standarddesign anzeigen : 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/datenblaetter/150000-174999/160997-da-01-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.
$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?
Hier fehlt die Angabe der Speicheradresse im EEPROM. Ich denk doch mal, dass der mehr als nur 1 Byte speichern kann.
Ausserdem bringts nichts, nach X zu lesen und "Lesen" anzuzeigen.
Welche Befehlszeile muss das den sein? Und ja der EEPROM kann ein bischen mehr speichern :D. Und das Lesen ist nur ein überbleibsel gewesen eigtl net wichtig :D.
Wie das geht, also wie die Adressen (z.B. auch 1 oder 2 Byte) aussehen müssen und wo die im Schreibbefehl hingehören, steht im Datenblatt.
Zum Auslesen: Die Variable, die du anzeigen willst, muss auch die sein, in der das EEPROM-Byte gespeichert wird. Also Entweder nach X lesen und X anzeigen, oder "Lesen" lesen und "Lesen" anzeigen.
(Dementsprechend müssen X und/oder Lesen auch Byte, nicht Word, sein)
Alles klar. Dann werd ich mich mal durchwühlen. Danke sehr.
So ich hab folgendes Datenblatt
http://www.datasheetcatalog.org/datasheets/228/160402_DS.pdf
Sind die Daten die ich suche, die unter Figure 2. Byte Write und Figure 3. Page Write auf Seite 8 und wenn ja wie muss ich die für das benötigte "zerpflücken"?
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.