Ein kleines nützliches BASCOM-Programm zum Herausfinden oder Verifizieren von I2C-Adressen von Sensoren o.ä.
Um in einem Projekt mit I2C-Slaves Fehlerquellen auszuschließen, sollte man auf jeden Fall die anzuschließenden I2C-Slaves einmal mit diesem Adressen-Scanner testen. Es werden die Adressen von angeschlossenen I2C-Slaves auf einem LC-Display angezeigt. (Natürlich kann man das Programm modifizieren, wenn man statt LCD lieber über die serielle Schnittstelle ausgeben möchte.) Bei jedem gefundenen Slave wird ein kurzer Ton ausgegeben.
Alles anzeigen
Um in einem Projekt mit I2C-Slaves Fehlerquellen auszuschließen, sollte man auf jeden Fall die anzuschließenden I2C-Slaves einmal mit diesem Adressen-Scanner testen. Es werden die Adressen von angeschlossenen I2C-Slaves auf einem LC-Display angezeigt. (Natürlich kann man das Programm modifizieren, wenn man statt LCD lieber über die serielle Schnittstelle ausgeben möchte.) Bei jedem gefundenen Slave wird ein kurzer Ton ausgegeben.
BASCOM-Quellcode
- ' BASCOM-Programm
- ' I2C-Scanner
- ' stefanhamburg im bascomforum.de
- '
- ' In: beliebige I2C-Slaves an C.4=SDA und C.5=SCL
- ' Out: LCD an D2 bis D.7
- ' B.0 Piezo-Buzzer ohne Elektronik
- ' Funktion dieses Demo-Programmes:
- ' Scannen der Slave-Adressen
- '$regfile = "M8def.dat"
- '$regfile = "M88def.dat"
- $regfile = "m8adef.dat" ' benutzter Mikrocontroller
- $crystal = 1000000 ' Taktfrequenz
- $hwstack = 40 ' Hardware Stack
- $swstack = 40 ' SW Stack
- $framesize = 60 ' Frame
- Config Portb.0 = Output ' Buzzer
- Buzzer Alias Portb.0
- Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
- Config Lcd = 16 * 2
- Cls
- Cursor Off
- Waitms 250
- Config Sda = Portc.4
- Config Scl = Portc.5
- I2cinit
- Dim Slaveadresse As Byte
- Do
- Cls
- Lcd "I2C Slaves"
- Lowerline
- Lcd "suchen..."
- Wait 2
- For Slaveadresse = 0 To 254 Step 2 ' für alle geraden Adressen
- I2cstart 'Startbedingung senden
- I2cwbyte Slaveadresse ' Addresse senden
- If Err = 0 Then
- Cls 'I2C-Slave gefunden?
- Sound Buzzer , 55 , 189
- Lcd "Slave dec: " ; Slaveadresse
- Lowerline
- Lcd "h" ; Hex(slaveadresse) ; " b" ; Bin(slaveadresse)
- Wait 2
- End If
- I2cstop 'Bus freigeben
- Next
- Cls
- Lcd "Ende Scan"
- Wait 2
- Loop
- End