Inhaltsverzeichnis
Ansteuern vom I2C EEprom's mit Bascom
Allgemein
I
Etwas genauer
Struktur:
blablaaa
Beispiel für EEprom 24C16
'============I2C EEprom schreiben/lesen ================================== ' =========== Für 24C16 EEprom ===================== ' 8MHz Quarz ' LCD auf Port B , ' $regfile = "m8def.dat" $crystal = 8000000 '---Config für LCD ----------------- Config Lcd = 40 * 2 Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , Rs = Portb.4 , E = Portb.5 Config Lcdbus = 4 Config Lcdmode = Port Cursor On 'SDA und SCL definieren Config Sda = Portd.5 Config Scl = Portd.7 Dim X As Byte Dim A As Byte Dim B As Byte Dim Lesen As Byte CLS Do '---- schreibe in EEprom ---- For A = 1 To 10 Incr X '1 bis Überlauf zählen I2cstart 'Start I2C I2cwbyte &HA0 'Sende Slave Adresse I2cwbyte A 'Sende Speicheradresse I2cwbyte X 'Sende Wert I2cstop 'Stop I2C Waitms 10 'warte 10ms Locate 1 , 1 Lcd "ins EEprom = " ; X ; " " ' Ausgabe der geschriebenen Werte am LCD Waitms 500 Next A '--- lesen vom EEprom ---- For B = 1 To 10 I2cstart 'Start I2C I2cwbyte &HA0 'sende Slave Adresse I2cwbyte B 'sende Speicheradresse I2cstart 'Start I2C I2cwbyte &HA1 'sende Slave Adresse +1 für schreiben I2crbyte Lesen , Nack 'lese Adresse vom EEprom I2cstop 'Stop I2C Locate 2 , 1 Lcd "Lese EEprom= " ; Lesen ; " " 'Ausgabe der EEprom Werte Waitms 500 Next B Loop End
Beispiel für EEprom 24C256
EEprom's 24C128, 24C256 haben im Gegensatz zu den 24C16'er einen Adressraum von zwei Byte. Darum muss man den Adressberreich in Low und High Adressbereich trennen. (Zuerst Low-Adressbereich schreiben und dann High-Adressberreich)
Beispiel:
'============I2C EEprom schreiben/lesen ================================== ' =========== Für 24C256 EEprom ===================== ' 8MHz Quarz ' LCD auf Port B , ' $regfile = "m8def.dat" $crystal = 8000000 '---Config für LCD ----------------- Config Lcd = 40 * 2 Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , Rs = Portb.4 , E = Portb.5 Config Lcdbus = 4 Config Lcdmode = Port Cursor On 'SDA und SCL definieren Config Sda = Portd.5 Config Scl = Portd.7 Dim X As Byte Dim A As Byte Dim B As Byte Dim Lesen As Byte CLS Do '---- schreibe in EEprom ---- For A = 1 To 10 Incr X '1 bis Überlauf zählen I2cstart 'Start I2C I2cwbyte &HA0 'Sende Slave Adresse I2cwbyte A 'Sende Speicheradresse LOw I2cwbyte 1 'Sende Speicheradresse High I2cwbyte X 'Sende Wert I2cstop 'Stop I2C Waitms 10 'warte 10ms Locate 1 , 1 Lcd "ins EEprom = " ; X ; " " ' Ausgabe der geschriebenen Werte am LCD Waitms 500 Next A '--- lesen vom EEprom ---- For B = 1 To 10 I2cstart 'Start I2C I2cwbyte &HA0 'sende Slave Adresse I2cwbyte B 'sende Speicheradresse Low I2cwbyte 1 'sende Speicheradresse High I2cstart 'Start I2C I2cwbyte &HA1 'sende Slave Adresse +1 für schreiben I2crbyte Lesen , Nack 'lese Adresse vom EEprom I2cstop 'Stop I2C Locate 2 , 1 Lcd "Lese EEprom= " ; Lesen ; " " 'Ausgabe der EEprom Werte Waitms 500 Next B Loop End
Autor