mikrocontroller.net

Forum: Projekte & Code WS2812B mit SAMD51 PORT/DMA (OctoWS2811 Prinzip)


Autor: Thomas F. (thomas_fr)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
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.

Autor: Thomas F. (thomas_fr)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.