GENERATOR - AVR



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Adam" <adam_at_nospam_o2.pl>
Subject: GENERATOR - AVR
Date: Mon, 16 Aug 2004 20:59:51 +0200


Czy ma ktoś doświadczenie w generowaniu impulsów na prockach AVR.
Chciałbym mieć na wyjściu Timera przebieg o f=2048000 Hz i wypełnieniu 50%.
Jak powinien wyglądać program ?

Domyślam się, że powinienem ustawić Timer1 tak, aby wytwarzał taką
częstotliwość, aby w trybie PWM impulsy pojawiały się określoną ilośc razy,
ale nie wiem paru spraw:

Zakładam, że ATMEL AVR 90S8515 taktowany jest f=4 MHz.
Teraz patrze w ustawienia Timera1 i mam, że mogę go taktować:
f, f/8, f/64, f/256 i f/1024.
Licznik jest 8 bitowy więc wykona 256 cykli
więc 256 * (4000000 Hz / 1024) = 1000000 Hz - to jest częstotliwość timera
PWM a ja potrzebuję 2048000 Hz.

Ni mam pomysłów.,
Możeciemi pomóc?
A.





========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Adam" <adam_at_nospam_o2.pl>
Subject: Re: GENERATOR - AVR
Date: Mon, 16 Aug 2004 21:32:54 +0200


Może tak:

kwarc: f = 3,27680 MHz

wówczas:

Częstotliwość taktowania Timer1 byłaby:

f1 = f / 256 = 3276800 Hz / 256 = 12800 Hz

Licznik Timer1 zliczałby w przód od 0 do 256, więc pytanie, od ilu liczyć ,
aby przepełnienie pojawiło się w odpowiednim momencie, czyli:

x * 12800 Hz = 2048000 / 12800
x = 160

256 - 160 = 96

czyli od 96 w górę przepełnienie pojawiało by się tak, aby F końowe było
2048000 Hz,

pytanie tylko, gdzie w AVR jest (jeżeli w ogóle) mozliwość ustawiania
wartości rejestru licznika po przepełnieniu.
Czy specjalnie mam generować przerwanie i w przerwaniu ustawiać tę wartość?

Czyli algorytm byłby taki:

1. wstaw wartość 96 do rejestru licznika
2. start licznika
3. po przepełnieniu w przerwaniu ustaw stan licznika na 96
4. opóść przerwanie

Ok, ale to dopiero częstotliwość taktowania licznika, a jak do tego ma się
PWM ?
Tam są inne współczynniki. Z tego co wiem podstawą do generatora są:

częstotliwośc Timera1 / 510 lub
częstotliwośc Timera1 / 1022 lub
częstotliwośc Timera1 / 2046

czyli o takie dzielniki powinienem skorygować częstotliwośc takotowania
Timera1,
ale te liczby są dziwne. Bo jest zamiast 512 jest 510 itd.
Nigdy nie dojde chyba do idealnej częstotliwości.

Czy dobrze kombinuję ?
A.







========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "max" <max441_at_nospam_wp.pl>
Subject: Re: GENERATOR - AVR
Date: Tue, 17 Aug 2004 08:43:26 +0200


Witam.
Trochę pokiełbasiłeś, więc opiszę wszystko od początku.
Timer1 może być taktowany z następującymi częstotliwościami: CK, CK/8,
CK/64, CK/256, CK/1024, gdzie CK-częstotliwość zegara (wyboru dokonuje sie
poprzez odpowiednie ustawienie bitów CS12, CS11 i CS10 w rejestrze TCCR1B).
Timer1 może pracować w 3 trybach PWM: 8, 9 i 10 bitowym (wyboru dokonuje się
poprzez odpowiednie ustawienie bitów PWM11 i PWM10 w rejestrze TCCR1A). Dla
każdego z trybów częstotliwość sygnału PWM wynosi odpowiednio: fTCK1/510,
fTCK1/1022 i fTCK1/2046, gdzie fTCK1-częstotliwość taktowania Timera1 (patrz
na samej górze). Tak więc możemy uzyskać tylko 15 różnych częstotliwości
PWM. Najmniejsza wynosi CK/1024*2046, a największa CK/510. W trybie PWM
licznik TCNT1 liczy w górę do 255, 511 lub 1023 (w zależności od wybranego
trybu) i po osiągnięciu tej wartości liczy w dół do 0. Po osiągnięciu 0 znów
zaczyna liczyć w górą i tak dalej. Wypełnienie PWM ustawia się poprzez
odpowiednie ustawienie rejestru OCR1x. Stan portu OC1x jest zmieniany gdy
TCNT1=OCR1x i zależy od tego czy TCNT1 w danej chwili liczy w górę czy w
dół, oraz od ustawień bitów COM1x1 i COM1x0 w rejestrze TCCR1A. 'x' oznacza
tu wykorzystywany kanał PWM (A lub B).
Tak więc uzyskanie częstotliwości 2048000Hz na AVR przy wykorzystaniu
sprzętowego PWM nie jest możliwe.
Jest to możliwe w inny sposób, ale to zależy jeszcze od tego co ma poza tym
robic system.

Pozdrawiam,

Piotrek.


Użytkownik "Adam" <adam_at_nospam_o2.pl> napisał w wiadomości
news:cfr2b4$hlq$1_at_nospam_nemesis.news.tpi.pl...
Może tak:

kwarc: f = 3,27680 MHz

wówczas:

Częstotliwość taktowania Timer1 byłaby:

f1 = f / 256 = 3276800 Hz / 256 = 12800 Hz

Licznik Timer1 zliczałby w przód od 0 do 256, więc pytanie, od ilu liczyć
,
aby przepełnienie pojawiło się w odpowiednim momencie, czyli:

x * 12800 Hz = 2048000 / 12800
x = 160

256 - 160 = 96

czyli od 96 w górę przepełnienie pojawiało by się tak, aby F końowe było
2048000 Hz,

pytanie tylko, gdzie w AVR jest (jeżeli w ogóle) mozliwość ustawiania
wartości rejestru licznika po przepełnieniu.
Czy specjalnie mam generować przerwanie i w przerwaniu ustawiać tę
wartość?

Czyli algorytm byłby taki:

1. wstaw wartość 96 do rejestru licznika
2. start licznika
3. po przepełnieniu w przerwaniu ustaw stan licznika na 96
4. opóść przerwanie

Ok, ale to dopiero częstotliwość taktowania licznika, a jak do tego ma się
PWM ?
Tam są inne współczynniki. Z tego co wiem podstawą do generatora są:

częstotliwośc Timera1 / 510 lub
częstotliwośc Timera1 / 1022 lub
częstotliwośc Timera1 / 2046

czyli o takie dzielniki powinienem skorygować częstotliwośc takotowania
Timera1,
ale te liczby są dziwne. Bo jest zamiast 512 jest 510 itd.
Nigdy nie dojde chyba do idealnej częstotliwości.

Czy dobrze kombinuję ?
A.









========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.internetia.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Adam" <laski80_at_nospam_wp.pl>
Subject: Re: GENERATOR - AVR
Date: Tue, 17 Aug 2004 14:25:32 +0200


Jest to możliwe w inny sposób, ale to zależy jeszcze od tego co ma poza
tym
robic system.

Pozdrawiam,


System będzie bardzo zajęty, więc nie wiem, bo pewnie myślisz o zliczaniu i
programowym wyłączaniu i zapalaniu jakiegoś bitu na porcie ?
Np. w przerwaniu od mikrokontrolera ?
Niestety to odpada, bo ta częstotliwośc potrzebna mi jest do przetwornika AC
i jak się zmieni
to również dane mi się posypią a to wpłynie na jakość pomiaru.
Chciałem zaoszczędzić i nie wstawiac do urządzenia dodatkowej kostki np.
555, ale widzę, że utrzymanie stałej częstotliwości dla AC przy jednoczesnym
przetwarzaniu sygnału, wyświetlaniu pomiarów itd. to jest za dużo.
Może się mylę?

A.




========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai