\ ********************************************************************* \ Scan I2C bus to determine peripherials adresses \ Filename: I2Cscan.txt \ Date: 08 feb 2022 \ Updated: 08 feb 2022 \ File Version: 1.0 \ MCU: ESP32-WROOM-32 \ Forth: ESP32forth all versions 7.x++ \ Copyright: Marc PETREMANN \ Author: Marc PETREMANN \ GNU General Public License \ ********************************************************************* DEFINED? --I2Cscan [if] forget --I2Cscan [then] create --I2Cscan \ activate the wire vocabulary wire \ start the I2C interface using pin 21 and 22 on ESP32 DEVKIT V1 \ with 21 used as sda and 22 as scl. 21 22 wire.begin : spaces ( n -- ) for space next ; : .## ( n -- ) <# # # #> type ; \ not all bitpatterns are valid 7bit i2c addresses : Wire.7bitaddr? ( a -- f ) dup $07 >= swap $77 <= and ; : Wire.detect ( -- ) base @ >r hex cr ." 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f" $80 $00 do i $0f and 0= if cr i .## ." : " then i Wire.7bitaddr? if i Wire.beginTransmission -1 Wire.endTransmission 0 = if i .## space else ." -- " then else 2 spaces then loop cr r> base ! ; Wire.detect \ eof \ Wire.detect \ 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f \ 00 : -- -- -- -- -- -- -- -- -- \ 10 : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- \ 20 : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- \ 30 : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- \ 40 : -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- -- \ 50 : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- \ 60 : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- \ 70 : -- -- -- -- -- -- -- --
Legal: site web personnel sans commerce / personal site without seling