Problem mit PWM bei ATMega32

Gast #1883631
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 !

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