atmega32 - pwm will nicht

OP #532677
Hallo, ich versuche gerade mit atmega Handbuch und Tutorial die PWM 
Ansteuerung nachzuvollziehen. Kurzum ich bekomms nicht hin. Hier mein 
Code:
1
#include <avr/io.h>
2
#include <stdint.h>
3
#include <stdlib.h>
4
 
5
int init_pwm(void) {
6
    TCCR0 |= (1<<COM00) | (1<<COM01) | (1<<CS02) | (1<<CS00);   //enable OC Output, prescale 1024
7
    OCR0 = 128;
8
    DDRB |= (1<<PB3);  //OC0 Pin
9
    return 0;
10
}
11
 
12
int main (void) {
13
 
14
    DDRC = 0xFF;
15
    init_pwm();
16
 
17
    while(1) {  //<mainloop>
18
 
19
    PORTC = PORTB; //LEDs hängen an PortC, OC0 aber an PortB
20
 
21
    }//</mainloop>
22
 
23
    return 0;       // never reached
24
}
Gast
Du willst doch eine PWM erzeugen, oder? Dann musst Du die Bits auch so 
setzen, dass einer der zur Verfügung stehenden PWM-Modi aktiv ist. Sonst 
wird das nix...
OP
ok, jetzt hab ich den Wurm. Man kann wohl nicht von OC0 lesen. Jetzt hab 
ich ne Abfrage über die TIFR Flags und es funktioniert. Der 
Vollständigkeit halber noch mein Code:
1
int init_pwm(void) {
2
    TCCR0 |= (1<<CS02) | (1<<CS00);   // prescale 1024
3
    OCR0 = 32;  // match compare at 12.5%
4
    return 0;
5
}
6
 
7
int main (void) {
8
 
9
    DDRC = 0xFF;
10
  
11
  init_pwm();
12
 
13
    while(1) {  //<mainloop>
14
 
15
    if (bit_is_set (TIFR,OCF0)) {  // compare match
16
      TIFR |= (1<<OCF0);
17
      PORTC = 0x0F;
18
    }
19
    
20
    if (bit_is_set(TIFR,TOV0)) {  // overflow
21
      TIFR |= (1<<TOV0);
22
      PORTC = 0x00;
23
    }
24
 
25
  }//</mainloop>
26
 
27
    return 0;       // never reached
28
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.