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



Teraz jest 19 kwi 2024, o 15:27


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 11 gru 2012, o 10:35 
Offline
Użytkownik

Dołączył(a): 27 lis 2012
Posty: 289
Pomógł: 6

Zastanawiam się dlaczego o odbiorze bajtu świadczy w UCSRA tylko jedna flaga RXC (" Receive Complete") zaś przy nadawaniu są 2 flagi TXC ("Transmit Complet") i dodatkowo jeszcze UDRE ("Data Register Empty")
Skąd ta asymetria?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2012, o 12:38 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

mg101 napisał(a):
Zastanawiam się dlaczego o odbiorze bajtu świadczy w UCSRA tylko jedna flaga RXC (" Receive Complete") zaś przy nadawaniu są 2 flagi TXC ("Transmit Complet") i dodatkowo jeszcze UDRE ("Data Register Empty")
Skąd ta asymetria?


Dlatego że przy odbieraniu wystarczy TYLKO jedna i już ..... wiąże się ta asymetria troszkę z faktem wspomagania sprzętowego na okoliczność chęci wykorzystania RS485 czyli gdy zachodzi konieczność sterowania linią kierunku przesyłu danych. Zobacz jak w przykładzie z książki - fajnie jest wykorzystane przerwanie "Transmit Complete" ;) .... właśnie do tego - nic dodać nic ująć jak się to przeanalizuje pod tym kątem. Mamy zapewnione sprzętowo poinformowanie nas o końcu nadawania pojedynczego bajtu, i linią kierunku przepływu danych możemy "banglować" przy wysyłaniu KAŻDEGO pojedynczego bajtu - czyli bardzo precyzyjnie.\

Za to UDRE wykorzystujemy TYLKO do nadawania z bufora cyklicznego....

to o to chodzi ;)


Autor postu otrzymał pochwałę

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2012, o 12:53 

Pomógł: 0

Mnie to się tak roi w mojej tępej głowie, że do wysyłania po prostu potrzebujemy tylko jeden bo mamy bufor do którego wrzucamy daną i bziuuuu idzie on (dana) pusty bufor i znowu, dlatego starczy jedna informacja.

A z nadawczym jest już więcej zachodu, bo po pierwsze musimy wiedzieć czy bufor już jest wstanie przyjąć kolejną daną, a po drugie przecież urządzenie na drugim końcu musi odebrać daną, więc nadawanie musi mieć jak by podwójne potwierdzenie, czy bufor jest już pusty i czy dana aby już na pewno została wysłana......
Nie wiem czy dobrze sobie to wyobrażam, ale tak mnie się zdaje.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2012, o 13:02 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

rezasurmar --> ale spokojnie do oprogramowania samego RS232 starczyłoby tylko jedno przerwanie nadawcze ;) obojętnie które ;) ...

jeśli byłoby tylko UDRE - to tak jak tutaj w książce działamy - jak bufor pusty to bziiiiium - jak mówisz i poszło ;)

a gdyby było tylko TXC to wtedy musielibyśmy czekać na zakończenie nadawania i wtedy z kolei bziuuuum ;)

ale weź teraz rozpatrz w jednym i w drugim przypadku jakbyś robił sterowanie kierunkiem przepływu - tzn też da radę - ale w takim przypadku gdy są dwa - jest zdecydowanie wygodniej.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2012, o 13:06 

Pomógł: 0

Nooo no, chodziło mi o wytłumaczenie samego sensu istnienia dwóch, bo, że jak by nie było to wiem, że by się dało ;)


Autor postu otrzymał pochwałę


Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 21 wrz 2014, o 12:55 
Offline
Nowy

Dołączył(a): 21 wrz 2014
Posty: 2
Pomógł: 0

Szczerze mówiąc rozumiem pytanie mg101, ale nie rozumiem odpowiedzi. Na przykład rezasurmar napisał odpowiedź tak jakby wysyłanie i nadawanie były odwrotnymi czynnościami a nie tą samą czynnością. Trudno mi to zrozumieć. Dlatego przyszedłem z własną odpowiedzią:

Do wysyłania jak i do odbierania są używane dwa rejestry - UDT (USART Data Register) który jest dostępny pod adresem 0x2C oraz USART Shift Register (SR), który nie jest dostępny. Dane wysyłane są zawsze przenoszone z UDT to SR i wysyłane bit po bicie, a dane odbierane zawsze są bit po bicie do SR a następnie przenoszone do UDT. Oba rejestry są 8 bitowe. Można myśleć o SR i UDT jak o 2 bajtowej kolejce.

Przy wysyłaniu:
UDRE sygnalizuje że UDR jest pusty
TXR sygnalizuje że SR i UDR są puste

Przy odbieraniu:
RXC sygnalizuje że UDR nie jest pusty

Przy wysyłaniu UDRE jest używany aby sprawidzić czy da się "wepchnąć" kolejny bajt do kolejki wysłania.

TXR jest tylko używany przy wyłączaniu lub usypianiu mikrokontrolera aby sprawdzić czy cała kolejka wysyłania jest już pusta (czy wszystko zostało wysłane z SR), aby być pewnym że nie straci się danych czekających na wysłanie w SR.

Wyobraźmy sobie analogiczną sytuacja przy odbieraniu - wyłączamy mikrokontroler gdy w SR znajdują się odebrane dane które jeszcze nie przeszły do UDR. Nie istnieje analogiczny bit do UDRE dla obierania więc nie mamy możliwości sprawdzić czy nie stracimy tego bajtu.

Jednak pomyślmy o tym z praktycznego punktu widzenia - wyłączamy mikrokontroler, gdy już nie spodziewamy się nadejścia ważnych danych - nie? Jest to mało ważna sytuacja dlatego konstruktorzy mikrokontrolerów nie wbudowali odpowiednika UDRE do odbioru.

I to by było na tyle.



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: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 5 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