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][C]Timer1 mode 8 - brak efektów.

dan1987r 10 Lut 2010 13:48 1377 3
REKLAMA
  • #1 7672825
    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
  • REKLAMA
  • #4 7673845
    dan1987r
    Poziom 10  
    Tak, dziękuje. Doszedłem do tego dzisiaj rano. Wszystko funkcjonuje w miarę poprawnie. W wolnej chwili udostepnie kod dla pozostałych osób z tym samym problemem.
REKLAMA