Forum: Mikrocontroller und Digitale Elektronik ATtiny45 10bit-PWM


von limbo! (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich bin dabei für eine Modelleisenbahn einen blinkenden Schornstein auf 
einen ATtimy45 zu programmieren.

Ich verwende dazu eine Fading-LED mit einer logarithmischen Codetabelle.
Wenn ich das ganze mit 32 Werten mache funktioniert es.

Da das dünkler werden der LED langsam sein soll sieht man allerdings das 
überspringen von einer Helligkeit auf die Nächste.

Jetzt dachte ich mir, ich könnte einfach 64 Werte nehmen. Aber genau das 
funktioniert nicht. Die LED wird heller, fängt dann zu flackern an und 
wird dann stufenweise wieder dünkler. Wo liegt denn da der Fehler?

Ich vermute das hat irgendwas mit 10-bit PWM zu tun oder? Allerdings 
gibt es beim Tiny45 keine PWM11 usw um die 8 oder 10-bit PWM 
einzustellen.

Danke für eure Hilfe!

Grüße
Markus

von Rangi J. (rangi)


Lesenswert?

Der Tiny25/25/85 hat nur 8-bit Timer. Du versuchst hier aber Werte > 255 
zuzuweisen in der Zeile :
OCR0A = pgm_read_word(pwmtable_64+temp)

Da wird der obere Teil des Words abgeschnitten. Du kannst nicht einfach 
so eine 10Bit PWM verlangen, wenn es die Hardware nicht hergibt.

Probier mal was in Hardware. z.B einen kleinen Kondensator (wenige nF) 
parallel zur Diode um sie "unempfindlicher" gegen die kurzen Strompulse 
zumachen.

von limbo! (Gast)


Lesenswert?

Hallo!

Ich hab durch ausgiebiges Studieren der Datenblätter das Problem der 
"nicht vorhandenen 10bit PWM" herausgelesen.

Ich hab das Ganze jetzt so schnell gemacht, dass man das Wechseln der 
Helligkeiten nicht mehr sieht. Sieht jetzt zwar nicht mehr so 
realistisch aus - ist aber trotzdem schön.
Danke übrigens für deine Antwort! Das mit dem Kondensator hätte ich noch 
versuchen können. Aber egal - das Teil ist verbaut und gut ist ;-)

Grüße
Markus

von hans (Gast)


Lesenswert?

Hallo limbo!

du kannst natürlich auch bei 8 Bit mit 64 Werten arbeiten.
Der Wertebereich ist halt 0-255.
Wenn du bei der o.a. Tabelle mit 64 Werten diese durch 4
teilst, nächster unsigned char daraus machst und diese auch als
unsigned char bezeichnest/behandelst hast du mehr Stufen.

Noch mehr Stufen ist jedoch sinnlos da dann keine log. Funktion
erkennbar ist.

hans

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.