Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 22 lut 2025, o 18:36


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 27 ] 
Autor Wiadomość
PostNapisane: 29 lis 2016, o 08:05 
Offline
Nowy

Dołączył(a): 29 lis 2016
Posty: 11
Pomógł: 0

Witam!
Potrzebuję kod programu, który wystawiałby na jednym z wyjść mikrokontrolera sygnał prostokątny o częstotliwości 8.2 MHz. Mam następujące scalaki:

Atmega328p
Attiny84
Attiny13v

Byłoby wspaniale jeżeli otrzymałbym programy do każdego z osobna z opisem. Jestem świeży w programowaniu AVR i niestety nie mam kiedy się zagłębić bo cały czas pracuję, a wiem że dla Was to bułka z masłem :). Serdecznie pozdrawiam.
J



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2016, o 08:38 
Offline
Użytkownik

Dołączył(a): 23 sty 2014
Posty: 1085
Pomógł: 73

Sygnał o takiej częstotliwości to proponuję złapać z kwarca 8MHz podłączonego do któregoś z tych mikrokontrolerów :) co prawda nie jest prostokątny ale z portu mikrokontrolera to takie przebieg będzie ciężko wygenerować



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2016, o 10:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
john napisał(a):
Jestem świeży w programowaniu AVR i niestety nie mam kiedy się zagłębić bo cały czas pracuję,

... :?:
Jeśli wspomniane uC mają być tylko generatorami 8,2MHz i to w miarę dokładne, to nie tędy droga.
Na uC da się wyciągnąć 1/2 taktowania (chyba ), ale to jest sztywne i raczej nie znajdziesz kwarca 16,4MHz.
john napisał(a):
Byłoby wspaniale jeżeli otrzymałbym programy do każdego z osobna z opisem.


Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2016, o 10:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

Witam,
Do uzyskania wyjściowej częstotliwości 8,2 MHz,
uC musi być taktowany wielokrotnością tej częstotliwości.
Minimum 8,2 MHz (zmiana wyjscia OC..na każdym zboczu)- najbliższy kwarc to chyba 8,19 następny to 16,38.(zmiana wyjscia OC...na jednym zboczu).
Tak to widzę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2016, o 11:26 
Offline
Użytkownik

Dołączył(a): 19 paź 2014
Posty: 357
Lokalizacja: stolyca pyrlandii :)
Pomógł: 18

Na uC moze być cieżko to osiągnąć, ale opcji jest kilka aby to zrealizować:
- układy FPGA ( ale to też trzeba umieć konfigurować)
- układ ADS9850 + uC - masz wtedy możliwość zniany częstotliwości
- scalak 74HC4060 + kwarc - moim zdaniem najlatwiejszy układ do realizacji - dzieli on częstotliwość kwarcu na kilku pinach scalaka przez różne wartości



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2016, o 16:50 
Offline
Nowy

Dołączył(a): 29 lis 2016
Posty: 11
Pomógł: 0

Mam kwarc 18MHz , 16Mhz, 12 MHz. Damy radę coś wykombinować na moich uC? Mam oscyloskop więc na bieżąco sprawdzę jak to wygląda. Dzięki!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2016, o 17:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 mar 2015
Posty: 202
Pomógł: 15

Moim zdaniem nie. Jeśli weźmiesz to na zdrowy rozsądek to przy taglowaniu portem co takt zegarowy przy 16MHz częstotliwość już maleje do 8. Tobie potrzebne 8.2 ale jeśli dodasz do tego instrukcje które średnio do wykonania potrzebują 2 taktów to sam zobacz co z tego się robi. Zresztą jak piszesz posiadasz oscyloskop nic prostszego podłącz do mikroklocka i sam zobacz ile uda Ci się z niego wyciągnąć ;)


Wysłane z mojego HTC One_M8 przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2016, o 19:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2016
Posty: 258
Lokalizacja: Norwegia
Pomógł: 16

Jeżeli masz jakiekolwiek pojęcie o elektronice i odrobinę wyobraźni, to pomyśl o zrobieniu układu PLL. Nie chce mi się teraz przeliczać tego co oferują Twoje mikroprocki, ale układ PLL umożliwi Ci uzyskanie niemal dowolnej częstotliwości z interesującego Ciebie zakresu. Niestety przy PLL musiał byś zrobić dodatkowy generator LC który potem kontrolował byś już za pomocą pętli PLL opartej o jeden z Twoich procesorów. Jeżeli jest to Ci bardzo potrzebne, to w wolnej chwili przygotuję Ci schemat blokowy takiej pętli, oraz niezbędne obliczenia dostępnych zasobów dzielników czy ewentualnych dodatkowych układów.

_________________
SP2LUB - LA1BUA



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2016, o 20:02 
Offline
Użytkownik

Dołączył(a): 19 paź 2014
Posty: 357
Lokalizacja: stolyca pyrlandii :)
Pomógł: 18

SP2LUB - ja nie jestem autorem tego pytania, ale Twoja odpowiedź mnie bardzo zainteresowała:) Mógłbyś coś więcej w temacie powiedzieć, lub podsunąć jakieś linki ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2016, o 20:32 
Offline
Nowy

Dołączył(a): 29 lis 2016
Posty: 11
Pomógł: 0

Na tog udało mi się wycisnąć 1.8 Mhz na kwarcu 18Mhz. Jutro zobaczę co się stanie jak dam kwarc 66Mhz. Częstotliwość nie musi być super dokładna ale fajnie by było mieć 8.2 Mhz. Czy mógłby ktoś podesłać schemat że scalakiem 74hc4060? Wykorzystanie PLL też mnie interesuje także jakbyś mógł to podeślij. Bardzo doceniam Waszą pomoc i naprawdę bym to sam ogarnął ale nie mam czasu...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2016, o 20:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 mar 2015
Posty: 202
Pomógł: 15

66MHz ???? A pod co chcesz to podłączyć bo o ile się nie mylę to 328 czyli największy z Twoich procków ma max 20MHz.

Wysłane z mojego HTC One_M8 przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2016, o 20:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
Zobacz walkę kolegów o wyciśnięcie max z zegara - no chyba że brak czasu....
http://forum.atnel.pl/topic9867.html

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2016, o 21:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2016
Posty: 258
Lokalizacja: Norwegia
Pomógł: 16

Jeżeli chodzi o PLL czyli Phase Locked Loop to była i jeszcze jest jedna z najbardziej popularnych metod kontroli częstotliwości generatorów W.CZ
Dzisiaj znacznie prościej jest wykonać genialny układ syntezera częstotliwości opartego na syntezie bezpośredniej czyli DDS. Chyba najbardziej popularny układ DDS to AD9850 który umożliwia uzyskanie dowolnej częstotliwości w zakresie do 40MHz (w moich testach uzyskałem 54MHz) lub AD9851 który pracuje chyba do 70MHz.. Taki układ sterowany z atmegi 88 u mnie działa fantastycznie. Natomiast pętla PLL to na wpół cyfrowa i na wpół analogowa metoda kontrolowania częstotliwości która królowała zanim nastały DDSy.
W uproszczeniu polega ona na porównywaniu dwóch częstotliwości, jedna wzorcowa (częstotliwość z generatora kwarcowego podzielona do na przykład 1KHz) oraz druga częstotliwość z generatora VCO (również dzielonego za pomocą dzielników nastawnych) który ma być naszym docelowym generatorem strojonym. Tak więc mamy 1KHz z podziału kwarca, oraz częstotliwość zbliżoną do 1KHz która jest wynikiem podziału generatora LC (VCO czyli generator przestrajany napięciem) poprzez dzielniki nastawne. Obie częstotliwości doprowadzamy do komparatora fazy w którym uzyskujemy napięcie błędu wynikające z różnic miedzy doprowadzonymi częstotliwościami. Napięcie błędu w uproszczeniu podawane jest na diodę pojemnościową która przestraja nam nasz generator LC tak długo aż jego częstotliwość po podziale osiągnie dokładnie częstotliwość 1KHz czyli naszą częstotliwość wzorcową :) kiedy to się stanie, mamy stan synchronizacji pętli i nasz generator LC a właściwie VCO ma już stabilność wzorcowego kwarca. Od tej pory przestrajamy generator LC już tylko za pomocą odpowiedniego nastawiania dzielników częstotliwości generatora LC. Skomplikowane? :) trochę może zagmatwane ale tak naprawdę to prosta i genialna metoda stabilizacji częstotliwości używana zarówno w sprzęcie domowego użytku jak odbiorniki radiowe, czy profesjonalny sprzęt do komunikacji radiowej.. ale nie tylko. Myślę że w dzisiejszych czasach łatwiej jest zrobić DDSa na wymienionym prze zemnie wyżej układzie. Służę pomocą jak by co :) linki do PLL http://radioinfo.pl/technika-radiowa/101-petla-synchronizacji-fazowej-pll

_________________
SP2LUB - LA1BUA



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2016, o 21:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

No to ja sobie popłynąłem w wyobraźni, teoria poza realiami. :roll:
SORKA. :mrgreen:
W ramach pokuty,
idę do lochów poklęczeć na żwirze z rękoma w górze .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 lis 2016, o 06:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2016
Posty: 258
Lokalizacja: Norwegia
Pomógł: 16

Daro69 napisał(a):
No to ja sobie popłynąłem w wyobraźni, teoria poza realiami. :roll:
Poza realiami? Przepraszam jeżeli użyłem zbyt wielu liter.
Ten post adresowany był do pytających o PLL. W poście wyżej napisałem "jeśli masz pojęcie o elektronice i odrobinę wyobraźni.." bo niestety to trzeba posiadać albo chociaż odrobinę dobrej woli zrozumienia, żeby ogarnąć skądinąd bardzo prostą ideę działania PLL. Jest masa układów scalonych stosowanych w odbiornikach radiowych AM/FM i takie można sobie użyć do budowy PLL. Sterowane są one przez i2c. Taki na przykład LM7001 siedzi w tunerach.. Jest nawet gotowa kostka CD4046 dziadek który super nadaje się do konstruowania PLLi.. W necie jest masa rozwiązań także dla miłośników programowania Arduino..
Nie da się wyłożyć wszystkiego o PLL w krótkim poście.

_________________
SP2LUB - LA1BUA



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 gru 2016, o 09:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Skoro dysponujesz procesorem atmega328 to można wykorzystać jego wyjście CLKO i ustawienie odpowiedniego fusebitu.
Wtedy sygnał którym taktowany jest procesor jest wyprowadzony na tym pinie (CLKO).
Jako źródło taktowania ustawiasz wewnętrzny oscylator 8 MHz.
Następnie można wpisać wartość korygującą do rejestru OSCAL i przesunąć te 8 MHz nieco w górę. Nie jestem pewny czy da się to zrobić o 200 kHz, ale myślę że można się dobrze zbliżyć do tej wartości.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 gru 2016, o 11:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

No tak sobie teraz myślę.
Skoro CLKO, to może do ustawienia 8,2 MHz użyć opisany np. W BB
na poczatku w rozdziale 3.3.3,
Zewnętrzny oscylator rc.
22pF i dostroić potencjometrem do 8,2 MHz. ?
Malo stabilne, ale zawsze to jakaś alternatywa.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 gru 2016, o 13:36 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2595
Pomógł: 128

sq8dsr napisał(a):
Jako źródło taktowania ustawiasz wewnętrzny oscylator 8 MHz.
Następnie można wpisać wartość korygującą do rejestru OSCAL i przesunąć te 8 MHz nieco w górę. Nie jestem pewny czy da się to zrobić o 200 kHz, ale myślę że można się dobrze zbliżyć do tej wartości.


Ciekawy pomysl, trzeba bedzie to przy okazji potestowac.
:)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 gru 2016, o 17:55 
Offline
Nowy

Dołączył(a): 29 lis 2016
Posty: 11
Pomógł: 0

Nie potrzebuje super dokładnie 8.1 - 8.3 MHz wystarczy. Panie Daro69 właśnie tak myslalem że na CLKO da radę to zrobić, mógłbyś coś więcej napisać jakbyś to zrobil ?☺ nie mam BB a jestem w Kanadzie i nie mogę czekać niestety aż dojdzie. Czy Mirek się wkurzy jakbyś wysłał mi screenshoot rozdzialu☺?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 gru 2016, o 18:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Ja Ci później napisze kod przykładowy na at328



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 gru 2016, o 21:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Program jest bardzo prosty.
Zmienia co 100 ms wartość w rejestrze OSCAL.
Dzięki temu można sobie, mając oscyloskop albo częstościomierz, obserwować przebieg na wyjściu CLKO.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Obrazek

przy wartości 0 wpisanej do OSCAL uzyskałem 5,21 MHz
przy wartości 255 aż 16 MHz !!!!
Co prawda te skrajne wartości nie zmieniają się już w sposób liniowy i napewno są bardzo zalezne od temperatury.
8,2 MHz uzyskałem wpisując wartość 142. W innym egz. procesora może być to nieco inna wartość.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 gru 2016, o 22:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

john napisał(a):
Panie Daro69 właśnie tak myslalem że na CLKO da radę to zrobić

To był fajny pomysł kolegi "sq8dsr".:)
john napisał(a):
Czy Mirek się wkurzy jakbyś wysłał mi screenshoot rozdzialu☺?

Oj.. myślę że nie był by szczęśliwy,
a ja musiał bym za karę, boso po żwirze w lochach forumowych chodzić,
przez dwa tygodnie najmarniej bez możliwości zerkania na forum. :?

Mogę przedstawić pomysł za pomocą noty z ATmegi32 - oficjalnie. :)
myślałem o tym sposobie modulatora rc:
Obrazek
Nie doczytałem czy ATmega328 ma tę samą możliwość wykorzystania zewnętrznego modulatora rc.
To był taki przebłysk myśli , skojarzony z informacją w BB.

Ale widzę że kolega "sq8dsr" pięknie sprawę sfinalizował :D superancko. ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 gru 2016, o 23:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
john napisał(a):
...nie mam BB a jestem w Kanadzie i nie mogę czekać

Ja ze swej strony chciałem przeprosić kol.john za opryskliwe podejście do jego problemu.
Jedynym usprawiedliwieniem jest Jego stwierdzenie że nie ma czasu, które to odebrałem jako "poszukajcie za mnie bo mi się nie chce" - jeszcze raz przepraszam.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 gru 2016, o 23:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

e no... kicajek , ja też dzięki Tobie poczytałem co nie co o wyciskaniu na max z zegarka. :)
Przejrzałem na oczy, gdy zobaczyłem jak wyglądają przykłady w ASM'ie.
Na początku kombinowałem na 8,19 MHz, - nie do wykonania nawet tamtym sposobem sprzętowo, bo trzeba minimum 2 taktów.
Teraz to jest dla mnie jasne że dla takich częstotliwości to tylko sprzętowo, ale to też z wykorzystaniem wyjścia CLKO.
Dziękuję Wam za cenne informacje. :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 gru 2016, o 23:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Wyjście CLKO bywa przydatne. Np. wtedy gdy chcemy tym samym zegarem jeszcze coś taktować. Niestety szkoda, że jest na tym samym pinie co ICP Timera1...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 gru 2016, o 23:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

@sq8dsr,
widzę że jesteś świetnie zaznajomiony z rejestrami. :)
że tak powiem - znasz je na wylot. :D
Jak będę miał jakiś problem w tym temacie, to już wiem do kogo uderzać. ;) hi.hi..
dzięki za krótki, ale bardzo ważny kod. :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 gru 2016, o 23:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Daro69 napisał(a):
widzę że jesteś świetnie zaznajomiony z rejestrami. :)
że tak powiem - znasz je na wylot. :D


hahaha, nie nie jestem. Zresztą kto by to spamiętał :P Po prostu czytam notę katalogową.
Zresztą w procesorach atmega czy attiny nie ma ich wiele. I najważniejsze się pamięta, co nie znaczy, że nie trzeba zaglądać do noty.
Ale przykładowo w procach xmega jest rejestrów dużo więcej tym bardziej w ARMach, i tego nie ma co pamiętać.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 27 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO