Hilfe bei AVR PWM

OP Gast #1993143
Lesenswert?

Guten Abend,

ich habe mich vor längerer Zeit einmal mit dem internen Hardware PWM 
(counter) des Atmega32 beschäftigt. Danach habe ich keine Zeit mehr 
dafür gehabt und nun habe ich es heute noch einmal versucht. Soweit 
alles geschafft, OCR1B bzw OCR1A funktionieren, nur dass der jeweils 
andere PWM-Port (der nicht genutzt wird) auch (ungewollt) ein PWM Signal 
erzeugt. Warum?
Hier der Code:

#include <avr/io.h>

void init_pwm();

void init_pwm()
{
  TCCR1A = (1<<COM1A1) | (0<<COM1A0) | (1<<COM1B1) | (0<<COM1B0) | 
(0<<FOC1A) | (0<<FOC1B) | (1<<WGM11) | (0<<WGM10);
  TCCR1B = (0<<ICNC1) | (0<<ICES1) | (1<<WGM13) | (1<<WGM12) | (0<<CS12) 
| (1<<CS11) | (1<<CS10);

  ICR1=249;  // top of counter / 2ms pwm

  return;
}


int main(void)
{
  DDRD = 0b11111111;

  init_pwm();

  OCR1B=10;  // PD4 of AVR atmega32


  return(0);
}

MfG
OP Gast #1993210
Lesenswert?

Ja kann ich:
laut Datenblatt: Mode: Fast PWM, Clear OC1A/OC1B on compare match, set
OC1A/OC1B at BOTTOM,(non-inverting mode)
Deine Konfiguration ist im Datenblatt leider nicht zu finden, hab sie 
getestet und siehe da: nur OCR1B macht PWM. Es funktioniert also.

Egal, Problem hat sich schon gelöst, weil der Zustand, in dem einer (von 
insgesamt 4 PWM Ausgängen / allerdings anderer AVR) der PWM Ausgänge 
undefiniert bleibt nicht auftritt.

Danke für den Denkanstoß

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