www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM Timer Initialisierung?!


Autor: Joachim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo verehrtes Forum!

Ich bin im Moment dabei mir ein "Moodlight" mit drei 1W-Leds zu bauen. 
Das ganze soll dann mit einem ATmega8 per drei-kanaliger Hardware-PWM 
angesteuert werden.
Nun verschohne ich euch mit Schaltplänen und seitenweise Sourcecode. Ich 
beschreib mal mein Problem:
die beiden LEDs, die an PB1 und PB2 hängen dimmen wunderbar auf und ab. 
So, wies im Code steht. Nur die LED an PB3 macht das nicht. Sie macht 
gar nichts! Kaputt ist sie allerdings nicht. Denn wenn ich den Pin 
"manuell" mit PORTB |= (1<<PB3) schalte leuchtet sie einwandfrei. Mein 
Verdacht war jett, daß da was mit dem SPI nicht stimmt. Aber damit mach 
ich eigentlich nichts...

HIer mal der Code zur Timer-Initialisierung:

void timer_init()
{

// TIMER_1 INITIALISIERUNG
  // Clear OC1A on Compare Match when up-counting.
  // Set OC1A on Compare Match when down-counting.
  TCCR1A |= (1<<COM1A1);

  // Clear OC1B on Compare Match when up-counting.
  // Set OC1B on Compare Match when down-counting.
  TCCR1A |= (1<<COM1B1);

  // PWM, Phase-Correct, TOP = 0xFF
  TCCR1A |= (1<<WGM10);

// TIMER 2 INITIALISIERUNG
  // Clear OC2A on Compare Match when up-counting.
  // Set OC2A on Compare Match when down-counting.
  TCCR2 |= (1<<COM21);

  // PWM, Phase-Correct, TOP = 0xFF
  TCCR2 |= (1<<WGM20);

// Prescaler einstellen, Timer(1+2) starten
  TCCR1B = (1<<CS10);
  TCCR2 = (1<<CS20);
}
//###############################

Wie gesagt, die beiden LEDs an PB1 und PB2 laufen. Und die 
Treibertransistoren sind auch ok. Hab ihren Schaltstrom mit 24mA 
gemessen. Das ist ja sowohl für den Pin als auch für den Transistor im 
grünen Bereich. Wäre echt toll, wenn einer ne Idee hätte und die kurz 
posten könnte...

Danke,
vG,
Joachim

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

schau mal in deine letzte Programmzeile ...
>TCCR2 = (1<<CS20)

damit löschst du das weiter oben gesetzte COM21 & WGM20 -Bit im selben 
Register wieder !

Sascha

Autor: Joachim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Sascha!

Vielen Dank! Meine Güte, wie konnte ich das übersehen... Sowas passiert 
mir dauernd. Da bin ich am knobeln wie ein blöder und dann ist es so ein 
Kinderkram...

Danke nochmal. Vielleicht sollte ich das Schnitzen anfangen. Genug 
Bretter liegen hier ja jetzt rum ;) ...

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.