Atmega644 PWM Timer0 OCROB / A -Problem

OP #2511945
Lesenswert?

Hallo Zusammen,

habe das Problem am meinem Atmega644, das ich über den 8-Bit-Timer0 eine 
PWM an 0CR0B und A haben möchte.

Mit "B" geht es mit "A" nicht.

Alle Bits des Timer habe ich so gesetzt wie ich es aus dem Datenblatt 
als richtig sehe.

Register einstellungen:

 TCCR0A = (1<<WGM00) | (1<<WGM01)| (1<<COM0A1) |(1<<COM0B1);
 TCCR0B = (1<<CS01) | (1<<CS00);


/* OC0A als PWM-Port setzen */
    DDRB |= (1 << PB3);
   // OCR0A = 128; //Testwert
/* OC0B als PWM-Port setzen */
    DDRB |= (1 << PB4);
  //  OCR0B = 128; //Testwert

// HAUPTPROGRAMM

  while( 1 ) {

    analog_0 = ADC_Read_Avg(0, 4);      // Kanal 0, Mittelwert aus 4 
Mes.
  analog_1 = ADC_Read_Avg(1, 4);  // Kanal 1, Mittelwert aus 4 Mes.

  OCR0B = (analog_0/4);
        OCR0A = (analog_1/4);


   if(analog_0 >500) PORTD = 0x07;
   else PORTD = 0x00;
}

An PB4 geht es, an PB3 nicht.

Zerreist mich bitte nicht wenn ich was übersehen habe, aber ich kann mir 
einfach nicht erklären was da los ist....

Gruß und Danke schon mal für die Hilfe
OP #2512148
Lesenswert?

Hubert G. schrieb:
> Ich sehe nichts was fehlen könnte.
> Vielleicht setzt du in deinem Programm den OCR0A irgendwo wieder zurück.
> Hardwarefehler ist natürlich auch möglich.

Hardwarefehler durch beschaltung kann ich ausschließen, da die Pins 
nicht weiter angeschlossen sind.

Programm ist nur das was oben steht...
also unter Hauptprogramm, mehr steht nicht in der Schleife
#2512214
Lesenswert?

1
  // OC0A auf Ausgang
2
  DDRB = (1 << PB3 ); 
3
  //OC0B auf Ausgang
4
  DDRB = (1 << PB4 );
Herzlichen Glückwunsch. Du hast es geschafft, die Zeit von mehreren 
hilfsbereiten Menschen sinnlos zu verschwenden, nur weil du nicht in der 
Lage warst, gleich den richtigen Code zu posten. Copy&Paste ist ja auch 
sooo schwer.
OP #2512221
Lesenswert?

Hubert G. schrieb:
> Das hätte ich auch gleich sehen können
>   // OC0A auf Ausgang
>   DDRB = (1 << PB3 );
>   //OC0B auf Ausgang
>   DDRB = (1 << PB4 );
>
> Mit PB4 auf Ausgang setzt du PB3 zurück.
>
> Edit:
> War im ersten Posting nicht so drinnen.

kacke sorry,
Das hätte ich auch gleich sehen können

so wäre richtig oder?

  DDRB = (1<<PB3) |(1<<PB4);

Gruß

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