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.
Użytkownik "loko83" snipped-for-privacy@tlen.pl napisał w wiadomości news:civ2l8$6rj$ snipped-for-privacy@atlantis.news.tpi.pl
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?
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 :)
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.
Użytkownik "loko83" snipped-for-privacy@tlen.pl napisał w wiadomości news:civ8jm$mui$ snipped-for-privacy@nemesis.news.tpi.pl
Tak. PICe dzielą przez 4. AVR przy 4MHz ma cykl maszynowy 250ns.
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.
Użytkownik "Marek Dzwonnik" <mdz@WIADOMO_PO_CO_TO.message.pl> napisał w wiadomości news:41532d15$ snipped-for-privacy@news.home.net.pl
I tak będzie chyba najłatwiej. Generator Epsona z serii SG-8002 (
formatting link
-> Search "SG-8002"
->
formatting link
->
formatting link
) 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).
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.