0

DMA driven NeoPixels
Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.

DMA driven NeoPixels

by edoardocasti on Thu Jan 31, 2019 1:24 pm

Hi everybody,
I am currently working on a huge neopixel led matrix running on a Zero platform. I am using the Adafruit NeoPixel DMA library in order to be able to refresh the display while I’m reading data from an SD. I did a lot of work in order to make the code run fast enough in order to get a decent refresh speed and I am currently very satisfied with the results. But I still have a problem. As far as I understood the DMA library continuously sends data to the leds via a transfer that never ends, but there is no way to know when the transfer actually ended and restarted in order to be able to generate the next frame and keep the display in sync with the newly read data. As now the codes works great but, since there is no synchronisation between the refresh rate and the function .show() it happens that data is changed during the leds update. This results in one part of the matrix be displaying a frame and the other being displaying the previous one. In would be very hepful to be able to say generate an interrupt at the end of dma transfer so that the code can understand that the refresh has actually ended and can push new data in. Is there a way to do this ?
Thank you in advance for your help.

edoardocasti
 
Posts: 5
Joined: Thu Jan 31, 2019 1:08 pm

Re: DMA driven NeoPixels

by edoardocasti on Fri Feb 15, 2019 7:43 am

Anyone ?

edoardocasti
 
Posts: 5
Joined: Thu Jan 31, 2019 1:08 pm

Please be positive and constructive with your questions and comments.