Timer2 tryb CTC...



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "ToR" <ToR_kulaWYTNIJTO_at_nospam_o2.pl>
Subject: Timer2 tryb CTC...
Date: 20 Mar 2006 22:36:21 +0100


Mam pytanie jak za pomoca trybu CTC w Atmedze8 sterowac wypelnieniem impulsu -
bo chcialbym zronbic PWM? Korzystam z dokumentacji ale nie moge znalesc nic o
tym jak zmeniac wypelnienie...Czy chodzi czasem o to ze zmiania wartosci OCR2
powoduje zmiene wypeleniania?

Napisalem cos takiego ale nie wiem czy jest ok:

//-------------
int main ()
{
TIMSK = (1<<OCIE2)|(1<<TOIE2); //musi to byc ???
TCNT2=0; //zerowanie licznika -profilaktycznie
TCCR2 = (1<<WGM21)|(1<<CS20)|(1<<COM21);//ustawnie tryby CTC
// pleskalera na "1" ,and Toggle OC2 On Compare Match
DDRB=0xFF;
PORTB=0xFF;
while (1)
{
OCR2 = 100; //ziarnistosc do obliczenia jeszcze
TIFR=0xFF; // zgaszenie flag przerwan
}
}
/--------------

Jak mozna to sparwdzic nie majac oscyloskopu czy AVR Studio oferuje takie
mozliwosci?

uC to Atmega8 z kwarcem 8MHz (wwwnetrznym ustawionym programowo -dac
zewnetrzny?)

Pozdarwiam,
Rafal k.

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "AzaZeL" <AzaZeL_B_at_nospam_poczta.onet.pl>
Subject: Re: Timer2 tryb CTC...
Date: Tue, 21 Mar 2006 08:01:50 +0100


zeby zrobic PWM to nie rób w trybie CTC

CTC to jest skracanie zliczania
np
licznik liczy od zera jak sie zrówna z OCR to sie zesryuje i zlicza od nowa
i
jak sie zrówna z OCR to na wyjsciu "cos sie robi"

tryb FAST PWM działa fajnie

np

//PWM
TCCR1A=0B10000001;
TCCR1B=0B00001001;

OCR1A=wypełnienie;

ja tak to robilem

przerwan nietrzeba wykorzystywac chodzi sobie to samo tylko wartoscia
rejestru OCR1A zmieniasz wypełnienie

Pozdrawiam

AzaZeL



Poprzedni Następny
Wiadomość
Spis treści
From: "ToR" <ToR_kulaWYTNIJTO_at_nospam_o2.pl>
Subject: Re: Timer2 tryb CTC...
Date: 21 Mar 2006 10:17:46 +0100



//PWM
TCCR1A=0B10000001;
TCCR1B=0B00001001;

OCR1A=wypełnienie;

ja tak to robilem

Ok ale ja musze wykonac PWM na innym Timer'ze oprucz wlasnie T1..Czyli albo T2
tak jak ja probuje albo T1..I z lad moje watpliwosci.

Czyli w trybie CTC ciezko jest zrobic PWM? Bo mi sie wydaje ze sie da?

Pozdarwiam,
Rafal k.

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "AzaZeL" <AzaZeL_B_at_nospam_poczta.onet.pl>
Subject: Re: Timer2 tryb CTC...
Date: Tue, 21 Mar 2006 12:09:16 +0100



Czyli w trybie CTC ciezko jest zrobic PWM? Bo mi sie wydaje ze sie da?

zalezy jaka chcesz dokadnosc pwm i czestotliwosc

bo mozesz puscic w tryb ctc i programowo zwiekszac sobie jakis programowy
licznik PWM i zliczac zrównania OCR i w zaleznosci od tego jakie chcesz
miec wypełnienie wyłaczac wtedy wyjscie pwm a jak licznik programowy sie
przekreci to np ustawic w stan "1" wyjscie.

to takie programowe PWM

AzaZeL



Poprzedni Następny
Wiadomość
Spis treści
From: "ToR" <ToR_kulaWYTNIJTO_at_nospam_o2.pl>
Subject: Re: Timer2 tryb CTC...
Date: 21 Mar 2006 15:04:20 +0100


bo mozesz puscic w tryb ctc i programowo zwiekszac sobie jakis programowy
licznik PWM i  zliczac zrównania OCR i w zaleznosci od tego jakie chcesz
miec wypełnienie wyłaczac wtedy wyjscie pwm a jak licznik programowy sie
przekreci to np ustawic w stan "1" wyjscie.


Hmm chcialbym zrobic PWM o stalym wypeleniu rownym 50%. Jesli zas chodzi o CTC
to ten tryb rozumiem w ten sposob, ze w wartosci OCR2 nadaje jakas wartosci
czyli moja ziarnistosc...

No i potem licznik zlicza w gore i jak wartosc TCNT2 zrowna mi sie z OCR2 to
nastepuje jego zerowanie i zmiana stanu na wyjsciu OC2? Jesli sie myle to
prosze mnie poprawoc, bo wlasnie moim glownym problemem jest to ze nie wiem jak
zmieniac wypelnienie. A wiec w COMPARE OUTPUT MODE ustawilem

COM21= 1
i
COM20= 0
Co oznacza ze nastepuje zerowanie sie wyjscia OC2 w chwili porownania jednak
potem musze je na nowo ustawic na 1?

Reasumujac czy noga procka Oznaczona jako OC2 poprzez swoje wlacz/wylacz sluzy
do generownia wypelnienia?

Pozdarwiam,
Rafal k.


--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "AzaZeL" <AzaZeL_B_at_nospam_poczta.onet.pl>
Subject: Re: Timer2 tryb CTC...
Date: Tue, 21 Mar 2006 21:06:52 +0100


PDF str 116
tabelka 43
" Toggle OC2 on Compare Match" czyli zmiana stanu na przeciwny

wtedy wartosc OCR2 to jest pół okresu przebiegu prostokatnego o wypełnieniu
50%

AzaZeL



Poprzedni Następny
Wiadomość
Spis treści
From: "ToR" <ToR_kulaWYTNIJTO_at_nospam_o2.pl>
Subject: Re: Timer2 tryb CTC...
Date: 21 Mar 2006 22:26:42 +0100


PDF str 116
tabelka 43
" Toggle OC2 on Compare Match" czyli zmiana stanu na przeciwny

wtedy wartosc OCR2 to jest pół okresu przebiegu prostokatnego o wypełnieniu
50%


Hmm masz racje ale pojawila mi sie jeszcze jedna watpliowsc otoz, wzor na
czestotliwosc wyjscia OC2 jest dana wzorem :

f=(f_clk_I/0)/ (2 N(1+OCR2))

Bo z wykresu na stronie 109 wynika ze jeden kres trwa dwa wyzerowania licznika
TCNT2 a wiec z tad moje pytanie czy jak po podstawieniu i obliczeniu danych dla
f=40KHz wyjdzie mi przykladowo OCR2 = 100 to jaka mam wartosc wpisac w OCR2 z
koro az dwa liczenia timera skladaja sie na okres? Czy nie opowieniem OCR2
podzielic na 2 i wpisac tym samy 50? Ale czy wtedy nie zmieni mi sie f?

Pytam bo nie mam oscyloskopu i nie wiem jak mam zmierzyc f generowana przez
uC...I stad kolejne pytanie czy da sie to jako zasymulac a AVR_Studio?

Pozdarwiam,
Rafal k.

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "AzaZeL" <AzaZeL_B_at_nospam_poczta.onet.pl>
Subject: Re: Timer2 tryb CTC...
Date: Wed, 22 Mar 2006 07:53:10 +0100


podaj kwarc i preskaler dla tego co robisz


AzaZeL



Poprzedni Następny
Wiadomość
Spis treści
From: "ToR" <ToR_kulaWYTNIJTO_at_nospam_o2.pl>
Subject: Re: Timer2 tryb CTC...
Date: 22 Mar 2006 10:18:47 +0100


podaj kwarc i preskaler dla tego co robisz

Ano uC taktuje z wewnetrznego kwarcu 8MHz (ale zawsze moge wlutowac zewnetrzny)
a preskaler jest dowolny...Tzn w calosci projektu tzn dla TCNT1 i TCNT1 sotsuje
pleskaler=1 ale jako ze kazdy timer mozna taktowac dowolnie to jesli chodzio
TCNT2 to jeszcze nie wybralem i z tad dowolnie.


Pozdarwiam,
Rafal kula

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "ToR" <ToR_kula_at_nospam_o2.pl>
Subject: Re: Timer2 tryb CTC...
Date: 22 Mar 2006 10:25:25 +0100


Jesli chodzi o FastPWM to prosze zobacz do mojego przedostatniego postu w tym
watku tzn przed odpowiedzia RoMana Mandziejewicza, gdzie wlasnie opisuje w czym
mam problem odniesnie tego trybu..bo moim zdaniem we wzorze na foc2PWM jest za
malo danych do zmiany przez co nie da sie dokladnie uzyskac chcianych foc2PWM
mam racje?


Pozdarwiam,
Rafal k

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "AzaZeL" <AzaZeL_B_at_nospam_poczta.onet.pl>
Subject: Re: Timer2 tryb CTC...
Date: Wed, 22 Mar 2006 10:53:25 +0100



Użytkownik "ToR" <ToR_kula_at_nospam_o2.pl> napisał w wiadomości
news:3de7.00000082.44211804_at_nospam_newsgate.onet.pl...
Jesli chodzi o FastPWM to prosze zobacz do mojego przedostatniego postu w
tym
watku tzn przed odpowiedzia RoMana Mandziejewicza, gdzie wlasnie opisuje w
czym
mam problem odniesnie tego trybu..bo moim zdaniem we wzorze na foc2PWM
jest za
malo danych do zmiany przez co nie da sie dokladnie uzyskac chcianych
foc2PWM
mam racje?

no czytalem

dziwi mnie tylko ze CTC jest dla twojego przypadku gorsze od PWM skoro masz
miec przebieg o wypełnieniu 50% (którys kolega napisał)

ja bym ustawił CTC z negacja wyjscia wpisał do OCR wartosc odpowiadajaca pół
wartosci przebiegu i tyle

OCRXX = 100
tyle taktów zegara 8MHz da Ci na wyjsciu OCRXX 40kHz o wypełnieniu 50%

AzaZeL



Poprzedni Następny
Wiadomość
Spis treści
From: "ToR" <ToR_kulaWYTNIJTO_at_nospam_o2.pl>
Subject: Re: Timer2 tryb CTC...
Date: 22 Mar 2006 12:17:09 +0100


No to czy ma byc tak:

...
ja bym wpisał do OCR wartosc odpowiadajaca pół wartosci przebiegu i tyle

TIMSK = (1<<OCIE2)|(1<<TOIE2);
OCR2 = 100; // CZY 50???

ja bym ustawił CTC z negacja wyjscia

TCCR2 = (1<<WGM21)|(1<<CS20)|(1<<COM20);//ustawnie trybu CTC
// pleskalera na "1" ,and Toggle Oc2 On Compare Match

// z tego co mowisz zmiast (1<<COM20) mam dac (1<<COM21)? ale czy wtedy OC2
samo ustawi sie na jedynke po dwoch zliczeniach TCNCT2? Bo COM21 oznacza
czyszczenie po porownaniu no i jak potem jak samo nie ustawi sie na "1" to nie
bedzie zmiany stanu...


OCRXX = 100
tyle taktów zegara 8MHz da Ci na wyjsciu OCRXX 40kHz o wypełnieniu 50%

Hmm z jakiego wzoru korzystales bo mi wychyszlo:

OCR2 = (8Mhz/ 80KHz) -1; (str.109 ,PDF)

Sorry ze tak mecze ;),ale bardzo zalezy mi zna poprawnym zrozumienu...

Pozdrawiam,
Rafal k.


--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "AzaZeL" <AzaZeL_B_at_nospam_poczta.onet.pl>
Subject: Re: Timer2 tryb CTC...
Date: Wed, 22 Mar 2006 13:23:50 +0100


TIMSK = (1<<OCIE2)|(1<<TOIE2);

potrzebne Ci przerwanie czy to ma chodzic samopas?

OCR2 = 100; // CZY 50???

no 100 -1 :) według pdf

ja bym ustawił CTC z negacja wyjscia

TCCR2 = (1<<WGM21)|(1<<CS20)|(1<<COM20);//ustawnie trybu CTC
// pleskalera na "1" ,and Toggle Oc2 On Compare Match

według pdf

// z tego co mowisz zmiast (1<<COM20) mam dac (1<<COM21)? ale czy wtedy
OC2
samo ustawi sie na jedynke po dwoch zliczeniach TCNCT2? Bo COM21 oznacza

zmiana stany wyjscia OCXX na przeciwny czyli co 2 zmiany bedzie ustawiane co
dwie kasowane

OCRXX = 100
tyle taktów zegara 8MHz da Ci na wyjsciu OCRXX 40kHz o wypełnieniu 50%

Hmm z jakiego wzoru korzystales bo mi wychyszlo:

OCR2 = (8Mhz/ 80KHz) -1; (str.109 ,PDF)

no dokladnie

ja mam w ten sposób zrobiona modulacje do pilota IR tylko ze 36kHz wiec pół
okresu to 1 / 72 kHz

ustawiles pin OCXX jako wyjscie? jak nie to ustaw

Sorry ze tak mecze ;),ale bardzo zalezy mi zna poprawnym zrozumienu...

po to grupa jest tylko mnie zastanawia czy ty to sprawdzasz co ludzie Ci
pisza?

AzaZeL



Poprzedni Następny
Wiadomość
Spis treści
From: "AzaZeL" <AzaZeL_B_at_nospam_poczta.onet.pl>
Subject: Re: Timer2 tryb CTC...
Date: Wed, 22 Mar 2006 13:33:45 +0100


aha pisales cos ze masz taktowanie na wewnetrznym układzie RC

moze byc tak ze czestotliwosc bedzie troche nie ta...

wtedy podłacz sobie zewnetrzny kwarc

mnie pilot na IR źle działał musiałem programowo kalibrować

AzaZeL



Poprzedni Następny
Wiadomość
Spis treści
From: "Greg" <Grzegorz.Kasprowicz_at_nospam_CERN.CH>
Subject: Re: Timer2 tryb CTC...
Date: Tue, 21 Mar 2006 09:27:37 +0100



Jak mozna to sparwdzic nie majac oscyloskopu czy AVR Studio oferuje takie
mozliwosci?

podlacz woltomeirz DC



Poprzedni Następny
Wiadomość
Spis treści
From: "ToR" <ToR_kulaWYTNIJTO_at_nospam_o2.pl>
Subject: Re: Timer2 tryb CTC...
Date: 21 Mar 2006 10:19:31 +0100



Jak mozna to sparwdzic nie majac oscyloskopu czy AVR Studio oferuje takie
mozliwosci?

podlacz woltomeirz DC


Troche nie bardzo rozumiem..gdzie mam podlaczyc woltomierz i jak woltomierz
moze mi dac odpowiedz czy generowany przezemnie sygnal jest odpowiedniej
czestotliwsoci?

Pozdrawiam,
Rafal k.

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "grze" <grzecholek_at_nospam__at_nospam__at_nospam_poczta.fm>
Subject: Re: Timer2 tryb CTC...
Date: Tue, 21 Mar 2006 20:56:55 +0100


Troche nie bardzo rozumiem..gdzie mam podlaczyc woltomierz i jak
woltomierz
moze mi dac odpowiedz czy generowany przezemnie sygnal jest odpowiedniej
czestotliwsoci?


Najpierw zdefiniuj co chesz zrobic, generator o zmiennej czestotliwosci, czy
o stalej f ale zmiennym wypelnieniu (PWM)
Bo to dwie rozne sprawy



Poprzedni Następny
Wiadomość
Spis treści
From: "ToR" <ToR_kulaWYTNIJTO_at_nospam_o2.pl>
Subject: Re: Timer2 tryb CTC...
Date: 21 Mar 2006 22:05:20 +0100


Najpierw zdefiniuj co chesz zrobic, generator o zmiennej czestotliwosci, czy
o stalej f ale zmiennym wypelnieniu (PWM)
Bo to dwie rozne sprawy

Ok a wiec chce generowac sygnal PWM o stalej czestotliwosci = 40KHz (taka f
potrzebna do wprawienia w drgania przetwornika ultradzwiekowego) o wylenieniu
50%.

Pozdrawiam,
Rafal k.

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "grze" <grzecholek_at_nospam__at_nospam__at_nospam_poczta.fm>
Subject: Re: Timer2 tryb CTC...
Date: Tue, 21 Mar 2006 22:46:46 +0100



Użytkownik "ToR" <ToR_kulaWYTNIJTO_at_nospam_o2.pl> napisał w wiadomości
news:3442.00000238.44206a8f_at_nospam_newsgate.onet.pl...
Najpierw zdefiniuj co chesz zrobic, generator o zmiennej czestotliwosci,
czy
o stalej f ale zmiennym wypelnieniu (PWM)
Bo to dwie rozne sprawy

Ok a wiec chce generowac sygnal PWM o stalej czestotliwosci = 40KHz (taka
f
potrzebna do wprawienia w drgania przetwornika ultradzwiekowego) o
wylenieniu
50%.


W takim razie do tego celu najlepiej bedzie zastosowac tryb Fast PWM a nie
CTC
W CTC mozesz zmieniac latwo czestowliwosc przy PWM=50%, a w Fast PWM mozesz
ustalic sobie czestoliwosc (rejestem ktory oglranicza zlicznie licznika) a
rejestem COMPARE ustalisz sobie wrtosc PWM 0-100%
(nie pisze nazw rejestrow, bo jest kilka mozliwosci pracy w Fast PWM)



Poprzedni Następny
Wiadomość
Spis treści
From: "ToR" <ToR_kulaWYTNIJTO_at_nospam_o2.pl>
Subject: Re: Timer2 tryb CTC...
Date: 21 Mar 2006 23:16:49 +0100


W takim razie do tego celu najlepiej bedzie zastosowac tryb Fast PWM a nie
CTC
W CTC mozesz zmieniac latwo czestowliwosc przy PWM=50%, a w Fast PWM mozesz
ustalic sobie czestoliwosc (rejestem ktory oglranicza zlicznie licznika) a
rejestem COMPARE ustalisz sobie wrtosc PWM 0-100%


Tez o tym myslalem jednak wzor na czestotliwosci OCR2 wprowadzil mnie w
watpliwosci bo wynosi on np: (strona 112)

f = fclk_I/O / (N*256);

no i z koro u mnie :

f=40KHz
fclk_I/0 = 8HHz

no to jedyny parametr do zmiany to N, a zeby otrzymac na wyjsci f=40KHz to po
podstawieniu danych N=0,78...A wiec chyba nie da sie tego uzyskac ? bo
najlizsza wartosc N (jako pleskaler) to jeden.

Pozdrawiam,
Rafal k.


--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
Date: Tue, 21 Mar 2006 23:32:33 +0100
From: RoMan Mandziejewicz <roman_at_nospam_pik-net.pl>
Subject: Re: Timer2 tryb CTC...


Hello ToR,

Tuesday, March 21, 2006, 11:16:49 PM, you wrote:

[...]

Tez o tym myslalem jednak wzor na czestotliwosci OCR2 wprowadzil mnie w
watpliwosci bo wynosi on np: (strona 112)

f = fclk_I/O / (N*256);
no i z koro u mnie :
f=40KHz
fclk_I/0 = 8HHz

Mi wychodzi 10.24 MHz...

no to jedyny parametr do zmiany to N, a zeby otrzymac na wyjsci f=40KHz to po
podstawieniu danych N=0,78...

8/10.24 = 0.78... Czyżby przypadek? ;-P

[...]

--
Best regards,
RoMan mailto:roman_at_nospam_pik-net.pl