WS2812 ansteuern

Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

WS2812 ansteuern

 · 
Gepostet: 13.10.2016 - 19:58 Uhr  ·  #1
Hallo Zusammen,

ich habe eine Idee und benötige dazu 180 RGB-LEDs, die einzeln ansteuerbar sind. Also mal schnell bestellt (100 Stück auf PCB für ca. $10 inkl. Versand). Ok die APA102 sind wesentlich einfacher anzusteuern, aber auch wesentlich teurer.

Nun zur Ansteuerung: Die LEDs wollen eine Frequenz von 800kHz sehen, wobei die Länge des High in der Periode das Lo/High der Daten bedeutet. Ist also in den 1.25us der Periodendauer das High am Anfang 0.4us und das Low 0.8us bedeutet dies ein Bit mit 0, ist das High am Anfang 0.8us und das Low 0.4us bedeutet dies ein Bit mit 1 (ja 0.4+0.8 ist nicht 1.25, aber es gibt Toleranzen). Asynchrone serielle Datenübertragung. Wie realisiert man sowas am einfachsten? Es sind 180 LEDs in Reihe und jede benötigt 24 Bit (3x8 Bit je Farbe). Der Datenstrom darf für eine komplette Sequenz nicht unterbrochen werden.

Gruss
Harry
Harald_K
 
Avatar
 
Betreff:

Re: WS2812 ansteuern

 · 
Gepostet: 13.10.2016 - 20:33 Uhr  ·  #2
wir nehmen einen Timer-INT mit 400ns ...
du sendest immer ne1, dann das Datenbit, dann ne 0 ...

gibt dein Muster mit 0.8/0.4 bzw. 0.4/0.8

Problem dürfte sein, beim Atmel genug Befehle unterzubringen, bei 16MHz dauert 1 Zyklus schon 62,5ns ... macht 6,5 Berfehle, das langt nicht für INTAck und RETI ...

also eher was für einen mit 64MHz , aber du wirst um ASM wohl nicht drumrumkommen ...

ggf. ginge sowas wie das SPI-Modul des Atmel, dann kannst du immer 8 bits vorbereiten und dann rausclocken .... damit hast du mehr Zeit zum Daten nachladen.

Das Datenfeld mußt du halt vorher vorbereiten, mit den Anfangs- und Endbits brauchst du dann 180 x 3 x 3 Bytes ... und nen passend großen Bereich um die Daten irgendwoher zu empfangen ...

4kRAM sollten also schon da sein ...
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: WS2812 ansteuern

 · 
Gepostet: 14.10.2016 - 07:13 Uhr  ·  #3
Guten Morgen Harald,

ich dachte sowieso an einen XMega256A3U @ 64 MHz :) - nur der sollte natürlich noch was anderes nebenher machen. Die Aktualisierung der LEDs soll im Bereich von 1-10x/sek erfolgen. Ich sehe schon: mal abwarten, bis die Dinger da sind (Lieferzeit 24-48 Tage :D) und dann experimentieren.

Gruss
Harry
Thomas
Benutzer
Avatar
Geschlecht:
Herkunft: Gera
Alter: 62
Beiträge: 123
Dabei seit: 04 / 2003
Betreff:

Re: WS2812 ansteuern

 · 
Gepostet: 14.10.2016 - 17:52 Uhr  ·  #4
Hallo Harry,

optimal ist ein XMega???E5. Der hat diese Custom-Logic drin.
Im Internet habe ich einen Treiber gesehen, der macht mit USART im MSPI-Mode, DMA und XCL die Ausgabe fast ohne Prozessorlast.

Gruss
Thomas
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: WS2812 ansteuern

 · 
Gepostet: 14.10.2016 - 21:12 Uhr  ·  #5
miparo
Schreiberling
Avatar
Geschlecht:
Herkunft: Germany
Alter: 59
Beiträge: 988
Dabei seit: 09 / 2007
Betreff:

Re: WS2812 ansteuern

 · 
Gepostet: 14.10.2016 - 22:01 Uhr  ·  #6
Hi Harry,
das ist ja nicht einmal "richtig" C.
Ein paar Register mit Konstanten laden und fertig, das ist das gute an DMA und XCL.

Gruß
miparo
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   107   121 · Page-Gen-Time: 0.034208s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI