Merge pull request #71 from dhalbert/spi-lock-managment

lock SPI only when writing
This commit is contained in:
foamyguy 2025-08-21 16:26:11 -05:00 committed by GitHub
commit 4b0ba649e5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

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