RTV forum PL | NewsGroups PL

Różnice między przerwaniami UDRE a TXC w USART w ATmega wyjaśnienie dla programistów

USART w atmega - pytanie

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Różnice między przerwaniami UDRE a TXC w USART w ATmega wyjaśnienie dla programistów

Goto page 1, 2, 3  Next

4CX250
Guest

Fri Apr 08, 2011 12:12 pm   



W dataschicie wyczytałem:
UDRE: USART Data Register Empty
TXC: USART Transmit Complete

oraz uchwyty przerwań
UDR Empty Handler
USART TX Complete Handler

Czym się tak naprawdę róznią?
Pierwsze przerwanie jest skutkiem bitu UDRE: USART Data Register Empty czyli
wtedy kiedy data register staje się pusty a drugie przerwanie to skutek
bitu TXC: USART Transmit Complete czyli gdy transmisja jest kompletna.
Mam rozumieć że pierwsze przerwanie UDRE wystąpi wczesniej niż przerwanie
TXC gdyż opróznienie bufora występuje wcześniej niż wysłanie kompletnej
ramki z bitem stopu i parzystości co ma miejsce w drugim przerwwaniu?
Czy jest jakieś uzasadnione za i przeciw w stosowaniu pierwszego lub
drugiego? Wydaje mi się że pierwszy przypadek daje nam ciut lepszą ciągłość
w wysyłaniu strumienia większej ilości bajtów.

???


Marek

AK
Guest

Fri Apr 08, 2011 12:19 pm   



Quote:
drugiego? Wydaje mi się że pierwszy przypadek daje nam ciut lepszą
ciągłość w wysyłaniu strumienia większej ilości bajtów.

Tak bo tam jest jednobajtowe fifo.

Pozdr
MiSter

J.F.
Guest

Fri Apr 08, 2011 12:46 pm   



Użytkownik "4CX250" <taunusmtv@poćta.łonet.pl> napisał
Quote:
W dataschicie wyczytałem:
UDRE: USART Data Register Empty
TXC: USART Transmit Complete

Czy jest jakieś uzasadnione za i przeciw w stosowaniu pierwszego
lub drugiego? Wydaje mi się że pierwszy przypadek daje nam ciut
lepszą ciągłość w wysyłaniu strumienia większej ilości bajtów.

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.

4CX250
Guest

Fri Apr 08, 2011 12:52 pm   



Użytkownik "AK" <_usuncieTo_@wp.pl> napisał w wiadomości
news:4d9efd43$0$2498$65785112@news.neostrada.pl...
Quote:
drugiego? Wydaje mi się że pierwszy przypadek daje nam ciut lepszą
ciągłość w wysyłaniu strumienia większej ilości bajtów.

Tak bo tam jest jednobajtowe fifo.

No nie do końca FIFO gdyż FIFO z założenia jest ładowany i opróżniany
_szeregowo_ bit po bicie pierwszy wszedł pierwszy wyjdzie a tu w atmedze
wpis do tego rejestru nie jest szeregowy leczrównolegle 8 bitów a
oprózniany jest tylko szeregowo więc po prostu jest to zwykły rejestr
przesuwny.
Tak gwoli ścisłości.

Marek

Lelek@
Guest

Fri Apr 08, 2011 1:02 pm   



"4CX250" <taunusmtv@poćta.łonet.pl> wrote in message
news:4d9f051d$0$2458$65785112@news.neostrada.pl...
Quote:
Użytkownik "AK" <_usuncieTo_@wp.pl> napisał w wiadomości
news:4d9efd43$0$2498$65785112@news.neostrada.pl...
drugiego? Wydaje mi się że pierwszy przypadek daje nam ciut lepszą
ciągłość w wysyłaniu strumienia większej ilości bajtów.

Tak bo tam jest jednobajtowe fifo.

No nie do końca FIFO gdyż FIFO z założenia jest ładowany i opróżniany
_szeregowo_ bit po bicie pierwszy wszedł pierwszy wyjdzie a tu w atmedze
wpis do tego rejestru nie jest szeregowy leczrównolegle 8 bitów a
oprózniany jest tylko szeregowo więc po prostu jest to zwykły rejestr
przesuwny.
Tak gwoli ścisłości.

Gwoli ścisłości fifo może być równoległe, bajtowe.

4CX250
Guest

Fri Apr 08, 2011 1:10 pm   



Użytkownik "Lelek@" <rennes@iw.iw> napisał w wiadomości
news:inn11b$8cu$1@opal.futuro.pl...
Quote:

"4CX250" <taunusmtv@poćta.łonet.pl> wrote in message
news:4d9f051d$0$2458$65785112@news.neostrada.pl...
Użytkownik "AK" <_usuncieTo_@wp.pl> napisał w wiadomości
news:4d9efd43$0$2498$65785112@news.neostrada.pl...
drugiego? Wydaje mi się że pierwszy przypadek daje nam ciut lepszą
ciągłość w wysyłaniu strumienia większej ilości bajtów.

Tak bo tam jest jednobajtowe fifo.

No nie do końca FIFO gdyż FIFO z założenia jest ładowany i opróżniany
_szeregowo_ bit po bicie pierwszy wszedł pierwszy wyjdzie a tu w atmedze
wpis do tego rejestru nie jest szeregowy leczrównolegle 8 bitów a
oprózniany jest tylko szeregowo więc po prostu jest to zwykły rejestr
przesuwny.
Tak gwoli ścisłości.

Gwoli ścisłości fifo może być równoległe, bajtowe.

Piszesz zupełnie o czyms innym. Transmisja USART jest bitowa nie bajtowa i
rejestr jest bitowy a nie bajtowy.

Marek

Lelek@
Guest

Fri Apr 08, 2011 1:24 pm   



"4CX250" <taunusmtv@poćta.łonet.pl> wrote in message
news:4d9f0945$0$2439$65785112@news.neostrada.pl...

Quote:
Piszesz zupełnie o czyms innym. Transmisja USART jest bitowa nie bajtowa i
rejestr jest bitowy a nie bajtowy.

Jest 1 bajtowy rejestr a za nim dopiero SR opróżniany szeregowo i ten 1 bajt
to pseudo fifo.

Masz albo flagę że pusty SR albo że puste fifo w stronę Tx co oznacza, że
dane zostały przeładowane z rejestru do SR.
Kurde napisz sobie te kilka linijek assemblera i przećwicz na oscyloskopie
na wolnej prędkości uartu. Wystaw sobie sygnały od tych flag na nogach
portu.i patrz co się dzieje.
Zapisz raz dwa bajty w 2 kolejnych cyklach maszynowych i może pojmiesz o co
chodzi.
To fifo jest po to żebyś miał całe 9, 10 czy 11 bitów czasu na przeładowanie
nadajnika kolejnym bajtem, żeby nie robiły się dziury między bajtami.

4CX250
Guest

Fri Apr 08, 2011 1:31 pm   



Użytkownik "Lelek@" <rennes@iw.iw> napisał w wiadomości
news:inn29r$b96$1@opal.futuro.pl...
Quote:

"4CX250" <taunusmtv@poćta.łonet.pl> wrote in message
news:4d9f0945$0$2439$65785112@news.neostrada.pl...

Piszesz zupełnie o czyms innym. Transmisja USART jest bitowa nie bajtowa
i rejestr jest bitowy a nie bajtowy.

Jest 1 bajtowy rejestr a za nim dopiero SR opróżniany szeregowo i ten 1
bajt to pseudo fifo.

Ale zrozum człowieku że ty pisałeś o rejestrze bajtowym jako bajt za bajtem.
Palnąłeś o rejestrze fifo a to co jest w atmedze nie jest żadnym fifo. Nawet
nie pseudo fifo.
To jest zwykły rejestr przesuwny 8-bitowy z presetem równoległym.
Czy masz tam choćby jedno wejście bitowe szeregowe do niego za pomocą
którego bitu po bicie jesteś go w stanie całego załadować? No nie, więc o
czym ty piszesz?

Marek

Lelek@
Guest

Fri Apr 08, 2011 1:45 pm   



"4CX250" <taunusmtv@poćta.łonet.pl> wrote in message
news:4d9f0e4e$0$2460$65785112@news.neostrada.pl...

Quote:
To jest zwykły rejestr przesuwny 8-bitowy z presetem równoległym.

Tam są 2 rejestry. Jeden jako poczekalnia, o którym mówimy fifo, a drugi
przesuwny ze skrajnym bitem wystawionym do pinu. Tam są 2 rejestry
mieszczące w sumie 2 bajty.

AK
Guest

Fri Apr 08, 2011 2:10 pm   



Quote:
Ale zrozum człowieku że ty pisałeś o rejestrze bajtowym jako bajt za
bajtem.
Palnąłeś o rejestrze fifo a to co jest w atmedze nie jest żadnym fifo.
Nawet nie pseudo fifo.

Gwoli ścisłości kolego 4CX250, Atmel nazywa to FIFO, wiec stosujmy
nazewnictwo producenta:
"...The two Buffer Registers operate as a circular FIFO buffer....."

Lelek@
Guest

Fri Apr 08, 2011 2:13 pm   



"AK" <_usuncieTo_@wp.pl> wrote in message
news:4d9f177f$0$2437$65785112@news.neostrada.pl...
Quote:
Ale zrozum człowieku że ty pisałeś o rejestrze bajtowym jako bajt za
bajtem.
Palnąłeś o rejestrze fifo a to co jest w atmedze nie jest żadnym fifo.
Nawet nie pseudo fifo.

Gwoli ścisłości kolego 4CX250, Atmel nazywa to FIFO, wiec stosujmy
nazewnictwo producenta:
"...The two Buffer Registers operate as a circular FIFO buffer....."

Ale to Rx. Tx ma 1 bajt

Michoo
Guest

Fri Apr 08, 2011 2:52 pm   



W dniu 08.04.2011 15:31, 4CX250 pisze:
Quote:
Ale zrozum człowieku że ty pisałeś o rejestrze bajtowym jako bajt za
bajtem.
Tak działa fifo - z jednej strony bajty wchodzą a z drugiej wychodzą.


Quote:
Palnąłeś o rejestrze fifo a to co jest w atmedze nie jest żadnym fifo.
Jest FIFO. Doucz się Wink


Quote:
Nawet nie pseudo fifo.
Nawet nie pseudo, bo klasyczne, ale krótkie.


Quote:
To jest zwykły rejestr przesuwny 8-bitowy z presetem równoległym.
Jest przesuwny rejestr wyjściowy do którego dane trafiają z rejestru

danych. Dzięki temu możesz wyekspediować do wysyłki DWA bajty jeden po
drugim.


Quote:
Czy masz tam choćby jedno wejście bitowe szeregowe do niego za pomocą
którego bitu po bicie jesteś go w stanie całego załadować? No nie, więc
o czym ty piszesz?
A ty wiesz o czym piszesz? Jesteś agresywny wobec kogoś kto próbuje Ci

pomóc a przy tym Twoja wiedza przedstawia poziom gruntu... Jednym słowem
zachowujesz się jak klasyczny lamer.

--
Pozdrawiam
Michoo

Konop
Guest

Fri Apr 08, 2011 3:18 pm   



W dniu 08.04.2011 14:52, 4CX250 pisze:
Quote:
No nie do końca FIFO gdyż FIFO z założenia jest ładowany i opróżniany
_szeregowo_ bit po bicie

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ą Smile.

Pozdrawiam
Konop

Marcin
Guest

Fri Apr 08, 2011 3:53 pm   



Quote:

Gwoli cis o ci fifo mo e by r wnoleg e, bajtowe.

Piszesz zupe nie o czyms innym. Transmisja USART jest bitowa nie bajtowa i
rejestr jest bitowy a nie bajtowy.

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

RoMan Mandziejewicz
Guest

Fri Apr 08, 2011 4:15 pm   



Hello Lelek,

Friday, April 8, 2011, 4:13:45 PM, you wrote:

Quote:
Ale zrozum człowieku że ty pisałeś o rejestrze bajtowym jako bajt za
bajtem.
Palnąłeś o rejestrze fifo a to co jest w atmedze nie jest żadnym fifo.
Nawet nie pseudo fifo.
Gwoli ścisłości kolego 4CX250, Atmel nazywa to FIFO, wiec stosujmy
nazewnictwo producenta:
"...The two Buffer Registers operate as a circular FIFO buffer....."
Ale to Rx. Tx ma 1 bajt

W USART'cie? Niemożliwe - musi mieć co najmniej dwa bajty. Mogę sobie
wyobrazić UARTa na jednym rejestrze - USARTa nie da rady.


--
Best regards,
RoMan mailto:roman@pik-net.pl
Nowa strona: http://www.elektronika.squadack.com (w budowie!)

Goto page 1, 2, 3  Next

elektroda NewsGroups Forum Index - Elektronika Polska - Różnice między przerwaniami UDRE a TXC w USART w ATmega wyjaśnienie dla programistów

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map