FAQ | Points | Add... | Recent posts | Search | Register | Log in


Atmega8 - Timer1 w trybie PWM phase, freq correct


Post new topic  Reply to topic      Main Page -> Forum Index -> Microcontrollers Generally -> AVR Microcontrollers -> Atmega8 - Timer1 w trybie PWM phase, freq correct
Author
Message
dan1987r
Poziom 8
Poziom 8


Joined: 27 Oct 2009
Posts: 29

Post#1 Post from the author of the topic 09 Feb 2010 19:41   

Atmega8 - Timer1 w trybie PWM phase, freq correct


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.
Code:

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

http://obrazki.elektroda.net/97_1265110663.jpg

Jako źródła informacji korzystałem ze strony
http://mil.ufl.edu/~achamber/servoPWMfaq.html
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 09 Feb 2010 19:41   





Back to top
   
technics6
Poziom 22
Poziom 22


Joined: 19 May 2007
Posts: 2274
Location: Białystok

Post#2 09 Feb 2010 20:48   

Re: Atmega8 PWM Timer 1.


Z tego co widzę - radzisz sobie z angielskim, więc najlepiej poczytaj dokumentację od mikrokontrolera. PWM jest tam fajnie opisany.

Dodano po 1 [minuty]:

Druga sprawa - wklej cały kod, z tego co wkleiłeś - nie widać w jaki sposób uruchamiasz tą funkcję pwm();

Dodano po 4 [minuty]:

I tak na pierwszy rzut oka nie widzę, żebyś "zapalał" w rejestrze TCCR1A bity

COM1A1, COM1A0: Compare Output Mode for channel A

które są odpowiedzialne za zachowanie się wyjścia ("połączenie timera" z pinem wyjściowym PORTB1/OC1A). Jeżeli nic tam nie ustawisz, to pin wyjściowy zachowuje się jak zwykłe we/wy i nie jest skojarzony z timerem. W dokumentacji mikrokontrolera jest tabela (tab. 38, strona 98 ), wg. której powinieneś ustawić te bity.
Back to top
   
Post new topic  Reply to topic      Main Page -> Forum Index -> Microcontrollers Generally -> AVR Microcontrollers -> Atmega8 - Timer1 w trybie PWM phase, freq correct
Page 1 of 1
Similar topics
[2313][C] PWM i dioda - pulsuje [za niskie freq. ? ] (7)
High freq PWM w tiny45 nie rusza (8)
[ATmega8][C] Generator sinusoidy, Timer1 PWM, problemy... (14)
[ATMEGA8][BASCOM] Timer1 w trybie capture (2)
Problem z PWM, Phase and Frequency Correct dla atmegi 32 (6)
[Mega32][C] PWM Phase and Frequency Correct - czemu czest/2 (3)
[Atmega8][ASM]Timer1 phase and frequency correct PWM (1)
[ATMEGA128] Timer1 w trybie CTC (23)
[c]Timer1, Zgubione MHz w trybie CTC. (8)
Konfiguracja TIMER1, PWM, 8-bitowy (6)

Page generation time: 0.074 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed