mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LED-Fading geht nicht


Autor: depp_007 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
depp_007 schrieb:
> Was mach ich denn falsch?

Keinen Schaltplan, keinen Code.
:-)

Autor: depp_007 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber einen Link zum Code... und Schaltplan.... ist ein fertiges 
Testboard und somit Lötfehler ausgeschlossen wenn du das meinst. Andere 
Sachen funktionieren auch damit.

Autor: depp_007 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
:-)

Autor: depp_007 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
#define F_CPU 3686400
void wait_us(int mikroSec)
{
  _delay_loop_2(1*(F_CPU/(1000000/4))*mikroSec);
}
while(1){
    PORTC =0b00000001;
    wait_us(1667);
    PORTC=0b00000000;
    wait_us(1667);
Erst wenn ich wait auf 1520 setze erhalte ich genaue 300Hz.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: xGast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie Falk Brunner geschrieben hast du vermutlich per Fuses noch den 
internen Takt statt den Externen aktiviert.

Autor: depp_007 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm der Fuse bit steht auf "Int RCosc Frequency 2MHz"
Aber ich hab ja ein 3,6864MHz oszilat und das ist ja extern...Muss ich 
da auf Ext XTAL gehen?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
depp_007 schrieb:
> Hmm der Fuse bit steht auf "Int RCosc Frequency 2MHz"
> Aber ich hab ja ein 3,6864MHz oszilat und das ist ja extern...Muss ich
> da auf Ext XTAL gehen?

Wirst du wohl tun müssen.

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
depp_007 schrieb:
> Muss ich
> da auf Ext XTAL gehen?

Hast du einen Quarz, oder einen Oszilator dran?
bei ersterem ist er tot, wenn du das einstellst.

Nicht nur das umstellen, sondern auf jeden Fall auch die DIV8 Fuse 
überprüfen, die sollte nicht programmiert (=1) sein

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Mega8 gibt es keine CKDIV8

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: depp_007 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: xGast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beschäftige dich bitte zunächst mit dem µC:
http://www.mikrocontroller.net/articles/AVR-Tutorial
...
Du wirst sonst nicht weit kommen.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.