Bessere LEDs über DMA

, während regelmäßige Hackaday-Leser bereits wissen, wie man eine LED mit einem Mikrocontroller blinkt und auf etwas anspruchsvollere Projekte wie das Lösen der Navier-Stokes-Gleichungen in der 6502-Montage umgezogen ist, was nicht bedeutet, dass es nicht gibt Platz für Neulinge. [RIK] hat ein tolles Tutorial zum Missbrauch von DMA für blinkier glühende Dinge veröffentlicht. Warum sollte jemand über DMA-Techniken lernen wollen? Für blinkier glühende Dinge natürlich.

Dieses Tutorial übernimmt das Wissen über LED-Multiplexing- und LED-Matrizen, oder im Wesentlichen ein paar LEDs, die an einem XY-Gitter miteinander verbunden sind. Die naive Möglichkeit, ein 8 × 8-Gitter von LEDs zu fahren, fügt acht Kathoden an GPIO-Pins an einem Mikrocontroller an, wobei die acht Anoden an einem anderen Satz von GPIO-Pins und Beschaffung und Versenkungsstrom bei Bedarf angebracht sind. Die PIN-Anzahl kann mit Schieberegistern reduziert werden, und das LED-Dimmen kann mit PWM implementiert werden. Dies schließt unseren intensiven achtwöchigen Arduino-Kurs ab.

Dank Mikrocontroller, die in den 1980er Jahren nicht eingeschlossen sind, können neue Techniken verwendet werden, um diese LED-Matrizen zu treiben. Die meisten der leistungsfähigeren Arm-Mikrocontroller werden mit DMA, einem Peripheriegerät für direkten Speicherzugriff geliefert. Anstatt die CPU alle Arbeiten zu leisten, kann der DMA-Controller einfach um Bits zwischen Speicher und Pins shuffeln. Dies bedeutet Blinker-Projekte und Glühen-LEDs.

[RIK] Das Verfahren für DMAING-LEDs umfasst das Einrichten eines großen “OL-Arrays in den Code, der den DMA-Peripheriegerecht korrekt initialisiert und die LED-Matrix auf einige der Pins verdrahet. Diese Technik kann auf Animationen mit 64 Helligkeitsstufen erweitert werden, was eine unglaubliche Menge an Verarbeitungsleistung (zumindest für einen Mikrocontroller) dauert, wenn er nicht für den DMA-Controller wäre.

Das in diesen Experimenten verwendete Setup ist eine STM32F103-Nukleo-Platine zusammen mit der OpenStM32-IDE. [RIK] hat den gesamten Code über Github veröffentlicht, und Sie sind natürlich dazu aufgefordert, herumzuspielen.