lock SPI only when writing

This commit is contained in:
Dan Halbert 2025-08-21 16:17:06 -04:00
parent 163f2f166a
commit 84f2130c38

View file

@ -108,9 +108,9 @@ class DotStar(adafruit_pixelbuf.PixelBuf):
self._spi = None self._spi = None
try: try:
self._spi = busio.SPI(clock, MOSI=data) self._spi = busio.SPI(clock, MOSI=data)
while not self._spi.try_lock(): self._spi.try_lock()
pass
self._spi.configure(baudrate=baudrate) self._spi.configure(baudrate=baudrate)
self._spi.unlock()
except (NotImplementedError, ValueError): except (NotImplementedError, ValueError):
self.dpin = digitalio.DigitalInOut(data) self.dpin = digitalio.DigitalInOut(data)
@ -145,7 +145,6 @@ class DotStar(adafruit_pixelbuf.PixelBuf):
self.fill(0) self.fill(0)
self.show() self.show()
if self._spi: if self._spi:
self._spi.unlock()
self._spi.deinit() self._spi.deinit()
else: else:
self.dpin.deinit() self.dpin.deinit()
@ -174,7 +173,9 @@ class DotStar(adafruit_pixelbuf.PixelBuf):
def _transmit(self, buffer: ReadableBuffer) -> None: def _transmit(self, buffer: ReadableBuffer) -> None:
if self._spi: if self._spi:
self._spi.try_lock()
self._spi.write(buffer) self._spi.write(buffer)
self._spi.unlock()
else: else:
self._ds_writebytes(buffer) self._ds_writebytes(buffer)