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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.