LED-Fading geht nicht

Gast #1845456
Lesenswert?

Hi,
ich habe das Beispiel hier einmal verwendet 
http://www.mikrocontroller.net/articles/LED-Fading
Aber leider tut sich garnichts wenn ich eine LED zwischen PD5 und LO 
anschließe. Weder mit noch ohne 1KOhm Widerstand.
Habe das Beispiel kopiert bei mir (AVR Studio) eingefügt und meine 
Frequenz 3686400Hz eingestellt. Auch in den Einstellungen hab ich 
ATmega8, 3686400Hz und -0s eingestellt.
Was mach ich denn falsch?
Gast #1845491
Lesenswert?

Ah ok beim ATmega8 ist der OC1A nicht auf PD5 sondern PB1.
Umgestellt -> geht
Aber jetz seh ich das flackert ja wie bescheuert beim dimmen. Gibts da 
nich was besseres, oder geht das nicht besser mit PWM?
Gast #1845500
Lesenswert?

depp_007 schrieb:
> Ah ok beim ATmega8 ist der OC1A nicht auf PD5 sondern PB1.
> Umgestellt -> geht

deswegen Schaltplan. Meist wird einem erst bewusst, was man falsch 
gemacht hat, wenn man einen Scahltplan davon machen muss.

> Aber jetz seh ich das flackert ja wie bescheuert beim dimmen. Gibts da
> nich was besseres, oder geht das nicht besser mit PWM?

deswegen Code herzeigen.
Mein Tip ins Blaue: Controllertaktfrequenz und Takteinstellungen im 
Programm passen nicht.
:-)
Gast #1845509
Lesenswert?

Achso ja mit dem Takt hatte ich bei dem Teil schon immer Probleme...
Der Code ist nach wie vor aus dem Link kopiert. Nur PD5 auf PB1 
geändert.
Es ist ein Oszilator mit 3,6864MHz auf dem Board eingebaut und ich habe 
im Programm 3686400Hz eingestellt. Warum macht der dann falsche 
Frequenzen?

Auch mit folgendem erhalte ich keine 300Hz.
1
#define F_CPU 3686400
2
void wait_us(int mikroSec)
3
{
4
  _delay_loop_2(1*(F_CPU/(1000000/4))*mikroSec);
5
}
6
while(1){
7
    PORTC =0b00000001;
8
    wait_us(1667);
9
    PORTC=0b00000000;
10
    wait_us(1667);
Erst wenn ich wait auf 1520 setze erhalte ich genaue 300Hz.
#1845515
Lesenswert?

@  depp_007 (Gast)

>Aber jetz seh ich das flackert ja wie bescheuert beim dimmen. Gibts da
>nich was besseres, oder geht das nicht besser mit PWM?

Wahrscheinlich ist im AVR die CLK8 Fuse gesetzt, dann läuft der mit 1 
MHz statt 8, und deine LED flimmert mit ~15Hz statt 120Hz. Siehe [[AVR 
Fuses]].

MFG
Falk
#1845619
Lesenswert?

Der Code im Artikel braucht einen Takt mit ~8MHz, denn sonst geht die 16 
Bit PWM nicht. Auch die anderen PWMs sinf fest auf 8 MHz konfiguriert 
und werden NICHT autoatisch an eine andere Frequenz per F_CPU 
eingestellt.

Leute, vor allem als Anfänger sollte man ein Beispiel erst einmal 100% 
so nachbauen wie vorgegeben. Wenn das dann läuft und man verstanden hat 
wie es läuft, DANN kann man anfangen eigene Änderungen vorzunehmen.

MFG
Falk
Gast #1845668
Lesenswert?

Es ist ein Quarz. Geht aber noch und mit der Ext XTAL einstellung 
funktioniert auch das Dimmen.
Hatte eben nur ein experimentierboard hier und das hat kein 8MHz 
quarz...
Wenn ich das fest verbaue schau ich auch das ich ein 8MHz Quarz 
auftreibe, aber zum testen hab ich leider nur dieses Board da.

Wie müsste ich denn hier vorgehen wenn ich 2 Dimmbare Kanäle haben 
wollte?
#1845676
Lesenswert?

@  depp_007 (Gast)

>Hatte eben nur ein experimentierboard hier und das hat kein 8MHz
>quarz...

Es wäre ja auch VOLLKOMMEN ABSURD, den ATmega 8 einfach mit internem 8 
MHz RC-Oszillator zu betrieben, so wie im Artikel geschrieben steht 
(nicht nur der ATmega32 hat den)

>Wie müsste ich denn hier vorgehen wenn ich 2 Dimmbare Kanäle haben
>wollte?

Ja wie wohl? Den zweiten PWM-Kanal vom Timer 1 nutzen?

Mann Oh Mann!
Gast #1845714
Lesenswert?

depp_007 schrieb:
> Es ist ein Oszilator mit 3,6864MHz auf dem Board eingebaut und ich habe
> im Programm 3686400Hz eingestellt. Warum macht der dann falsche
> Frequenzen?

Weil F_CPU dem Prozessor nicht auf magische Weise sagt, daß du einen 
externen Oszillator benutzen möchtest. Du teilst damit lediglich dem 
Programm mit, mit welcher Taktfrequenz der Prozessor läuft (also nicht 
"laufen soll", sondern "bereits läuft"). Daß er auch tatsächlich diese 
Frequenz hat, dafür mußt du selbst sorgen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren