WS2812 ansteuern

Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2134
Registered: 03 / 2003
Subject:

WS2812 ansteuern

 · 
Posted: 13.10.2016 - 19:58  ·  #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
 
Subject:

Re: WS2812 ansteuern

 · 
Posted: 13.10.2016 - 20:33  ·  #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
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2134
Registered: 03 / 2003
Subject:

Re: WS2812 ansteuern

 · 
Posted: 14.10.2016 - 07:13  ·  #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
Gender:
Location: Gera
Age: 61
Posts: 123
Registered: 04 / 2003
Subject:

Re: WS2812 ansteuern

 · 
Posted: 14.10.2016 - 17:52  ·  #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
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2134
Registered: 03 / 2003
Subject:

Re: WS2812 ansteuern

 · 
Posted: 14.10.2016 - 21:12  ·  #5
miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 58
Posts: 959
Registered: 09 / 2007
Subject:

Re: WS2812 ansteuern

 · 
Posted: 14.10.2016 - 22:01  ·  #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
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   106   120 · Page-Gen-Time: 0.048163s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI