Hallo, da beim "Adafruit Metro M4 feat" Board die NeoPixel LED nicht auf einen brauchbaren Pin(PB22) liegt, auf den man ohne Bit-Banging die LED ansteuern kann, habe ich das Prinzip der "OctoWS2811 Lib" auf den SAMD51 portiert. Das Prinzip kann man hier nachlesen. https://www.pjrc.com/teensy/td_libs_OctoWS2811.html Bei einem Stresstest mit folgenden parallelen DMAs hatte der Jitter keine Auswirkungen auf die Funktion. 2 DMAs abwechselnd 38400 Bytes PCC->RAM 6MBaud und RAM->UART 3MBaud (Beat size word) 1 DMA 1k RAM->RAM (Beat size byte) 1 DMA 1k RAM->RAM (Beat size word) Zusätzlich wurde auf dem gleichen Port auf dem die WS Daten geschrieben wurden noch ein Pin zyklisch in der main getoggelt. Das Programm wurde mit 2*240 LEDs getestet. 2000 LEDs 100Hz - 20000 LEDs 10Hz sind möglich. Das ganze wurde mit Atmel Studio 7 in C auf Registerebene umgesetzt.
Hallo, in der Konvertierung der RGB-Daten zu DMA-Daten war noch ein Fehler. Nicht benutzte Pins im Port-Byte wurden zurückgesetzt. Im Anhang ist das geänderte Programm. Anbei noch ein Video "Port/DMA in Action" und der Hardware Aufbau. :-( Hardware: Adafruit ItsyBitsy M4 Adafruit Ethernet FeatherWing (W5500) LED-Matrix 9 * 240 (2160) LEDs (1 * Port/DMA + 1 * SPI/IRQ) Die Daten kommen vom PC via LAN und Art-Net Protokoll. Gruß Thomas
Beitrag #5643785 wurde vom Autor gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.