Einen wunderschönen guten Morgen.
Bin gerade dabei ein paar LED´s mit dem oben erwähnten Treiber zum leuchten zu bewegen. Klappt zwar auch, nur nicht so wie ich will.
Kein Wunder. Bekomme auch nicht wirklich mit den "C" Routinen das Timing hin, was laut Datenblatt vorgegebn ist.
Um eine "0" zu senden möchte der Treiber folgendes Timing.:
CodeBox C
Um eine "1" zu mögen, möchte er.:
CodeBox C
Mit beiden Funktionen, bin ich um ettliche Nanosekunden daneben. Gibt es eine alternative?
In meiner jetzigen CPU wackelt ein 16MHz Quarz..
Bin gerade dabei ein paar LED´s mit dem oben erwähnten Treiber zum leuchten zu bewegen. Klappt zwar auch, nur nicht so wie ich will.
Kein Wunder. Bekomme auch nicht wirklich mit den "C" Routinen das Timing hin, was laut Datenblatt vorgegebn ist.
Um eine "0" zu senden möchte der Treiber folgendes Timing.:
CodeBox C
void ws2812Low(uint8_t port, uint8_t bit) { BS(PORTK,PK0); // high _delay_us(0.35); // high for 0.35µS BC(PORTK,PK0); // low _delay_us(0.80); // 0.8µS }
Um eine "1" zu mögen, möchte er.:
CodeBox C
void ws2812High(uint8_t port, uint8_t bit) { BS(PORTK,PK0); // high _delay_us(0.70); // high for 0.35µS BC(PORTK,PK0); // low _delay_us(0.60); // 0.8µS }
Mit beiden Funktionen, bin ich um ettliche Nanosekunden daneben. Gibt es eine alternative?
In meiner jetzigen CPU wackelt ein 16MHz Quarz..