Forum: Projekte & Code WS2812B mit Attiny817 Hardware ansteuern


von Thomas F. (thomas_fr)


Angehängte Dateien:

Lesenswert?

Hallo,

im Anhang ist ein Codeschnipsel wie man das WS2812B Protokoll
mit der Hardware des Attiny817 umsetzen kann.

Hardware:
USART im SPI Master Mode
TCB0 im single shot Mode
Event System XCK vom PIN an TCB0 leiten
CCL Das ganze verkleben

Im Code ist es nocht etwas genauer beschrieben.


Vielleicht kann es ja jemand gebrauchen.

Gruß Thomas

von Johannes S. (Gast)


Lesenswert?

Es gibt einen Wikiartikel zur Ansteuerung der WS2812, ich habe mal einen 
Link auf deinen Beitrag da rein gesetzt.
https://www.mikrocontroller.net/articles/WS2812_Ansteuerung

von Johann H. (Firma: none) (johann1979)


Lesenswert?

Schöner code...

von Thomas F. (thomas_fr)


Lesenswert?

Danke für das Feedback.

Sollte auch mit den verwanden ATtinys funktionieren.

ATtiny417-814-816-817-1614-1616-1617

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Ich mag mich vielleicht irren, aber was hat ein tiny817 mit XMega zu 
tun?

#include <avr/xmega.h>

von Thomas F. (thomas_fr)


Lesenswert?

Die genannten ATtiny haben eine "avrxmega2" Struktur.

Bis auf die 5V haben die wenig mit den ATtiny gemeinsam.

Gruß Thomas

von Thomas F. (thomas_fr)


Angehängte Dateien:

Lesenswert?

Hallo,

im Anhang ist ein Codeschnipsel bei dem ein ATtiny817 als
SPI WS Konverter dient.
Ist vielleicht interessant wenn der ATtiny212 verfügbar ist.

Das ganze wurde mit einem ATMega328P als SPI Master und 240 LED
getestet. Der jitter der durch den asynchronen Start des TCB0
entsteht hatte hier keine Auswirkungen.


Gruß Thomas

von Sol B. (s-ol)


Angehängte Dateien:

Lesenswert?

Hey, vielen Dank für den Beispielcode!
Ich versuche gerade das Ganze auf einem ATTiny414 umzusetzen.

Wegen der verschieden Pinouts und meinem Boardlayout habe ich ein paar 
Änderungen vorgenommen:

- USART per PORTMUX auf die alternativen Pins gelegt (XCK auf PA3)
- dementsprechend ASYNCCH0 (wg Source von PORTA) statt ASYNCCH1
- LUT1 statt LUT0

allerdings war ich bis jetzt erfolglos, in Einzelnfällen ist hat die 
erste LED grün aufgeleuchtet, was aber eher nach Zufall klingt.

Ein paar Fragen zum Originalcode hätte ich auch noch:
- fehlt nicht eine Zeile um per PORTMUX LUT0-OUT von PA4 auf PB4 zu 
verschieben?
PA4 wird im Code nicht genutzt und PB4 ist als 'LED' kommentiert.
- wozu wird unten im Loop PB4 per Write auf 'PORTB.IN' getoggled?


Im Anhang ist meine aktuelle Version des codes, ich wäre für Hinweise 
sehr dankbar :)

: Bearbeitet durch User
von Thomas F. (thomas_fr)


Angehängte Dateien:

Lesenswert?

Hallo Sol B,

an PB4 "LED" ist eine normale LED angeschlossen.
Hat nichts mit den WS-LED zu tun.

Ich hab deine Änderungen mit einem 817 getestet.
"USART0.CTRLB = USART_TXEN_bm;" darf nicht aus kommentiert werden.
Nach dieser Änderung hat es funktioniert.

Das Projekt mit dem ich es getestet habe ist im Anhang .

Bei den Fuses muss 16MHz eingestellt sein.

Gruß Thomas

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.