Mentre i regolari lettori Hackaday già sappiano come lampeggiare un LED con un microcontrollore e si sono spostati su progetti leggermente più impegnativi come la risoluzione delle equazioni di Stokes in 6502, ciò non significa che non ci sia spazio per i neofiti. [Rik] ha pubblicato un straordinario tutorial sull’abusare DMA per le cose gloriose blinker. Perché qualcuno dovrebbe voler imparare sulle tecniche di DMA? Per le cose glowy Blinkier, ovviamente.
Questo tutorial assume la conoscenza delle matrici a LED multiplexing e led, o fondamentalmente un grappolo di LED collegati insieme su una griglia XY. Il modo ingenuo per guidare una griglia di LED da 8 × 8 sta attaccando otto catodi ai perni GPIO su un microcontrollore, collegando gli otto anodi a un altro set di pin GPIO e di rafforzamento e corrente di affondare come richiesto. Il conteggio del pin può essere ridotto con i registri del cambio e la dimming del LED può essere implementata con PWM. Questo conclude il nostro corso intensivo di Arduino di otto settimane.
Grazie ai microcontrollori che non sono intrappolati negli anni ’80, le nuove tecniche possono essere utilizzate per guidare queste matrici a LED. La maggior parte dei più potenti microcontrollers del braccio sono dotati di DMA, una periferica per l’accesso diretto della memoria. Invece di avere la CPU fai tutto il lavoro, il controller DMA può semplicemente mescolare attorno a bit tra memoria e spilli. Ciò significa progetti Blinker e LED Gloochier.
Il metodo [RIK] per i LED DMAING include la configurazione di una grande serie OL nel codice, inizializzando correttamente la periferica DMA e il cablaggio della matrice del LED a pochi dei perni. Questa tecnica può essere ampliata ad animazioni con 64 livelli di luminosità, qualcosa che richiederebbe un’incredibile quantità di potenza di elaborazione (per un microcontrollore, almeno) se non fosse per il controller DMA.
La configurazione utilizzata in questi esperimenti è una scheda Nucleo STM32F103 con l’IDE OpenStM32. [Rik] ha rilasciato tutto il codice su GitHub, e tu sei, ovviamente, incoraggiato a giocare.