mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit PWM bei ATMega32


Autor: Dane (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tag!

Ich habe ein Problem mit der PWM bei einem Atmega32 (auch 16) und zwar 
erzeugen alle 3 Timer analoge Ausgänge per PWM. Bei den Timer 1 und 2 
funktioniert dies auch tadellos, nur will beim Timer0 nix rauskommen :(
Ich habe jetzt leider keine Ahnung mehr an was das liegen könnte...

------------------------------------------------------------------------ 
-
------------------------------------------------------------------------ 
-
hier mal einen auszug meines Quellcodes:
...

DDRD  |= 0b10100000;      // Pins als Outputs
DDRB  |= 0b00001000;

PORTD &= 0b01011111;      // Ausgänge abschalten
PORTB &= 0b11110111;


void Timers_init(void)
{

  TCCR0 = 0b01101000;    //Fast PWM - Timer gestoppt
  OCR0  = 0;

  //Timer1 (10bit) PWM
  TCCR1A = 0b10000011;  // 10bit Fast PWM
  OCR1A = 0;
  TCCR1B = 0b00001000;

  // Timer2 (8bit) Fast PWM
  TCCR2 = 0b01101000;
  OCR2 = 0;
}

void PWM_Air(int wert)  //Timer0  -> OC0 an B3
{

  TCCR0 = 0b01101000;  // Timer stopp
  if(wert==0)
  {
    PORTB &= 0b11110111;
    return;    // PWM stopp
  }
  if(wert>=255)wert=255;
  OCR0 = wert;

  // hier Timer starten
  TCCR0 = 0b01101010;  //TAKTTEILER 8
}

void PWM_Oxy(int wert)  // Timer2 -> OC2 an D7
{

  TCCR2 = 0b01101000;  // Timer stopp
  if(wert==0)
  {
    PORTD&=0b01111111;
    return;    // PWM stopp
  }
  if(wert>=255)wert=255;

  if(wert>OCR0)wert=OCR0;  //max gleicher Anteil Oxy und Air
  OCR2 = wert;

  // hier Timer starten
  TCCR2 = 0b01101001;  //TAKTTEILER 1
}

------------------------------------------------------------------------ 
-
------------------------------------------------------------------------ 
-

wär Top, wenn mir jemand weiterhelfen könnte !

Autor: Dane (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hat keiner ne Idee ???

Autor: Geire99 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ,
in welchen Modus willst Du den Timer 0 betreiben?

Fast PWM ist es jedenfalls nicht.

Bye
  Andi

Autor: Geire99 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry, doch fast pwm, ich habe mich verschaut

Autor: Geire99 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.... ich habs jetzt mal in den Simulator reingehauen, und da toggelt der 
PB3, somit müsste der gepostete Code korrekt sein. Der Fehler ist dann 
wohl woanderst zu suchen.

Bye Andi

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dane schrieb:
> hier mal einen auszug meines Quellcodes:
> ...

Code als Anhang, sonst wirds nix mit Fehlersuche :-)

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.