I verified that I2C is working, configuring and reading the VL6180 works and the interrupt works as well. I every time I press the button I get "Uncaught exception in ExtInt interrupt handler line 0 MemoryError". I traced this back to
Code: Select all
self.i2c1.mem_read(1, self.addr, 0x0062, addr_size=16)
Main.py
Code: Select all
import pyb
from pyb import Pin, ExtInt
from vl6180 import VL6180
dist = VL6180()
def range_it(t):
global dist
print('Distance: ', dist.read_dist()[0])
d_it = ExtInt(Pin.cpu.A0, ExtInt.IRQ_RISING, Pin.PULL_NONE, range_it)
print('Distance: ', dist.read_dist()[0])
Code: Select all
def read_dist(self):
self.i2c1.mem_write(0x01, self.addr, 0x0018, addr_size=16) #start one shot distance measurement
pyb.delay(10)
self.i2c1.mem_write(0x07, self.addr, 0x0015, addr_size=16) #clear interrupt flags
return self.i2c1.mem_read(1, self.addr, 0x0062, addr_size=16) #return distance result