MCPcopy Create free account
hub / github.com/RetiredWizard/PyDOS / I2C

Method I2C

lib/pydos_hw.py:187–246  ·  view source on GitHub ↗
(self,i2cNo=0)

Source from the content-addressed store, hash-verified

185 self.neoPixel = board.NEOPIXEL
186
187 def I2C(self,i2cNo=0):
188 # i2cNo = 0 returns first available I2C device in this order of availablity:
189 # CircuitPython: board.STEMMA_I2C, board.I2C, busio.I2C(SCL,SDA)
190 # MicroPython: machine.I2C(I2C_NUM if defined), else machine.SoftI2C(SCL,SDA)
191 # If default I2C is SoftI2C do not configure I2C_NUM or set it to None
192 # i2cNo = 1 returns first available I2C device in the following order:
193 # CircuitPython: board.I2C, busio.I2C(SCL,SDA)
194 # MicroPython: machine.I2C((I2C_NUM+1)%2 if defined), else machine.SoftI2C(SCL,SDA)
195 # i2cNo = 2 returns busio.I2C(SCL,SDA) for CircuitPython, SoftI2c(SCL,SDA) for MicroPython
196
197 if not self._I2C[i2cNo]:
198 if implementation.name.upper() == "CIRCUITPYTHON":
199
200 #if 'I2C_POWER_INVERTED' in dir(board) and not self._I2C_power:
201 # self._I2C_power = digitalio.DigitalInOut(board.I2C_POWER_INVERTED)
202 # self._I2C_power.direction = digitalio.Direction.OUTPUT
203 # self._I2C_power.value = False
204
205 if 'STEMMA_I2C' in dir(board) and i2cNo == 0:
206 self._I2C[i2cNo] = board.STEMMA_I2C()
207 elif 'I2C' in dir(board) and i2cNo in [0,1]:
208 self._I2C[i2cNo] = board.I2C()
209 elif self.SCL and i2cNo in [0,1,2]:
210 # dangerous bus as 0 or 1 may use these pins. reserve 0 and 1 first
211 for i in [0,1]:
212 if i2cNo == i:
213 break
214 self.I2C(i)
215 self._I2C[i2cNo] = busio.I2C(self.SCL, self.SDA)
216 elif 'SCL1' in dir(board) and i2cNo in [0,1,2,3]:
217 # dangerous bus as 0,1 or 2 may use these pins. reserve 0,1 and 2 first
218 for i in [0,1,2]:
219 if i2cNo == i:
220 break
221 self.I2C(i)
222 self._I2C[i2cNo] = busio.I2C(board.SCL1, board.SDA1)
223
224 if self.KFW and not self.I2CbbqDevice and i2cNo == 0:
225 self.I2CbbqDevice = I2CDevice(self._I2C[i2cNo], 0x1F)
226 elif implementation.name.upper() == "MICROPYTHON":
227 if self.I2C_NUM != None:
228 if i2cNo == 0:
229 #self._I2C = m_I2C(self.I2C_NUM,scl=Pin(self.SCL),sda=Pin(self.SDA))
230 try:
231 self._I2C[i2cNo] = m_I2C(self.I2C_NUM)
232 except:
233 self._I2C[i2cNo] = m_I2C(self.I2C_NUM,scl=Pin(self.SCL),sda=Pin(self.SDA))
234 elif i2cNo == 1:
235 try:
236 self._I2C[i2cNo] = m_I2C((self.I2C_NUM+1)%2)
237 except:
238 self._I2C[i2cNo] = m_I2C((self.I2C_NUM+1)%2,scl=Pin(self.SCL),sda=Pin(self.SDA))
239
240 if not self._I2C[i2cNo]:
241 try:
242 self._I2C[i2cNo] = s_I2C(scl=Pin(self.SCL),sda=Pin(self.SDA))
243 except:
244 pass

Callers 11

lcdPrintFunction · 0.80
lcdScrollFunction · 0.80
i2cscan.pyFile · 0.80
displayTempFunction · 0.80
I2CFunction · 0.80
__init__Method · 0.80
__init__Method · 0.80
factory_test.pyFile · 0.80
I2CFunction · 0.80
I2CFunction · 0.80
__init__Method · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected