Forum: Mikrocontroller und Digitale Elektronik ATSAM WS2812B?


von Meier (Gast)


Lesenswert?

Hallo,

der Artikel hier im Wiki ist schon etwas älter. Des weiteren habe ich so 
auf Anhieb keine Lib in C/C++ gefunden für die Atmels.

Ich möchte gerne WS2812B ansteuern. Das ganze soll wenn möglich aber 
nicht den MCU ausbremsen wie auf den AVRs. Geplant sind ca 200 Leds.

Gibt es eine gute Lösung, die das nebenbei in Hardware lösen kann?

von Won K. (Firma: Outside the Asylum) (the_sane)


Lesenswert?

Meier schrieb:
> Gibt es eine gute Lösung, die das nebenbei in Hardware lösen kann?

Ein zweiter AVR, Tiny85 oder so, der sich nur um die WS2812 kümmert?

von temp (Gast)


Lesenswert?

Ich denke du musst dich entscheiden was du willst. Entweder deinen ATSAM 
benutzen und das Programm selber schreiben wenn du nichts findest, oder 
du musst deine Vorstellungen bzw. des uC an das anpassen was du dir 
irgendwoher kopieren kannst. Die Welt wartet bestimmt nicht darauf genau 
dein Problem so zu lösen wie es dir am besten passt.

von Andreas H. (enochroot)


Lesenswert?

Hallo Meier,

genau die gleiche Sache möchte ich auch hinbekommen, scheitere aber 
momentan an der Geschwindigkeit der WS2812B.
Hast Du es hinbekommen?

Gruß
EnochRoot

von ThomasF (Gast)


Lesenswert?

Um welchen ATSAM geht es denn?

von Andreas H. (enochroot)


Lesenswert?

Hallo ThomasF,

habe den ATSAM3U4C im Einsatz.
Die PWM oder den SPI mit 800kHz Taktfrequenz laufen zu lassen ist kein 
großes Problem. Mein Problem besteht in der Änderung des Duty-Cycles 
(PWM) bzw. der SPI-Daten. Sobald ich das ganze mit 800kHz laufen lasse 
und dann während der Laufzeit die Datenausgabe ändere, kommt mein 
Controller nicht mehr hinterher.
Momentan läuft alles ohne DMA, da ich das noch nie gemacht habe.

Gruß
EnochRoot

von ThomasF (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Andreas H.

ich benutze leider nur den ATSAMD21 und ATSAMD51.

Im Anhang ist der Code für den ATSAMD51 der über die SPI
die WS Daten generiert.

Über die SPI sollte das auch mit dem ATSAM3U4C funktionieren.

Funktion:
Beim D51 ist es möglich 4 Bytes auf einmal der SPI zu übergeben
in den 4 Bytes ist ein WS Byte codiert.
4 Bit == ein WS Bit (Low 0b1000 High 0b1110) @ 3,2MHz
Interrupt gesteuert wird immer 1 RGB Byte über eine Tabelle
in 4 WS Bytes gewandelt und gesendet.

Beim ATSAM3U4C könnte man das Verfahren auf 2 * 16Bit übertragen.
Interrupt Routine und Tabelle müsste man anpassen.

Beim ATSAMD51@120MHz werden ca.3% CPU Leistung verbraucht.
Beim ATSAM3U4C@96MHz schätze ich mal ca.10%

Gruß Thomas

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
Noch kein Account? Hier anmelden.