, mens regelmæssige Hackaday-læsere allerede ved, hvordan man blinker en LED med en mikrocontroller og har flyttet til lidt mere udfordrende projekter som at løse Navier-Stokes-ligningerne i 6502 Montering, det betyder ikke, at der ikke er noget plads til newbies. [Rik] har udgivet en fantastisk tutorial om misbrug af DMA for blinkere glødende ting. Hvorfor vil nogen gerne lære om DMA-teknikker? For blinkere glødende ting, selvfølgelig.
Denne vejledning forudsætter viden om LED-multiplexing og LED-matricer, eller i grunden en flok LED’er, der er forbundet sammen på et XY-net. Den naive måde at køre et 8 × 8 gitter af LED’er er vedhæftet otte katoder til GPIO Pins på en mikrocontroller, der fastgør de otte anoder til et andet sæt GPIO pins og sourcing og synker strøm som påkrævet. PIN-tællingen kan reduceres med skiftregistre, og LED-dæmpning kan implementeres med PWM. Dette konkluderer vores intensive otte-ugers Arduino-kursus.
Takket være mikrocontrollere, der ikke er fanget i 1980’erne, kan nye teknikker bruges til at drive disse LED-matricer. De fleste af de mere kraftfulde armmikrokontrollere leveres med DMA, en perifer til direkte hukommelsesadgang. I stedet for at have CPU’en gør alt arbejdet, kan DMA-controlleren simpelthen blande sig omkring bits mellem hukommelse og stifter. Dette betyder blinker projekter og glødier LED’er.
[Rik] ‘s metode til DMAING LED’er omfatter oprettelse af et stort’ ol array i koden, der initialiserer DMA-periferien, og ledninger op ad LED-matrixen til et par af stifterne. Denne teknik kan udvides til animationer med 64 niveauer af lysstyrke, noget der ville tage en utrolig mængde forarbejdningskraft (for en mikrocontroller, i det mindste), hvis det ikke var for DMA-controlleren.
Den opsætning, der anvendes i disse eksperimenter, er et STM32F103-kerningskort sammen med OpenSTM32 IDE. [Rik] har frigivet hele koden over på GitHub, og du er selvfølgelig opmuntret til at spille rundt.