diff --git a/pico/lib/dma.py b/pico/lib/dma.py index 04abead..85af8d9 100644 --- a/pico/lib/dma.py +++ b/pico/lib/dma.py @@ -93,8 +93,8 @@ class PIO_DMA_Transfer(): self.dma_chan.CTRL_TRIG.INCR_WRITE = 0 self.dma_chan.CTRL_TRIG.INCR_READ = 1 - def start_transfer(self, buffer): - self.dma_chan.READ_ADDR_REG = uctypes.addressof(buffer) + def start_transfer(self, buffer, offset=0): + self.dma_chan.READ_ADDR_REG = uctypes.addressof(buffer) + offset self.dma_chan.CTRL_TRIG.EN = 1 def transfer_count(self): diff --git a/pico/lib/ws2812.py b/pico/lib/ws2812.py index 5d0b865..9b59957 100644 --- a/pico/lib/ws2812.py +++ b/pico/lib/ws2812.py @@ -29,8 +29,10 @@ class WS2812B: self.invert = invert self.pio_dma = dma.PIO_DMA_Transfer(state_machine+4, state_machine, 8, num_leds*3) - def show(self): - self.pio_dma.start_transfer(self.ar) + def show(self, array=None, offset=0): + if array is None: + array = self.ar + self.pio_dma.start_transfer(array, offset) def set(self, i, color): self.ar[i*3] = int(color[1]*self.brightness)