logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Atmega8 - Timer1 w trybie PWM phase, freq correct

dan1987r 09 Lut 2010 19:41 3041 1
REKLAMA
  • #1 7669256
    dan1987r
    Poziom 10  
    Podczas programowania układu natrafiłem na problem dotyczący sterowaniem PWM przy pomowy wewnętrznego timera. Port wyjściowy timera steruje kluczem tranzystorowym do którego podłączony jest wentylator 12V.

    Oto moja funkcja ustawiająca rejestry timera.
    
    void pwm()
    {
    	//OC1A as output
    	DDRB |= _BV(PB1);
    
    	//PWM Phase, frequency correct mode	
    	TCCR1A |= 0b00000000;
    	TCCR1B |= 0b00010000;
    	//frequency 50Hz, prescaler 1, top = 400
    	//prescaler clk/1 - no prescaler
    	TCCR1B |= 0b00000001;
    	//top = 400
    	ICR1 = 400;
    	//max speed
    	OCR1A = 400;
    }
    

    Na początku ustawiam port PB1 jako wyjście dla timera. Następnie ustawiam tryb pracy - PWM Phase, frequency correct mode wg tabeli ze strony :
    http://www.mil.ufl.edu/imdl/handouts/AVR_PWM_Reg_Info_Summary.pdf.
    Poźniej częstotliwość 50Hz (prescaler 1, top = 400, clk procesora 4MHz). Na końcu OCR1A = 400; jako "impuls ciągy". Przy takich ustawieniach wentylator nie działa.
    Pytanie oczywiste - czy ktoś miał doczynienia z PWM na atmedze i wie gdzie popełniłem błąd.

    Na wszelki wypadek schemat układu

    https://obrazki.elektroda.pl/97_1265110663.jpg

    Jako źródła informacji korzystałem ze strony
    http://mil.ufl.edu/~achamber/servoPWMfaq.html
  • REKLAMA
  • #2 7669719
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA