-         

Ergebnis 1 bis 3 von 3

Thema: PWM Timer0

  1. #1

    PWM Timer0

    Anzeige

    Hallo,
    bin jetzt echt schon langsam verzweifelt. Möchte bei einem mega164p einen Pwm über den Timer 0 erzeugen. Es kommt aber einfach gar nichts auf den zwei PWM Pins (B3 u. 4).
    Hab auch schon probiert einfach nur Leds über diese Ports anzusteuern (funktioniert) um sicher zu gehen das nicht die Ports kaputt sind.
    Weiß irgendwer woran das liegen könnte? Habe ich einen Fehler in meinem Programm?

    Code:
    #include <avr/io.h>          
    #include <stdint.h>
    #include <avr/interrupt.h>
    
    #define F_CPU 20000000L    // clock
    
    int main (void)
    {	
    	
    	DDRB |= (1<<PB3) | (1<<PB4); // PWM Port set ouput
    	
    	
    	TCCR0A |= (1<<COM0A1) | (1<<COM0A0) | // set OCC0A on compare match, clear at bottom
    			  (1<<COM0B1) | (1<<COM0B0) | // set OCC0B on compare match, clear at bottom
    			  (1<<WGM00) | (1<<WGM01);	// Fast PWM Mode		
    	TCCR0B |= (1<<WGM02) | (1<<CS02) | (1<<CS00); //CLK / 1024 (Prescaler)
    	
    	
    	OCR0A=216;	// value to generate 2ms high and 11ms low
    	OCR0B=216;
    	while(1)
        {
        } 
    
    
    return 0;
    }
    Hoffe das irgendwer was dazu weis....
    Wär sehr dankbar für ne Antwort.

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Ich weiss nicht ob es noch aktuell für dich ist aber ich schreibe den Wert in die OCR-Register immer vor dem Timerstart.

  3. #3
    Hallo.

    Also ich schreibe hier mal selbst ne Antwort weil ich meinen Fehler schon gefunden habe.(für den fall das jemand einen genauso dummen Denkfehler macht)
    Ich habe das OCR0A Register als Top für meinen Timer genommen. Sprich jedes mal wenn ich den OCR0A Wert erreiche und somit einen PWM erzeugen wollte ist er gleich wieder auf Bottom (0) gesprungen und hat den OC0A Ausgang wieder auf null gesetzt -> keine signal. Tja und daher das ich den OCR0B Wert auf den selben Wert gesetzt hab konnte da auch nichts rauskommen. Das Problem hab ich gelöst in dem ich ff als Top neheme und somit funktionieren beide PWMs.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •