Forum: Mikrocontroller und Digitale Elektronik TLC9540 mit ATtiny45 oder 85 betreiben - geht das?


von Mirko S. (libra)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
bin neu hier, hab aber schon viel gelesen - tolles Forum!
Kurze Vorstellung meiner Wenigkeit: Baujahr 1968 und Maschbau-Ing.
Der absolute Elektronikfreak bin ich nicht, also lasst bitte Milde 
walten ;-) Mich fasziniert es aber sehr wohl, Dinge wie den Arduino zu 
programmieren und die Projekte dann irgendwie auf Chips ohne die 
Arduino-Umgebung zu portieren. Für lange Winterabende ab und an genau 
das Richtige.
Hab es immerhin hinbekommen, einen Temperaturlogger nach eigenen 
Vorstellungen zu bauen und zu programmieren.

Aktuell aber folgendes Problemchen:
Für das Betreiben einer LED-Lichterkette bin ich auf einen TLC9540 
gestoßen. Hab vor, zu Helloween einem Kürbis nen Larson-Scanner als 
Augen zu verpassen. Sinnlos, aber lustig (wie ich finde). Natürlich 
nicht nur mit Larson-Scanner sondern bei der Gelegenheit noch mit 
anderen lustigen LED-Animationen.
Der Prototyp läuft mit einem ATmega128P problemlos. Siehe Bild im 
Anhang.
Nun wollte ich das "einfach" auf nen ATtiny45 (oder 85) brennen. Vom 
Speicherplatz her kein Problem, der Code ist nicht groß.
Aber scheinbar klappt das deswegen nicht, weil in der zur Verfügung 
stehenden Library für den Arduino scheinbar ein ATtiny45/85 nicht 
vorgesehen ist. Hab gedacht, ich muss nur die korrespondierenden Pins 
vom ATmega beim ATtiny wiederfinden.
Das klappt aber bei einem Pin nicht.
Der TLC9540 benötigt beim ATmega128 u.a. die Pins PB1, PB2, PB3, PB5 und 
PD3
Beim ATtiny45 gibt es den PD3 nicht aber es wäre noch der PB4 vorhanden.
Ich frage mich, ob es mit einer entsprechend modifizierten Library dann 
doch irgendwie ginge (ist nur die Frage, ob ICH das dann hinbekomme...)

In der Librariy "ATmega_xx8.h" finde ich folgenden Eintrag:
----------------
/** OC2B (Arduino digital pin 3) -> GSCLK (TLC pin 18) */
#define GSCLK_PIN    PD3
#define GSCLK_PORT   PORTD
#define GSCLK_DDR    DDRD
-----------------
Mir sagt das leider nicht viel, aber ich denke schon, dass das damit 
zusammenhängen müßte, ein bestimmtes Signal auf einen bestimten Pin 
(hier: PD3) zu leiten.

Ich weiß übrigens, dass das alles viel eleganter gehen würde (einzeln 
adressierbare LEDs, Neopixels und so), aber das will ich hier gar nicht. 
Es reizt mich eben, einen kleinen Chip wie den ATtiny45 den TLC9540 
steuern zu sehen.

Hat jemand einen Tip für mich, ob und wie ich den TLC9540 mit nem 
ATiny45/85 gesteuert kriege?

Grüße und danke vorab

von Hubert G. (hubertg)


Lesenswert?

Mirko S. schrieb:
> /** OC2B (Arduino digital pin 3) -> GSCLK (TLC pin 18) */

Wird daran scheitern das der Tiny45 keinen OC2B hat. Es gibt nur Timer 0 
und 1.
Möglicherweise könnte man es auf einen anderen Timer umstricken, dazu 
würde man aber den ganzen Code brauchen.
PB5 geht beim Tiny nicht, das ist der Reset.

: Bearbeitet durch User
von Mick (Gast)


Lesenswert?

Vielleicht hilft dir das hier weiter: https://github.com/artcfox/tlc5940

von holger (Gast)


Lesenswert?

>PB5 geht beim Tiny nicht, das ist der Reset.

Geht schon, aber ab dann ist ISP tot.

von Harry D. (harry_d)


Lesenswert?

ATtiny zur Arduino-IDE hinzufügen: https://github.com/damellis/attiny

von Mirko S. (libra)


Lesenswert?

Vielen Dank für die vielen und schnellen Antworten!
Boah...da werd ich mal versuchen, durchzusteigen.
Auf den ersten Blick sehen die Links recht vielversprechend aus.
Schau mer mal.
Falls jemand schon sowas umgesetzt hat (TLC9540 mit ATtiny betreiben), 
bitte melden. Für ein Kochrezept wäre ich dankbar, auch wenn es 
natürlich schön ist, selber eine Lösung zu finden ;-)

von Manfred (Gast)


Lesenswert?

Mirko S. schrieb:
> Der Prototyp läuft mit einem ATmega128P problemlos.
Wenn Du mit Arduino und AT328 glücklich bist, bleibe bei diesem 
Baustein. Den 328 als handhabbares Platinchen vom Chinesen kaufen, mit 
einem USB-Adapter programmieren (wie nano) und gut ist. Kommt für dieses 
Projekt zu spät, aber ansonsten:
https://www.aliexpress.com/item/Free-Shipping-new-version-1pcs-ATMEGA328P-Pro-Mini-328-Mini-ATMEGA328-5V-16MHz-for-Arduino/32665418223.html

von Mirko S. (libra)


Lesenswert?

Manfred schrieb:
> Wenn Du mit Arduino und AT328 glücklich bist, bleibe bei diesem
> Baustein. Den 328 als handhabbares Platinchen vom Chinesen kaufen, mit
> einem USB-Adapter programmieren (wie nano) und gut ist.

Hallo Manfred,
tja...hast schon recht und es ist gut zu wissen, dass bereits eine 
Lösung existiert ;-)
Aber wie soll ich sagen...ist so ein bissl wie ein selbst gestecktes 
Ziel erreichen zu wollen und auf dem Weg dorthin noch etwas lernen zu 
können und tiefe Befriedigung darin zu finden, wenn man etwas zum 
Funktionieren gebracht hat. Man muss das so sehen: Die kleinen schwarzen 
Dinger waren für mich schon immer ein Buch mit sieben Siegeln und diese 
zu programmieren reines Hexenwerk. Mit dem Arduino erstmals eine LED zum 
Blinken zu kriegen war für mich sowas wie "Ich hab Feuer gemacht".
Und dass ich das aktuelle Projekt nun gerne mit dem Tiny befeuern 
möchte, ist auch so ein bissl die Ingenieurskrankheit, Überflüssiges 
möglichst wegzulassen.
Grüße

von Wilhelm M. (wimalopaan)


Lesenswert?

Ich verstehe ja den Ehrgeiz, dass so umsetzen zu wollen.

Für die Zukunft würde ich mir mal die WS2812 (gibts auch bedrahtet) und 
kompatiblen LEDs ansehen. Ich benutze eigentlich nichts anderes mehr ...

von Mirko S. (libra)


Lesenswert?

Wilhelm M. schrieb:
> Für die Zukunft würde ich mir mal die WS2812 (gibts auch bedrahtet) und
> kompatiblen LEDs ansehen.

Hallo Wilhelm,
stimmt, sehr hübsch, die Dinger...und ich hab sogar zwei 16er-Ringe in 
der Schublade - das sollen mal so Steampunk-Goggles für meine Nichte 
werden. Freu mich schon drauf. Aber für den Moment will ich noch nicht 
aufgeben. Ich fand es übrigens faszinierend, wie absolut einfach und auf 
Anhieb die Sache mit der Kombi TLC9540/ATmega geklappt hatte.
------------
Eine scheinbar mögliche Pinbelegung hab ich über einen der oberen Links 
gefunden. Leider krieg ich den Tiny jetzt irgendwie nicht programmiert. 
Hat wohl etwas mit der vorhandenen Library zu tun und der Compiler 
bricht frühzeitig ab.

Grüße

von Mirko S. (libra)


Angehängte Dateien:

Lesenswert?

So...das Projekt ist umgesetzt, der Cylon Pumpkin steht rechtzeitig für 
morgen seit vorhin im Fenster ;-)

Die Schnitzerei ist gar nicht so einfach gewesen und die beste Ehefrau 
von allen wollte sowieso ein anderes Motiv. Töchterchen findets cool.

Mit dem ATiny hab ich es leider nicht hinbekommen. Irgendwie hatte ich 
nur den totalen Huddel mit der einen Library die ich mir aus dem o.g. 
Link runtergeladen hatte. Das klappte rein gar nicht weil ich sicher ein 
paar dazu notwendige Dinge nicht weiß und somit nicht berücksichtigen 
konnte. Wurde mir dann zu kompliziert und um nicht frustriert aufgeben 
zu müssen also zurück zu Plan B und den ATmega328 verwendet (oben hatte 
ich fälschlicherweise "128" geschrieben, sorry).

Die LEDs blinken übrigens nicht einfach nur nacheinander, sondern werden 
allmählich gedimmt, so dass das Lauflicht quasi immer nen kleinen 
Schwanz hinter sich herzieht. Alles ziemlich einfach mit dem ATmega328 + 
TLC9540 umzusetzen. Besonders hilfreich beim Löten ist hierbei, dass man 
nur einen einzigen Widerstand für alle 16 LEDs braucht!
Ab und an blinken alle per Zufallsprinzip (wie ein kleines Feuerwerk) 
oder links und rechts leuchten mit veränderlicher Intensität die 
"Augen".

Vielen Dank für eure Hilfsbereitschaft und vielleicht findet der ein 
oder die andere hier eine Idee für sein eigenes Projekt!

von Paul H. (powl)


Angehängte Dateien:

Lesenswert?

Ich habe da mal ein Projekt mit dem TLC5940 versucht. Hatte versucht, 
das Ding auf nem Breadboard zum laufen zu bekommen aber keine Chance, 
das flackerfrei zu betrieben.

Hier ist eine Version des Sourcecodes, den ich damals verwendet hatte. 
Ich weiß gerade nicht, ob der vollständig ist aber laufen müsste er. 
Prinzipiell ist die Ansteuerung des TLC5940 nicht so schwierig. GSCLK 
kann man offenbar die ganze Zeit einfach durchlaufen lassen.

(Kann btw. mal ein Mod die Überschrift des Threads ändern? So findet man 
das ja überhaupt nicht)

: 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.