Atmel AVR, UART

Apr 21, 2004 11 Replies

Witam,



Czy do korzystania z komunikacji RS232 pomiedzy komputerem, a procesorem ATmega16 wystarczy jedynie podlaczyc RxD i TxD (poza MAX232 oczywiscie) ? Mam dwa schematy: na jednym jest uklad z kwarcem, na drugim bez. Nie potrzebuje taktowac UARTa zewnetrznym kwarcem.



Trix.



U¿ytkownik "Trix" snipped-for-privacy@dupa.com napisa³ w wiadomo¶ci news:c65vph$nca$ snipped-for-privacy@nemesis.news.tpi.pl...

Jesli stabilnosc wewnetrznego oscylatora RC ci wystarczy, to nie musisz podlaczac kwarca. Ale ten oscylator nie jest zbyt stabilny, lepiej popiac kwarc.

Pozdr AK

Czym niestabilnosc oscylatora RC objawi sie w praktyce? Jesli wprowadze jakis protokol korekcji bledow, wszystko bedzie OK? Jaki procent znakow przeslanych bedzie bledny przy oscylatorze RC?

Trix.

RC daje 1,2,4 lub 8MHz. dla tych czêstotliwo¶ci tylko niektóre "baud rate" s± dopuszczalne. szczegó³y w nocie procka.

pozdrawiam PC

Cze¶æ.. Sci±gnij sobie mój kalkulator AVRków ;-)

formatting link
tam masz m.in tabelêze stop± b³êdów dla ró¿nych warto¶ci kwarcu i szybko¶ci RS'a (niepe³n± ale zawsze to co¶ ;-))

Pozdrawiam Artur Starz

Zapoznalem sie z dokumentacja do mojego procesora ATmega16.

Wynika z niej, ze jesli uzyje np. kwarc: 1.8432 MHz, to dla pozadanej przeze mnie szybkosci 57600 bps, bede mial 0% bledow. Dobrze rozumuje?

A z czego wynika to, ze dla pewnych czestotliwosci kwarcu powstaja przeklamania? Chodzi o to, ze rozjezdza sie synchronizacja naszego odbiornika, wzgledem nadajnika (np. komputera PC), ktory ma inne czestotliwosci ? A gdyby nadajnikiem i odbiornikiem byly dwa procesory ATmega16 z takimi samymi kwarcami, to uzyska sie 0% przeklamania?

Z gory dziekuje za wyjasnienie. Trix.

U¿ytkownik "Trix" snipped-for-privacy@dupa.com napisa³ w wiadomo¶ci news:c689me$bjj$ snipped-for-privacy@atlantis.news.tpi.pl...

aby nie bylo przeklaman czestotliwosc kwarcu powinna sie dzielic przez baudrate bez reszty, bo gdy zostaje reszta powoduje ona rozjezdzanie sie czest. uarta i kwarca

pozdr sobol

RS232 jest protoko³em asynchronicznym. Ka¿da wysy³ana ramka impulsem "start" synchronizuje zegar odbiornika z nadajnikiem. Dlatego te¿, aby nie dosz³o do przek³amañ, synchronizacja musi przeiegaæ przez czas jednej ramki a nie nieskoñczenie d³ugo. Poniewa¿ zazwyczaj mamy 10 znaków (8bitów+start+stop) i wystarczajace jest by przesuniecie na jednym znaku by³o mniejsze niæ 10% jego czasu trwania (z regu³y czas narastania i opadania zboczy jest tego rzêdu, 8051 próbkuje w 40%, 50% i 60% okna znaku), to w sumie mozna uznaæ, ze odchy³ka zegara do 1% jest dopuszczalna. Teraz drugi krok. Czêstotliwo¶æ taktowania odbiornika b±d¼ nadajnika UARTU to f kwarcu podzielone przez ( podzielnik.razy pewna sta³a ). Dla 8051 jest to f kwarcu / ( podzielnik timera * 12 * 16) (lub 32 zamiast 16). Je¶li teraz znajdziesz taki podzielnik, dla którego szybkosc taktowania wyjdzie do

+- 1% szybkosci urz±dzenia po drugiej stronie to bedzie ok.

William

Zaraz zaraz. Transmisja pecetowa jest asynchroniczna. Odbiornik startuje na bicie startu, po czym probkuje sygnal w srodku bitu przez calych nastepnych ok 10 bitow. Jesli zegary nadajnika i odbiornika sie roznia, to probkowanie moze trafic w inny bit, albo byc niebezpiecznie blisko zbocza i testowac w czasie zmiany.

Tyle ze obliczenia do tego pokazuja ze przy roznicy ok 6% NA PEWNO beda bledy, a przy 2% ciagle nie powinno byc zadnych bledow. Przy wolniejszych transmisjach na krotsze odleglosci mozna nawet zaryzykowac 3 czy 4% roznicy.

J.

czyli aby nie bylo roznic nalezy zastosowac kwarc, ktory przy podziale przez stala liczbe generuje sygnal z czestotliwoscia taka z jaka chcemy przesylac dane i nadajnik i odbiornik wiedza jaka jest to predkosc wiec nie ma przeklaman. Po co wiec korzystac z kwarcow nie dajacych sie podzielic?(do UARTa)

pozdr sobol

Tak.

Tak. Np. gdy zastosujesz kwarc 4 MHz, bedziesz mogl otrzymac nie 57600 bps, ale najblizsza zblizona czestotliwosc (AVR'y taktuja UART dzielac zegar przez 16 lub przez 8 w trybie x2) czyli:

4000000/8/57600 = 8,6805 = okolo 9 4000000/8/9 = 55556 bps -> rzeczywiste otrzymane taktowanie transmisji

Powyzsza predkosc rozni sie od 57600 bps o prawie 4% wiec z duzym prawdopodobienstwem moga byc przeklamania przy transmisji z urzadzeniem dzialajacym na 57600 bps. Natomiast nic nie stoi na przeszkodzie, aby 2 procesory gadaly ze soba z tym samym bitrate'm, 55556 bps albo np.

500000 bps. Nie bedzie przeklaman jezeli predkosc transmisji nie bedzie sie roznic o wiecej niz 2%

Bo np w szufladzie skonczyly sie 11.05MHz, ale widzimy sztuke 13MHz..

DROBNE ROZNICE NIE MAJA ZNACZENIA.

J.

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required