loko83
Guest
Thu Sep 23, 2004 4:53 pm
Mam duży(przynajmniej dla mnie) problem. Powiedzmy że muszę wygenerować
trzy częstotliwości za pomocą jednego uC(najlepiej AVR). Pierwsza
częstotliwość to 40kHz, druga to 60kHz a trzecia 1,2MHz. Szukałem w
necie ale znalazłem tylko dds`y - np. minidds. Ale to jest tylko jedna
częstotliwość. W sumie to poradziłbym sobie z tym gdyby nie ta częstotl.
1,2MHz. Jeśli ktoś ma jakiś pomysł to chętnie poczytam - może jakieś
przykłady(najlepiej w c lub c + asm). Z góry dzieki za info.
Marek Dzwonnik
Guest
Thu Sep 23, 2004 5:46 pm
Użytkownik "loko83" <loko83@tlen.pl> napisał w wiadomości
news:civ2l8$6rj$1@atlantis.news.tpi.pl
Quote:
Mam duży(przynajmniej dla mnie) problem. Powiedzmy że muszę
wygenerować trzy częstotliwości za pomocą jednego uC(najlepiej AVR).
Pierwsza częstotliwość to 40kHz, druga to 60kHz a trzecia 1,2MHz.
Czy dokladnie 1.2MHz? Czy dokładnie 40kHz i 60kHz? Tzn. czy można je
uzyskać z prostego podziału zegara, czy musi byćDDS? Prostokąt czy sinus?
Za mało podałeś szczegółów, więc to co poniżej to tylko garść luźnych
skojarzeń:
Co do 1.2MHz: Wziąć 2313, pogonić z overclockiem na kwarcu 12MHz. (AFAIR w
Tiny2313 to już 12MHz da się nawet przyłożyć legalnie). 1.2MHz wygenerujesz
sprzętowo z podziału f_clk/10. Czyli rejestr "compare" ustawić na 5 a wy
OC1 w trybie "toggle".
Częstotliwości zbliżone 40 i 60kHz możesz wygenerować w zmodyfikowanym
układzie miniDDS. Oczywiście o ile nie da się tego sensowniej zrobić przez
podział na licznikach. Jedna pętla w oryginalnym miniDDS zajmuje 9cykli co
przy 12MHz dałoby takt DDS-a równy 1.33MHz . Nawet jeżeli wydłużysz tą pętlę
5-krotnie - do 45 cykli to jeszcze masz takt 266kHz czyli ponad dwie oktawy
powyżej max. częstotliwości wyjściowej DDS-a (60kHz). A w 45 cyklach
wyrobisz się z równoległą akumulacją fazy w dwóch akumulatorach i
wystawieniem bajtu fazy na port przetwornika. Gorzej, że w 2313 brakuje
drugiego portu równoległego na drugą drabinkę R2R a wystawianie na zewn.
rejestr będzie kłopotliwe. Może coś ciut większego? Jakieś AtMega8?
--
Marek Dzwonnik, GG: #2061027 - zwykle jako 'niewidoczny'
(Uwaga Gadu-Gadulcowicze: Nie odpowiadam na anonimy.)
loko83
Guest
Thu Sep 23, 2004 6:32 pm
Użytkownik Marek Dzwonnik napisał:
Quote:
Użytkownik "loko83" <loko83@tlen.pl> napisał w wiadomości
news:civ2l8$6rj$1@atlantis.news.tpi.pl
Mam duży(przynajmniej dla mnie) problem. Powiedzmy że muszę
wygenerować trzy częstotliwości za pomocą jednego uC(najlepiej AVR).
Pierwsza częstotliwość to 40kHz, druga to 60kHz a trzecia 1,2MHz.
Czy dokladnie 1.2MHz? Czy dokładnie 40kHz i 60kHz? Tzn. czy można je
uzyskać z prostego podziału zegara, czy musi byćDDS? Prostokąt czy sinus?
Za mało podałeś szczegółów, więc to co poniżej to tylko garść luźnych
skojarzeń:
Co do 1.2MHz: Wziąć 2313, pogonić z overclockiem na kwarcu 12MHz. (AFAIR w
Tiny2313 to już 12MHz da się nawet przyłożyć legalnie). 1.2MHz wygenerujesz
sprzętowo z podziału f_clk/10. Czyli rejestr "compare" ustawić na 5 a wy
OC1 w trybie "toggle".
Częstotliwości zbliżone 40 i 60kHz możesz wygenerować w zmodyfikowanym
układzie miniDDS. Oczywiście o ile nie da się tego sensowniej zrobić przez
podział na licznikach. Jedna pętla w oryginalnym miniDDS zajmuje 9cykli co
przy 12MHz dałoby takt DDS-a równy 1.33MHz . Nawet jeżeli wydłużysz tą pętlę
5-krotnie - do 45 cykli to jeszcze masz takt 266kHz czyli ponad dwie oktawy
powyżej max. częstotliwości wyjściowej DDS-a (60kHz). A w 45 cyklach
wyrobisz się z równoległą akumulacją fazy w dwóch akumulatorach i
wystawieniem bajtu fazy na port przetwornika. Gorzej, że w 2313 brakuje
drugiego portu równoległego na drugą drabinkę R2R a wystawianie na zewn.
rejestr będzie kłopotliwe. Może coś ciut większego? Jakieś AtMega8?
--
Marek Dzwonnik, GG: #2061027 - zwykle jako 'niewidoczny'
(Uwaga Gadu-Gadulcowicze: Nie odpowiadam na anonimy.)
Procesor nie będzie wykonywał innych czynności. Wiem, że dodatkowa
modulacja(PWM) spwoduje, że nie będzie możliwe generowanie trzech
częstotl. Z tego względu wyjściowe szpilki będę sobie formował poza uC.
Procesor - najlepiej aby nie był zbyt duży(coś w rodzaju at tiny w
obudowie dip8). Może na jakiś inny procek. Może PIC16F84 poradziłby
sobie z tym zadaniem(nie potrafie znaleźć w nocie jaki ma podział ale
coś mi się wydaje że jeden cykl przy 4MHz to 1us).
Dokładne częstotliwości to 38kHz, 57kHz, 1.1875MHz.
Marek Dzwonnik
Guest
Thu Sep 23, 2004 7:07 pm
Użytkownik "loko83" <loko83@tlen.pl> napisał w wiadomości
news:civ8jm$mui$1@nemesis.news.tpi.pl
Quote:
Może PIC16F84 poradziłby
sobie z tym zadaniem(nie potrafie znaleźć w nocie jaki ma podział ale
coś mi się wydaje że jeden cykl przy 4MHz to 1us).
Tak. PICe dzielą przez 4. AVR przy 4MHz ma cykl maszynowy 250ns.
Quote:
Dokładne częstotliwości to 38kHz, 57kHz, 1.1875MHz.
Co to będzie? Kojarzy mi się z jakimiś podnośnymi, ale nie wiem od czego?
;-)
Hmmm... Wspólne wielokrotności niby proste, ale nie całkiem i nie do końca.
Całkowite wsp. podziału (375, 250, 12) wychodzą dopiero przy 14.25MHz. Skąd
wytrzasnąć taki kwarc? Programowalny generator Epsona?
A może na miniDDS wygenerować 38kHz i 57kHz a potem mając 38kHz jako f
odniesienia, powielić na PLLu razy 125 do 4.75MHz = 4x1.1875MHz ? Nawet
HC4046 się tu wyrobi, ale niestety oznacza to kawałek dodatkowego układu.
BTW: Skracaj cytaty!
--
Marek Dzwonnik, GG: #2061027 - zwykle jako 'niewidoczny'
(Uwaga Gadu-Gadulcowicze: Nie odpowiadam na anonimy.)
"pl.misc.elektronika" podlega zasadom usenetu i Netykiety:
http://www.pg.gda.pl/~agatek/netq.html
Nie zmieniaj tematu. CYTUJ (ale OSZCZĘDNIE). Pisz POD cytatem!
Piotrek Sz.
Guest
Thu Sep 23, 2004 7:51 pm
loko83 <loko83@tlen.pl> napisał(a):
Quote:
Mam duży(przynajmniej dla mnie) problem. Powiedzmy że muszę wygenerować
trzy częstotliwości za pomocą jednego uC(najlepiej AVR). Pierwsza
częstotliwość to 40kHz, druga to 60kHz a trzecia 1,2MHz. Szukałem w
necie ale znalazłem tylko dds`y - np. minidds. Ale to jest tylko jedna
częstotliwość. W sumie to poradziłbym sobie z tym gdyby nie ta częstotl.
1,2MHz. Jeśli ktoś ma jakiś pomysł to chętnie poczytam - może jakieś
przykłady(najlepiej w c lub c + asm). Z góry dzieki za info.
Witam.
A czy ten procek miałby jeszcze coś do roboty ?
Bo jeśli tylko generowanie tych 3-ch częstotliwości to ... i tak potrzebny Ci
naprawdę szybki procek
Ale jest to do zrobienia :)
Pzdr.
Piotrek Sz.
--
Wysłano z serwisu Usenet w portalu Gazeta.pl ->
http://www.gazeta.pl/usenet/
Piotr Chmiel
Guest
Fri Sep 24, 2004 11:47 am
On Thu, 23 Sep 2004, loko83 wrote:
Quote:
Dokładne częstotliwości to 38kHz, 57kHz, 1.1875MHz.
Czy ty budujesz może jakis koder stereo i RDS ? :P
pzdr,
Marek Dzwonnik
Guest
Fri Sep 24, 2004 8:17 pm
Użytkownik "Marek Dzwonnik" <mdz@WIADOMO_PO_CO_TO.message.pl> napisał w
wiadomości news:41532d15$1@news.home.net.pl
Quote:
Hmmm... Wspólne wielokrotności niby proste, ale nie całkiem i nie do
końca. Całkowite wsp. podziału (375, 250, 12) wychodzą dopiero przy
14.25MHz. Skąd wytrzasnąć taki kwarc? Programowalny generator Epsona?
I tak będzie chyba najłatwiej. Generator Epsona z serii SG-8002
(
http://www.epson-electronics.de -> Search "SG-8002"
->
www.spezial.pl
->
www.cyfronika.com.pl
)
zaprogramowany na 14.25MHz, poganiający jakiegoś AVR-a
Na jednym timerze zrealizować podział /12 i uzyskać 1.187500MHz
Na drugim timerze zrealizować podział /125 -> przerwania z
częstotliwością 114kHz
Mając przerwania 114kHz programowo dzielić /2 ( 57kHz ) oraz /3 (38kHz).
--
Marek Dzwonnik, GG: #2061027 - zwykle jako 'niewidoczny'
(Uwaga Gadu-Gadulcowicze: Nie odpowiadam na anonimy.)