Menu Close

Jobb LED-ek a DMA-n keresztül

, míg a rendszeres hackaday olvasók már tudják, hogyan villognak egy mikrokontroller LED-et, és kissé kihívást jelentő projektekre költöztek, mint például a Navier-Stokes egyenletek megoldása 6502 összeszerelésben, ez nem jelenti azt, hogy nincs Hely az újoncok számára. [Rik] has published a terrific tutorial on abusing DMA for blinkier glowy things. Miért szeretne valaki megismerni a DMA technikákat? Természetesen a blinkier glowy dolgokra.

This tutorial assumes knowledge of LED multiplexing and LED matrices, or basically a bunch of LEDs connected together on an XY grid. A 8 × 8 LED-os rács meghajtásának naiv módja nyolc katódot biztosít a mikrokontroller GPIO csapokhoz, a nyolc anódot a GPIO PIN-kódok egy másik készletéhez rögzíti, és szükség szerint a beszerzést és süllyedő áramot. A PIN-kód csökkenthető a Shift Regiszterekkel, és a LED-es fényszórás PWM-vel megvalósítható. Ez megköti az intenzív nyolc hetes arduino tanfolyamunkat.

Thanks to microcontrollers that aren’t trapped in the 1980s, new techniques can be used to drive these LED matrices. most of the more powerful ARM microcontrollers come with DMA, a peripheral for direct memory access. Ahelyett, hogy a CPU-t elvégzi az összes munkát, a DMA vezérlő egyszerűen keverheti a memóriát és a csapokat. Ez azt jelenti, hogy a villogó projektek és a glowier LED-ek.

[Rik]’s method for DMAing LEDs includes setting up a big ‘ol array in the code, correctly initializing the DMA peripheral, and wiring up the LED matrix to a few of the pins. This technique can be expanded to animations with 64 levels of brightness, something that would take an incredible amount of processing power (for a microcontroller, at least) if it weren’t for the DMA controller.

Az ezeken a kísérletekben használt beállítás egy STM32F103 nucleo tábla, az OpenStM32 IDE-vel együtt. [RIK] kiadta az összes kódot a Githubon, és természetesen arra ösztönöz, hogy játsszon körül.

Leave a Reply

Your email address will not be published. Required fields are marked *