USART w atmega - pytanie - Page 2

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Polish to

Threaded View
Re: USART w atmega - pytanie

Quoted text here. Click to load it

Ale jakiego układu, bo ja na tej stronie w datasheet atmegi 32 mam
rysunek "SPI Master-slave Interconnection"


Marek


Re: USART w atmega - pytanie
W dniu 08.04.2011 21:56, 4CX250 pisze:
Quoted text here. Click to load it
mega8

--
Pozdrawiam
Michoo

Re: USART w atmega - pytanie

Quoted text here. Click to load it


No to nie wiem bo w mega8 mam na tej stronie opis ramki.
Może chodzi ci o rysunek 61 USART Block Diagram który u mnie jest
akurat na 129 stronie?


Marek


Re: USART w atmega - pytanie
Quoted text here. Click to load it

Ale sa _dwa_ rejestry bajtowe. Mmozna wpisac do wyslania dwa bajty,
nie czekajac na transmisje pierwszego.
Inne uP ( np ADuC7026 maja 3 najtowa kolejke FIFO)

Marcin

Re: USART w atmega - pytanie
Quoted text here. Click to load it

Ale polaczone równolegle nie szeregowo. Zobacz na rysunek. Zawartosc
rejestru UDR (transmit) kopiowana jest  _równolegle_ do Transmit Shift
Register czyli do rejestru przesuwnego. Jak widzisz nie wystepuje tu
ladowanie tego rejestru bit po bicie szeregowo.
Z rejestru tego w takt zegara bit po bicie wysuwany jest bajt do Pin
Control i dalej na nózke procka. Miedzu czasie Parity Generator zlicza
bity i na koncu kiedy ostatni bit nadawanego bajtu wyjdzie z rejestru
przesuwnego dokleja swój bit parzystosci.
Gdy ostatni bit wysylanego bajtu opusci rejestr przesuwny kopiowany
jest do tego rejestru drugi bajt  który oczekiwal w rejestrze UDR.

Czy pisze tu gdzies o rejestrze FIFO nadajnika?
"The Transmitter consists of a single write buffer, a serial
Shift Register, parity generator and control logic for handling
different serial frame formats"
Ten rejestr przesuwny ladowany jest równolegle nie szeregowo a idea
rejestru FIFO to first input first output. W rejestrze FIFO dane
dopisywane sa na koncu kolejki. Jezeli ja wpisuje równolegle do
rejestru cale 8 bitów to jak to mozna nazwac dopisywaniem na koncu
kolejki?

Marek


Marek


Re: USART w atmega - pytanie


Nic z ciebie bie bedzie, ani konstruktor ani programista :-)

Proponuje nie karmic trola :-)


Re: USART w atmega - pytanie

Quoted text here. Click to load it

A moze cos konkretnie na temat sie odniesiesz do zapytan jakie ci ciut
wyzej postawilem zanim mnie nazwiesz trollem?

Co? Glowa w piasek? Za trudny temat dla ciebie ?

Marek


Re: USART w atmega - pytanie

Quoted text here. Click to load it

    A kto Ci powiedzial, ze FIFO musi byc szeregowe? Traktuj to jako
urzadzenie I/O z dwubajtowym FIFO. Wkladasz tam dane równolelgle (co akurat
jest normalne), a urzadzenie I/O robi z nimi co ma robic (w tym wypadku
wypycha szeregowo), gdyz taka jest istota tego urzadzenia, gdyby to byl np.
wyswietlacz LCD to wypychal by to na ekran i tez nie bardzo by Cie
interesowalo jak to robi.


Re: USART w atmega - pytanie


Quoted text here. Click to load it

Nie czytacie dokladnie co sie tu pisze.

Oba te rejestry tworza hybryde FIFO. OK.  Ale ja caly czas poruszam
problem tylko jednego rejestru Transmit Shift Register który rejestrem
FIFO nie jest. Jest zwyklym rejestrem przesuwnym. Dopiero polaczony z
rejestrem UDR linia 8 bitowa tworza razem hubryde FIFO.

Rejestr Transmit Shift Register nawet nie miesci dwóch bajtów bo to
rejestr 8 bitowy jest. Przesuwny ale nie FIFO.


Marek


Re: USART w atmega - pytanie

Quoted text here. Click to load it

    Ale z twojego punktu widzenia co to za róznica?
Przyklad z programowania obiektowego, masz jakis obiekt, masz jakies metody
których uzywasz. Ale wazny dla Ciebie jest tylko to co tam wrzucisz na
wejscie i jaki uzyskasz skutek. To w jaki sposób uzyskujesz ten skutek, to
problem osoby piszacej klase. Co wiecej wcale nie jest powiedziane, ze
zawsze bedzie sie to odbywalo tak samo, wazne jest tylko to aby wejscie i
wynik dzialania byl zgodny z oczekiwaniami.



Re: USART w atmega - pytanie
Quoted text here. Click to load it

Sprawa sie juz wyjasnila. W sumie sprawca zamieszania bylem ja gdyz
najpierw myslalem ze to tylko UDR a potem
przekonalem sie ogladajac rysunki ze nie tylko ale nie zmienilem
"zeznan" i wyszlo co wyszlo.
Oczywiscie dla mnie jest to bez róznicy. Chodzilo tylko o zasade co do
nazwania jakiegos fragmentu funkcjonalnego w atmedze
aby ta nazwa byla adekwatna do sprawowanej  funkcji:)
Nie mniej jednak dyskusja byla dla mnie pozyteczna gdyz bez poruszenia
tego tematu nie przeanalizowalbym szczególowo tego dziala datasheeta
:) po to aby wyjasnic zagadke rejestrów UDR oraz przesuwnego.
Co do samego programu to dziala od poludnia juz po pierwszym czytaniu
datasheeta. Wszystko mi ruszylo i mam komunikacje GPSa z atmega.

Marek


Re: USART w atmega - pytanie

Quoted text here. Click to load it

Wiesz atmegi to dosc dziwne procki i przy wielu rzeczach mozna sie
zastanawiac czym sa w istocie.
Ot chocby takie rejestry danych procesora. Czym jest rejestr wszyscy wiemy,
ale w zasadzie mozna je traktowac tez jako komórki pamieci, bo jak wpiszemy
cos do komórki pamieci np. o adresie $0007, to o dziwo pojawi sie to nie
gdzie indziej jak tylko w rejestrze R7. Wiec jeden powie, ze zapisal bajt do
pamieci, ktos inny powie, ze do rejestru i obaj beda mieli racje.

W innym zas miejscu czesc rejestrów I/O procesora obsluguje sie typowo jak
dla obszaru I/O, czyli instrukcjami in, out, inna czesc rejestrów I/O jak
zwykle komórki pamieci i znowu jeden powie, ze to pamiec, ktos inny, ze to
rejestr i znowu w zasadzie kazdy bedzie mial troche racji.


Re: USART w atmega - pytanie

Quoted text here. Click to load it

Wczesniej siedzialem w starszych C'51. Tam jest to samo.
Obszary adresowane bitowo lub bajtowo a w nich rejestry.

Quoted text here. Click to load it

Ja dotychczas tylko w asemblerze sie tluklem i tylkow starych C51 oraz
takich wynalazkach jak np.8055, 8042, 8039.
Od paru tygodni jednak postanowilem zmienic procki na atmega no i
przejsc na C.
Nie wiem dlaczego i czym to idzie ale jak analizuje listingi w asm to
mi szybciej idzie zrozumiec co mial na mysli autor niz w C.
Dochodzilo do takich nieraz sytuacji ze potrafilem np. zdesasemblowac
program telefonu NMT450 po to aby sie dowiedziec jak programuje sie
liczniki petli PLL której akurat datasheetu nie moglem zdobyc.
Jedyne co tylko bylo upierdliwe dla mnie w asm to arytmetyka
zmiennoprzecinkowa. Robilo sie na rózne zamienne sposoby.
No ale trzeba isc z duchem czasu stad moje parcie na avr gcc. Wiem ze
sa lepsi programisci ale ja uparty jestem.

Marek


Re: USART w atmega - pytanie
W dniu 08.04.2011 14:52, 4CX250 pisze:
Quoted text here. Click to load it

I tu własnie kolega popełnił błąd... FIFO nie jest opróżniane "szeregowo
bit po bicie"! Szerokość słowa w FIFO może być dowolna... tutaj jest
fifo 8-bitowe. Czyli kolejne dane wchodzą jedna za drugą i w tej samej
kolejności wychodzą... Ale są to dane 8-bitowe. I wszystkie 8-bitów
wchodzi i wychodzi jednocześnie!! I dlatego to jest FIFO.

    Powiem tak - gdyby nie było tej "poczekalni" fifo, to wówczas mógłbyś
wpisać 1 bajt i dopiero po jego wysłaniu mógłbyś wpisać kolejny.
Wcześniej nie możesz, bo nie masz gdzie :)

    W innych prockach mamy np. 16-bajtowe FIFO... To znaczy, wrzucasz
pierwszy bajt, on idzie do nadawania, a w tym czasie (nim się on wyśle)
możesz wrzucić do UARTA (do FIFO) jeszcze 16 kolejnych bjatów. Wchodzą
one szeregowo, jeden za drugim, ale jako całe bajty, a nie bit po
bicie... .

    W ATMGA masz FIFO, ale "1 bajtowe", przez co możesz wpisać 1 bajt w
czasie nadawania. Faktem jest, że pojećie FIFO jednobajtowe jest trochę
śmieszne, bo FIFO 1-bajtowe niczym nie różni się od stosu (FILO)
jednobajtowego. Dlatego może nie czujesz, gdzie jest ta kolejka FIFO.
Mam nadzieję, że powyższe przykłady Ci to wyjaśnią :).

Pozdrawiam
Konop

Re: USART w atmega - pytanie
Quoted text here. Click to load it



Czuję czuję. Spoko.
W USART dane wysyłane mogą składać się z 5 do 9 bitów więc nawet nie
można mówić o bajcie lecz o bitach, jakims słowie n-bitowym.
Na stronie 140 Datasheet ATmega 32 jest rysunek. Odpowiedz mi co
widzisz?
Czy TRANSMIT SHIFT REGISTER jest rejestrem przesuwnym ładowanym
równolegle, czy ładowanym szeregowo rejestrem FIFO? Czy widzisz w nim
gdzieś wejście szeregowe? Jeżeli tak by było to rejestr UDR (Transmit)
także musiał by być rejestrem przesuwnym z drugim wejściem zegarowym
ale tego nie ma.
Więc?

Marek


Re: USART w atmega - pytanie


NIE KARMIĆ TROLA


Re: USART w atmega - pytanie
Quoted text here. Click to load it

Dokladnie o to chodzi - pierwsze stosujesz jesli chcesz wpisac
kolejny bajt, aby oczekiwal w gotowosci do wyslania,
drugie jak chcesz miec pewnosc ze wszystko wyslano, bo np trzeba
wylaczyc nadajnik RS485.

J.


Site Timeline