Forum: Mikrocontroller und Digitale Elektronik eine Led flacket bei 8-Bit PWM (Atmega128)


von Gerhard H. (oderlachs)


Lesenswert?

Hallo Freunde !

Wie schon oft in diesem Jahr sitze ich wieder mal grübelnd vor einem 
Problem.
Ich hatte ein Programm (ATMega128) geschrieben für eine LED Ansteuerung 
per PWM.
Ging auch alles gut, nun ist der SRC-Code mir abhanden gekommen , gesagt 
getan , neu geschrieben das ganze, weil ja andere Funktionen im Programm 
noch fehlten.
Ich benutze die beiden 8 Bit PWM Channels OC0 (PB4) und OC2 (PB7) 
vorerst nur. Ich kann nun wieder Dimmen , aber die LED vom OC0 an PB4 
flackert.
Die  LED getauscht, selbes Problem, wieder an OC0.

Zur Fehlersuche habe ich den Code etwas vereinfacht und er ist hier 
einzusehen:

http://oderlachs.de/forum/code/atm128pwm.html

Ich programmiere das ATM128 Board über das STK500 per ISP. Vom STK500 
nutze ich auch die LEDs für den Probelauf.
Als Entwicklungsumgebung nutze ich "Geany" unter Linux.

Vielleicht kann sich ja wer bitte den Code mal ansehen und hat eventuell 
einen Tip für mich??

Gruss und Dank

Gerhard

von Timmo H. (masterfx)


Lesenswert?

8 MHz CPU-Takt und ein PWM-Teiler von 1024 bei 8-Bit Timer, sind 30 Hz 
oder?

von holger (Gast)


Lesenswert?

>        |(1<< CS00) |(1<< CS01) |(1<< CS02);       // Teiler 1014

Damit stellst du auf external clock source.

von holger (Gast)


Lesenswert?

>Damit stellst du auf external clock source.

Nein, doch nicht;) Falsches Datenblatt.

von Timmo H. (masterfx)


Lesenswert?

holger schrieb:
>>        |(1<< CS00) |(1<< CS01) |(1<< CS02);       // Teiler 1014
>
> Damit stellst du auf external clock source.
Aber doch nur bei den 16 Bit Timern (Timer1 und Timer3), er benutzt aber 
die 8-Bit Timer 0 und 2

EDIT:
Stimmt Timer2 geht dann auch auf Extern.

Fazit:
LED an OC0 Flackert weil 30 Hz, LED an OC2 Flackert nicht, weil kein 
Takt an T2?!

: Bearbeitet durch User
von Gerhard H. (oderlachs)


Lesenswert?

Timmo H. schrieb:

> Fazit:
> LED an OC0 Flackert weil 30 Hz, LED an OC2 Flackert nicht, weil kein
> Takt an T2?!

Danke für den Hinweis, aber da gucke ich mal ganz dumm und unwissend :(

Wo kommen diese 30Hz her ?? Bin noch nicht sooo intern mit dem Wissen 
darüber.

Anderseits, frage ich mich wieso ging das vorher ??


Gruss und Dank

Gerhard

Nachtrag habe nun Div 64 eingestellt, OK !!
Aber den Unterschied doch nicht verstanden habe, warum eine Port geht 
und der andere nicht

: Bearbeitet durch User
von g457 (Gast)


Lesenswert?

> Wo kommen diese 30Hz her ?? Bin noch nicht sooo intern mit dem Wissen
> darüber.

CPU-Takt /Vorteiler /'Timerlauflänger' - bei angenommenen 8MHz, 
eingestelltem Vorteiler von 1024 (nur bei Timer0 - Timer2 steht laut 
meinem Datenblatt auf 'External clock source on T2 pin') und einem 8 Bit 
Timer (der im eingestellten Fast-PWM-Modus von 0 bis 255 läuft) ergibt 
sich etwa 8MHz /1024 /256 = 30.5Hz

Details warum das so ist stehen im Datenplatt, das entgegen landläufiger 
Meinung nicht zum Nichtlesen da ist ;-)

> Aber den Unterschied doch nicht verstanden habe, warum eine Port geht
> und der andere nicht

Unterschiedliche Taktquellen/Vorteiler eingestellt, Rest siehe 
Datenplatt.

HTH

von Gerhard H. (oderlachs)


Lesenswert?

Hallo Freunde !
Habt alle vielen Dank für Eure Mithilfe, jetzt habe ich das Problem 
lösen können.
Habe den Vor-Teiler etwas kleiner gesetzt, das wars.

Zu :
>Details warum das so ist stehen im Datenplatt, das entgegen landläufiger
>Meinung nicht zum Nichtlesen da ist ;-)

Die Datenblätter "lese" ich eigentlich immer, aber bei jemanden der nie 
englisch gelernt hat, mag man mir beim Erstprojekt mit PWM auch mal 
einen Fehler verzeihen.

Jedenfalls habe ich dank Eurer Hilfe und meiner Fehler wieder was dazu 
gelernt :)

Mit besten Grüssen

Gerhard

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.