Go Down

Topic: WS2812 - LED Lichterkette verlängern (Read 676 times) previous topic - next topic

gregorss

#15
Aug 19, 2018, 07:33 pm Last Edit: Aug 19, 2018, 07:50 pm by gregorss
Die Frequenz des Datenübertragungsprotokolls ist 800kHz (1,25 µS pro Bit) Das sind 20 Takte!!! bezogen auf einen 16 Mhz Arduino.
...
20 Takte sind tatsächlich ein gutes Argument.

Was das „Assembler in C" angeht, fällt mir ein, dass ich den C64 mal dazu gebracht habe, einen Screenshot mit 1-Druckpixel-Auflösung auf einem Okimate 20 (Farbdruckerlegende(?)) auszugeben. Den Test für meinen Algorithmus habe ich in einer Art von Pseudo-Assembler-Basic programmiert, der brauchte eine halbe Stunde. In Assembler gings schneller :-)

Wenn man ungefähr weiß, wie der Prozessor arbeitet, kann man in C(++) sehr hardwarenah programmieren und damit sehr schnellen Code erzeugen. Derartiges habe ich allerdings schon lange nicht mehr gemacht. Also haut mich nicht, wenn ich Blech sabble. Ich bin Rentner. Hauen: nein, auslachen: ja :-)

Gruß

Gregor

PS: Combie hatte mir mal beschrieben, wie man erreicht, dass beim Bauen des Sketches auch eine Datei mit dem entsprechenden Assembler-Code erzeugt wird. Das könnte hier sehr hilfreich sein.
„Ich glaube, ich leg' mich noch mal hin", sagte das Bit.

uwefed

Hi

Wenn Du mir, liebenswürdigerweise, die Stelle aufzeigst, wo ich schrieb, daß die WS2812B während der Datenübertragung flimmern, nehme ich diese Kritik gerne an.
gerne:
Quote
Auch flimmert dann Stripe 1, da hier die Farben ALLER Stripes durch müssen.
Stripe 2 wäre nur noch 'etwas' am Flimmern.
Einzig Stripe 3 hätte eine fest zugeordnete Farbe.
Ich schrieb, daß Diese in der Pause NACH der Datenübertragung der 30 LEDs die Farben übernehmen.
Wenn ich direkt im Anschluss die Farben für Stripe 2 aus dem MB raus gebe, wird der angeschlossene Stripe auch diese Farben, nach der Pause, übernehmen.
Wenn ich hier nicht immer die gleichen Daten sende, sehe ich hier ein Flimmern.
Wenn ich hier eh immer die gleichen Daten sende, kann ich mir den ganzen Aufwand sparen und alle drei Striped mit D_In am MB anschließen.

MfG

postmaster-ino

Hi

Danke Dir - nur sehe ich dort nicht den Bezug auf Clock, Der mir vorgeworfen wurde.

Nichts desto trotz: Wenn das MB nur für 20 LEDs Daten raus rückt, wird ein einfaches Verlängern nicht drin sein, da die LEDs 21 bis x die Daten im gleichen 'Rutsch' haben wollen - sonst übergibt LED 20 nämlich Nichts an 21 und dann hört die Story auf.

Auch wurde wohl schon genug dazu geschrieben, daß hier ein Schieberegister nicht der glücklichste Ansatz ist.

MfG
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

uwefed

Hi

Danke Dir - nur sehe ich dort nicht den Bezug auf Clock, Der mir vorgeworfen wurde.

Nichts desto trotz: Wenn das MB nur für 20 LEDs Daten raus rückt, wird ein einfaches Verlängern nicht drin sein, da die LEDs 21 bis x die Daten im gleichen 'Rutsch' haben wollen - sonst übergibt LED 20 nämlich Nichts an 21 und dann hört die Story auf.

Auch wurde wohl schon genug dazu geschrieben, daß hier ein Schieberegister nicht der glücklichste Ansatz ist.

MfG
Quote
Man könnte versuchen, den Assembler-Code in den Libs so umzustricken, daß man bis zu sieben Stripes versorgen kann - 1x Clock, 7x Daten.
Außerdem sind es 30 LED.
Grüße Uwe

Go Up