Atmega8 i baud

Jun 07, 2005 16 Replies

Witam serdecznie.



Czy mozecie mi powiedziec w jaki sposob moge sprawdzic z jaka czestotliwoscia pracuje moj kontroler? Chcialbym odpowiednio wyliczyc baud dla transmisji 8 bitowych, ale do tego potrzebna mi jest czestotliwosc.



Z gory dziekuje.



przecież wszystko jest w manualu. Nawet fajna tabelka.

Waldek

U¿ytkownik "Waldemar Krzok" snipped-for-privacy@charite.de

Tak owszem, ale nie wiem z jaka czestotliowscia parcuje moj kontroler. Czy to jest maksymalna czestotliwosc wewnetrzenego oscylatora 16 MHz? Jak to mo¿na sprawdziæ?

RTFM jak już pisałem. Częstotliwość oscylatora wewnętrznego ustawiasz CKSEL, bity 0-3. Częstotliwość zegara jest wtedy 1,2,4 lub 8MHz. Wszystko jest jak byk napisane w manualu.

Waldek

Piotrowi zapewne chodzi o to, żeby zrobić uniwersalną funkcję, która będzie działać na każdej konfiguracji. Bez zewnętrznego wzorca nie da się tego zrobić - wtedy można zliczać i wywnioskować częstotliwość pracy procesora. Myślę, że łatwiej jest ozworkować dla co bardziej popularnych konfiguracji i na tej podstawie ustawiać rejestry.

A da się programowo odczytać ustawienie fusebitów (rozkazem SPM)? No to wtedy chociaż wiadomo jakie jest taktowanie gdy wybrano wewnetrzny RC. Jaki kwarc jest przylutowany obok AVRa to chyba użytkownik wie - może to być określane jakąś definicją.

[ciach]

Racja, SPM... A co do kwarcu - pomyśl, jeśli np. CPU będzie wymienny między różnymi urządzeniami z różnymi kwarcami?

A propos komunikacji - można by inaczej, ale to wymaga znajomości tego, co jest przesyłane po serialu. Na podstawie tego automatycznie wykrywać prędkość (nie myślałem nad tym dłużej, ale widzę gdzieś tu punkt zaczepienia).

no to można mu dać częstotliwość sieci na wejście INT i zliczać ile taktów jest między przerwaniami. Wtedy obojętnie jaki zegar się ma, zewnętrzny czy wewnętrzny.

Waldek

Tylko trzeba ja miec, a wiele urzadzen nie ma kontaktu z siecia. Oczywiscie idac tym tokiem rozumowania mozna np. zrobic odbiornik fal dlugich i ladnie sobie wyciagnac z tamtad AFAIR 220 kHz.

225 kHz. Dzielisz to przez 9 i masz ładne, wzorcowe 25 kHz. Potem na PLLa juz już masz co potrzebujesz ;-)

Nie trzeba PLLa. Przeciez chodzilo o prawidlowe ustawienie UARTu czyli posrednio znajomosc czestotliwosci taktowania procka. A po podzieleniu tych 25 kHz mozna juz zliczyc, ile taktow uC (obiegow petli) zmiesci sie w jednym cyklu zegara zewnetrznego.

BTW: Atmelowe ARMy 'RM9200 i 'SAM7Sxx maja sprzetowa mozliwosc mierzenia swojej czestotliwosci taktowania, a dokladniej mowiac to automatycznie zliczaja ile taktow zegara "glownego" miesci sie w zegarze "powolnym" (slowclock, najczesciej taktowany zewnetrznym kwarcem 32,768 kHz; w 'SAM7Sxx taktowany malo stabilnym generatorem RC), wynik mozesz odczytac z odpowiedniego rejestru.

No ale jesli dopuszczasz mozliwosc uzycia drugiego kwarcu np. 32kHz to przeciez w AVR tez tak mozesz zrobic. Ale chyba prosciej jest tak obmyslic protokol przesylania danych przez RS, zeby mozna bylo wysylac jakies znaki i odbierac echo. Wtedy tak dlugo kalibrujesz predkosc RS az uzyskasz sensowne (spodziewane) dane. Zreszta ta metoda jest chyba opisana w ktorejs z not Atmela.

BTW, czytam sobie dokumentacjê SAM7 i widzê, ¿e kompletnie skopali modu³ generatora zegara daj±c preskalery zamiast dowolnych dzielników. No i co mi po wewnêtrznym PLLu oraz liniach PCK (swoj± drog± bardzo dobry pomys³!), skoro praca w trybie USB wymusza ustawienie PLL na 2^N*48MHz, a ja chcia³bym mieæ na PCK np. PLLCLK/11... :-(

No i tylko 32 linie IO... Oj, trzeba bêdzie kombinowaæ z ekspanderami na CD4094... :-(((

Pozdrawiam Piotr Wyderski

Rzeczywiscie gdy dziala USB musisz ustawic taktowanie calego uC na 48 MHz. Linii PCK nie uzywam wiec sie w ich opis nie zaglebialem. A wewnetrzny PLL jest fajny gdy nie musisz dolaczac generatora 48 MHz i wystarczy tani kwarc 12 MHz. Poza tym wewn. generator nie ciagnie pradu gdy procesor spi, z zewnetrznym juz by nie bylo tak rozowo.

32 linie I/O w obudowie 64-pin to jest jest osiagniecie, ale milo, ze mozna _jednoczesnie_ zmieniac stan na dowolnym podzbiorze linii GPIO. To jest niezle rozszerzenie w tych nowych atmelkach ('RM9200 tez chyba to ma).

A mnie by siê bardzo przyda³y, gdyby dzia³a³y tak, jak to sobie wyobra¿a³em. A tak trzeba bêdzie robiæ rze¼bê ludow± na LVC74...

W³a¶nie chodzi o to, ¿e ten PLL jest bardzo fajny, choæ ma ma³y zakres powielania, 220MHz to max. W Cyclone PLL chodzi do ~700MHz i tam siê mo¿na bawiæ w NWW bez wiêkszych ograniczeñ, a tu nawet siê nie da powieliæ 48MHz

5 razy. Na to jednak mo¿na przymkn±æ oko, ale architektura linii PCK to zbrodnia -- naprawdê nie mo¿na by³o daæ 6-bitowych dzielników programowalnych zamiast idiotycznego preskalera?! Co mi po podziale przez 2^N, skoro idealnie pasowa³oby PLLCLK/5 do PCK0, a PLLCLK/4 do USB?
4 kana³y ADC siê marnuj±, a mogliby dodaæ do nich funkcje IO. Do tego JTAG równie¿ móg³by byæ dzielony z IO (tak jak SPI w AVRkach), przecie¿ jest pin JTAGSEL, który móg³by wymuszaæ dostêpno¶æ JTAG. No i masz dodatkowych 8 pinów IO przy zerowych kosztach...

Pozdrawiam Piotr Wyderski

To olej ARMa i zrob wszystko zgodnie z najnowsza moda na FPGA.

To zbyt s³aby powód do odrzucenia ARMa, pozosta³e peryferia dzia³aj± zdecydowanie na korzy¶æ tego procesora. Trzeba bêdzie tylko dodaæ dzielnik zegara /2 na 1/2 74LVC74 (druga po³ówka ma nadzorowaæ FIFO). A poza tym ARMa ju¿ sobie kupi³em w Seguro i za jaki¶ miesi±c zacznê siê nim bawiæ. Póki co nadrabiam zaleg³o¶ci: w³a¶nie montujê MP3 playerka na SND1C. :-) Dzia³aj± oba zasilacze (impulsowy i liniowy z USB), a p³ytka pod³±czona do peceta spowodowa³a pojawienie siê kreatora instalacji AT89C51SND1C/AT89C51SND2C; FLIP potrafi zapisaæ binaria (póki co jakie¶ losowy hex z dysku) i odczytaæ zawarto¶æ kostki, wiêc w tym miejscu wszystko wydaje siê dzia³aæ. Poniewa¿ programowaæ mi siê chwilowo nie chce, jutro spróbujê uruchomiæ znajduj±ce siê na tej samej p³ytce radio FM stereo na TDA7088.

Pozdrawiam Piotr Wyderski

PS. Ale gullwingi siê ¶wietnie lutuje w warunkach amatorskich, po raz kolejny jestem tym pozytywnie zaskoczony. Ta¶ma Wicka czyni cuda. :-)

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required