From 84f2130c383ff21188e7d51f507f06de73f239d2 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Thu, 21 Aug 2025 16:17:06 -0400 Subject: [PATCH] lock SPI only when writing --- adafruit_dotstar.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/adafruit_dotstar.py b/adafruit_dotstar.py index 3f8a415..9cca97b 100755 --- a/adafruit_dotstar.py +++ b/adafruit_dotstar.py @@ -108,9 +108,9 @@ def __init__( 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 @@ def deinit(self) -> None: self.fill(0) self.show() if self._spi: - self._spi.unlock() self._spi.deinit() else: self.dpin.deinit() @@ -174,7 +173,9 @@ def n(self) -> int: 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)