Bättre lysdioder genom DMA
medan vanliga Hackaday-läsare redan vet hur man blinkar en LED med en mikrokontroller och har flyttat till något mer utmanande projekt som att lösa Navier-Stokes-ekvationerna i 6502-montering, det betyder inte att det inte finns det utrymme för nybörjare. [RIK] har publicerat en fantastisk handledning om att missbruka DMA för blinkigare glödiga saker. Varför skulle någon vilja lära dig om DMA-tekniker? För blinkigare glödiga saker, förstås.
Denna handledning antar kunskap om LED-multiplexering och LED-matriser, eller i princip en massa lysdioder kopplade ihop på ett XY-nät. Det naiva sättet att köra ett 8 × 8 galler av lysdioder är att fästa åtta katoder till GPIO-stiften på en mikrokontroller, som bifogar de åtta anoderna till en annan uppsättning GPIO-stift och inköp och sänkning av ström efter behov. Pinräkningen kan minskas med skiftregister, och LED-dimning kan implementeras med PWM. Detta avslutar vår intensiva åtta veckors Arduino-kurs.
Tack vare mikrokontrollers som inte är fångade på 1980-talet kan nya tekniker användas för att driva dessa LED-matriser. De flesta av de mer kraftfulla armmikrokontrollerna kommer med DMA, en perifer för direkt minnesåtkomst. I stället för att ha CPU gör allt arbete, kan DMA-regulatorn enkelt shuffle runt bitar mellan minnet och stiften. Det betyder blinkerprojekt och glödigare lysdioder.
[RIK] s metod för DMAING-lysdioder inkluderar att skapa en BIG “OL-array i koden, initiera korrekt DMA-perifer, och leder upp LED-matrisen till några av stiften. Denna teknik kan utvidgas till animationer med 64 ljusstyrka, något som skulle ta en otrolig mängd bearbetningseffekt (för en mikrokontroller, åtminstone) om det inte var för DMA-kontrollen.
Inställningen som används i dessa experiment är en STM32F103-nukleo-kort tillsammans med OpenStM32 IDE. [Rik] har släppt all kod över på GitHub, och du är naturligtvis uppmuntrad att leka.