ws2812b Zeit berechnen

Gast #4366259
Lesenswert?

Wie kann man die Zeit, die zum Senden benötigt wird, berechnen?

Laut Datenblatt https://www.adafruit.com/datasheets/WS2812B.pdf braucht 
es für 1 Bit ca 1,25µs. Nun hat ein WS2812B 3x256Bit.

Macht 768Bits * 1,25µs => 960µs pro IC.

Stimmt die Annahme so? Wäre dann bei etwa 1ms/pro Led.
#4366363
Lesenswert?

Markus M. schrieb:
> Wieso soll EIN WS2812B 256 bit "haben"?

behauptet doch keiner!

Simon schrieb:
> Nun hat ein WS2812B 3x256Bit.

aber es sind nur 24 Bit und das mal 1,25µs gibt 30µs pro WS2812B

siehe:
https://www.mikrocontroller.net/attachment/244099/m1284p_timing.jpg
Beitrag "Arduino FastLED LIB vs. WS28xx LIB"

am m1284p konnte ich das mit einem #define in delay.h lösen, einfach nur 
F_CPU auf 9L/10L setzen.
Gast #4366376
Lesenswert?

Für längere Ketten muss aber auch die Pausenzeit zwischen 2 
24-Bit-Blöcken beachtet werden:

Diese beträgt 50 usec.

Also kommst Du pro LED auf ca 80 usec

Das hab ich bei meinem Design auch zuerst nicht berücksichtigt.

Viel Erfolg
Thomas
Gast #4366427
Lesenswert?

Mädels, ihr seid echt süß....

Oben ist das Datenblatt verlinkt.
Anstatt hier rum zu raten, könnte man sich einfach mal daran halten, was 
da geschrieben steht.
Viel klarer gehts doch gar nicht.

Selbst ich, als Arduino Jünger, verstehe das im ersten Durchgang.
Also kann das nicht allzu schwer sein... ;-)

Tipp:
Nur lesen.
Nichts dazu dichten.
Und daran halten.
Dann passt das schon....
Gast #4366501
Lesenswert?

Mein Interesse das Datenblatt vorzulesen ist gering.
Auf 3X8Bit pro Chip habt ihr euch ja schon geeinigt....
Gut gemacht!

Und jetzt speziell zu dir jar...

Joachim B. schrieb:
> also die Lücke zwischen 2 LEDs immer kleiner
> als 50µs sein muss?
Im Datenblatt sind genau 5 Zeiten angegeben.
Wovon 4 Zeiten für die Bits drauf gehen und 1 Zeit für den 
Reset/Übernahme Impuls.
Es gibt in dieser Definition KEINE Lücke zwischen den LEDs.
No!
Vergiss es.
Die Lücke hast du dir (bzw. Thomas) ausgedacht.

Was das erhellend genug?
#4366553
Lesenswert?

Ulrich F. schrieb:
> Und jetzt speziell zu dir jar...

Ulrich F. schrieb:
> Die Lücke hast du dir (bzw. Thomas) ausgedacht.

ich habe mir keine Lücke ausgedacht!

Ulrich F. schrieb:
> Es gibt in dieser Definition KEINE Lücke zwischen den LEDs.
> No!

das habe ich auch zu keiner Zeit behauptet!

Joachim B. schrieb:
> war es nicht so das erst wenn alle übertragen wurden das nach 50µs die
> Werte übernommen werden? also die Lücke zwischen 2 LEDs immer kleiner
> als 50µs sein muss?

reset code
  >=50us

ab da werden die Daten zur LED übernommen,
weiss ich und ich behauptete nie was anderes.

Du solltest an deinem Leseverständnis arbeiten.

so eine unnötige Diskusion, fühlst du dich nun besser?
Dein ganzes Erscheinen im Thread hat nix erhellendes gebracht ausser das 
du Selbstdarsteller und Arduinojünger bist.
#4366605
Lesenswert?

Ich fasse die Antwort für Lesefaule mal in einer kleinen Formel 
zusammen:
Wenn man sich an das Timing im Datenblatt hält, braucht man für einen 
Aktualisierungs-Zyklus :

T = (Anz.LEDs * 30µs) + 50µs

Wenn man sich nicht an das Datenblatt hält, kann man die Pausen zwischen 
den Bits auch etwas länger machen, je nach Mut bis zu 6 µs und die 50 µs 
etwas kürzen (evtl. nur 10µs).
#4366622
Lesenswert?

Ulrich F. schrieb:
>> das habe ich auch zu keiner Zeit behauptet!
>
> Aber gefragt!

nö nicht wirklich, keine Lücke = 0µs und damit kleiner als

Joachim B. schrieb:
> also die Lücke zwischen 2 LEDs immer kleiner
> als 50µs sein muss?

was auch stimmt, wenn schon Lücken da sein sollten.

Von Lückenzwang hat keiner was geschrieben

Meine Frage war eine Restunsicherheit (bezüglich der 50µs) das die Lücke 
auf jeden Fall <50µs sein muss wenn eine Lücke sein sollte.
Gast #4366626
Lesenswert?

Thomas E. schrieb:
> kann man die Pausen zwischen
> den Bits auch etwas länger machen, je nach Mut bis zu 6 µs

Einspruch!!
Wer soll das denn glauben...
Das Datenblatt ist da eindeutig!
> ±150ns

Zwischen den Bits gibts keine Pausen!
Also gibts auch nichts länger zu machen.
Und schon gar nicht um 6µs, was ca das 4 bis 5 fache eines einzelnen 
Bits ist...

Nein!
Das glaube ich nicht.
Und meine Erfahrung mit den Dingern sagt: Die sind extrem pingelig, was 
das Timing betrifft.
Gast #4366637
Lesenswert?

Roger S. schrieb:
> Die Daten werden nach 24bit sofort
> uebernommen.
Da muss ich den jar mal in Schutz nehmen!
Denn wo er recht hat, hat er recht.

Ins Latch werden sie sofort übernommen.
Ins PWM Register erst beim Reset.

Das kann man einfach ausprobieren....
z.B. mal 1 Sekunde Daten schicken und dann einen Reset.
Du wirst sehen, sie werden quasi gleichzeitig übernommen.
#4367177
Lesenswert?

Ulrich F. schrieb:
> Thomas E. schrieb:
>> kann man die Pausen zwischen
>> den Bits auch etwas länger machen, je nach Mut bis zu 6 µs
>
> Einspruch!!
> Wer soll das denn glauben...
> Das Datenblatt ist da eindeutig!
>> ±150ns

Hab ich ja geschrieben, daß das nicht dem Datenblatt entspricht.

Details:
http://wp.josh.com/2014/05/13/ws2812-neopixels-are-not-so-finicky-once-you-get-to-know-them/

>
> Zwischen den Bits gibts keine Pausen!
> Also gibts auch nichts länger zu machen.

Damit meinte ich eine Verlängerung des Low-Pegels zwischen den 
High-Impulsen der Bits.


> Und schon gar nicht um 6µs, was ca das 4 bis 5 fache eines einzelnen
> Bits ist...
>
> Nein!
> Das glaube ich nicht.

Kannst Du glauben oder auch nicht - musst Du selbst entscheiden.
Ich hab's mit einem LED-Streifen mit 288 LEDs ausprobiert und es lief 
bei mir auch problemlos mit einer auf 200 kbps hertuntergesetzten 
Geschwindigkeit (5µs/Bit)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren