BASCOM-Quellcode: R_W EEPROM 24Cxx
- '--------------------------------------------------------------------
- 'Aufgabe : TWI EEPROM Serie 24Cxx beschreiben (ein Byte)
- ' Es können mehrere 24Cxx an einer TWI Leitung hängen.
- 'Parameter : ICAdr = als Byte (7 Bit Adresse gemäß Datenblatt)
- ' Pos = Stelle an der ein Byte gespeichert wird
- ' Value = der Bytewert der gespeichert werden soll
- 'Syntax : Call W_EE24Cxx(24C32_0, Pos, Wert)
- 'LeÄnd : 13.01.2021
- Sub W_EE24Cxx(ICAdr as Byte, Pos as Word, Value as Byte)
- Local Temp as Word
- Temp = High(Pos) ' In Temp steht das MSB von Pos
- Shift ICAdr,Left,1 ' ICAdr höherwertig verschieben
- ICAdr = ICAdr OR &B0 ' Bit0=Read(&B1)/Write(&B0)
- I2cstart ' Erzeugt eine I2C Start Bedingung
- I2cwbyte ICAdr ' sende Schreibadresse
- I2cwbyte Temp ' Startaddresse des EEProm
- I2cwbyte Pos ' Position anwählen
- I2cwbyte Value ' Wert eintragen
- I2cstop ' Ende der TWI Übertragung
- Waitus 5 ' Moment abwarten
- End Sub
- ' -----------------------------------------------------------------------------
- 'Aufgabe : TWI EEPROM Serie 24Cxx auslesen (jeweils ein Byte)
- ' Es können mehrere 24Cxx an einer TWI Leitung hängen.
- 'Parameter : ICAdr = als Byte (7 Bit Adresse gemäß Datenblatt)
- ' Pos = liest ein Byte von der Position aus.
- 'Syntax : Wert = R_EE24Cxx (24C32_0, Pos)
- 'LeÄnd : 13.01.2021
- Function R_EE24Cxx (ICAdr as Byte, Byval Pos As Word) As Byte
- Local Temp as Word
- Temp = High(Pos) ' In Temp steht das MSB von Pos
- Shift ICAdr,Left,1 ' ICAdr höherwertig verschieben
- ICAdr = ICAdr OR &B0 ' Bit0=Read(&B1)/Write(&B0)
- I2cstart ' Erzeugt eine I2C Start Bedingung
- I2cwbyte ICAdr ' sende Schreibadresse
- I2cwbyte Temp ' Startaddresse des EEProm
- I2cwbyte Pos ' Position anwählen
- ICAdr = ICAdr OR &B1 ' Bit0=Read(&B1)/Write(&B0)
- I2cstart ' erneut Start
- I2cwbyte ICAdr ' sende Leseadresse
- I2crbyte R_EE24Cxx , Nack ' Byte-Wert in die Function Variable
- I2cstop
- End Function
mit meiner Function und meinem Sub kann ich wunderbar jede Zelle meiner TWI EEPROMS von der 24Cxx Reihe bis zum 24C512 auslesen und beschreiben.
Aber der 24FC1025, der bekanntlich 128125 Zellen hat, an dem kommt mein Quellcode an seine Grenze. Mir ist klar, dass dies mit meiner Word Variable zusammen hängt.
Leider habe ich die Syntax für das MSB und das LSB noch nicht verstanden und ebenso unklar ist mir das Datenblatt des 24FC1025 an dem ich nicht erkennen kann wie man die Zellen oberhalb von 65535 ansprechen kann.
Kann man mir mal ein Experte auf die Sprünge helfen?
VY73 Dieter