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



Teraz jest 28 mar 2024, o 21:25


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 21 ] 
Autor Wiadomość
PostNapisane: 4 wrz 2018, o 11:28 
Offline
Nowy

Dołączył(a): 04 wrz 2018
Posty: 10
Pomógł: 0

Witam!
Mam pytanie, być może bzdetne i niepotrzebnie się tym przejmuje, otóż:
1. Wysyłam adres przez mastera do kilku slave'ów.
2. Slave o odpowiednim adresie wysyła dane do mastera
Pytanie: Czy master zdąży je odebrać? Czy zdąży ustawić swojego MAX485 na odbiór? Czy nie wystąpi coś takiego że slave wyśle jeden bajt a master nie zdąży go odebrać, bo po prostu nie będzie jeszcze ustawiony w funkcje odbioru i ramka ucieknie?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 wrz 2018, o 11:35 
Offline
Moderator
Avatar użytkownika

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

A dlaczego miałby nie zdążyć ? ;) przecież to FullDuplex .... ty się w ogóle nie musisz martwić o to czy zdąży wysłać czy nie - chociaż - hmmm nawet nie ma się o co martwić - bo przecież gdy master wyśle ostatni bajt to od razu w przerwaniu TX zacznie nasłuchiwać - wręcz nie ma możliwości aby jakiś układ odpowiedział wcześniej


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: 4 wrz 2018, o 11:41 
Offline
Nowy

Dołączył(a): 04 wrz 2018
Posty: 10
Pomógł: 0

No to teraz już mogę spać spokojnie, dzięki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 wrz 2018, o 13:05 
Offline
Nowy

Dołączył(a): 04 wrz 2018
Posty: 10
Pomógł: 0

Obrazek

Czy to ma wyglądać mniej więcej tak jak na obrazku?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 wrz 2018, o 13:17 
Offline
Moderator
Avatar użytkownika

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

ooooo jo joj .... a cóż to za konstrukcja w C

if( Uart_receive() == Adres ) ....

sorki ale kompletne - kompletne nieporozumienie ... trzeba jednak sięgnąć do podstaw C i zobaczyć jak się w ogóle posługiwać stringami - a nie wspomnę już o podstawach obsługi UART .... W Bluebooku są podstawy żeby zrozumieć w ogóle buforowanie cykliczne ... jest też namiastka ale ważna odnośnie sterowania kierunkiem przepływu dla RS485 ... a dopiero w Greenbooku jest pokazane jak robić odbieranie danych w oparicu o zdarzenia (EVENTS) - nie wspomnę, że już w wielu - wielu poradnikach czy to przy okazji komunikacji z PC za pomocą Delphi czy dla komunikacji z WiFi i innymi - pokazywałem jak to się robi na podstawie Greenbooka

_________________
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: 4 wrz 2018, o 13:23 
Offline
Nowy

Dołączył(a): 04 wrz 2018
Posty: 10
Pomógł: 0

Dzięki za informacje, bo bluebooka przeczytałem w całości i przećwiczyłem wszystko z niego na własnej stykówce, jednak miałem trzy lata przerwy w programowaniu i się pozapominało. W takim razie wracam do literatury.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 wrz 2018, o 15:48 
Offline
Nowy

Dołączył(a): 04 wrz 2018
Posty: 10
Pomógł: 0

Poczytałem co nieco i wysunąłem takie wnioski:
1. Powinienem stworzyć bufor, w którym zapisywane są dane gdy akurat ten slave nie jest odpytywany przez mastera.
2. Wskaźniki dwa, początku i końca bufora.
3. Przerwanie które zostanie zgłoszone po odebraniu właściwego adresu z RS485 oraz wysyłka danych z bufora.
Czy plan jest dobry?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 wrz 2018, o 16:19 
Offline
Moderator
Avatar użytkownika

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

dużo lepiej .... ale nie ma czegoś takiego jak " Przerwanie które zostanie zgłoszone po odebraniu właściwego adresu z RS485"

przerwania UART służy do odbierania/nadawania pojedynczych znaków, bufor cykliczny głównie odbiorczy jest istotny robi się po to aby tam te odebrane znaki gromadzić, a następnie się tworzy kolejne funkcje, które potrafią te dane czyli np całe ramki (stringi) odczytywać z takiego bufora cyklicznego. I tu w grę mogą wejść np zdarzenia EVENTS (ale tego w aspekcie UART'a nie ma w BB) ... dopiero w GB

Oczywiście można i bezpośrednio w przerwaniu bawić się w parsowanie danych - niektórzy też i tak robią

krótko mówiąc - trzeba stworzyć własny jakiś prosty protokół wymiany danych

_________________
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: 5 wrz 2018, o 16:35 
Offline
Nowy

Dołączył(a): 04 wrz 2018
Posty: 10
Pomógł: 0

Zabrałem się za przerwania od UARTA i kod wygląda następująco:
Obrazek
A przerwanie tak:
Obrazek
wiadomo tam sei(); jest i biblioteki wszystkie zaimplementowane.
Jednak problem jest taki że ustawiłem sobie w innym procku aby transmitował co 1 sekundę po UARCIE jakieś tam dane.
Gdy mam włączone przerwanie zgłaszjące się po odbiorze danych z UARTA a w tym przerwaniu zmianę stanu diody, to czemu ona miga tak szybko jakby świeciła, a nie co jedną sekundę?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 wrz 2018, o 17:42 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Nie odczytujesz w procedurze obsługi przerwania rejestru UDR, więc flaga RXC nie jest zerowana i w konsekwencji procedura jest ponownie wywoływana zaraz po zakończeniu.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 wrz 2018, o 17:51 
Offline
Nowy

Dołączył(a): 04 wrz 2018
Posty: 10
Pomógł: 0

Dzięki, teraz działa



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 wrz 2018, o 18:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1146
Lokalizacja: Kraków
Pomógł: 93

A ja się przyczepię ;-) co to za moda wstawiania kodów programu jako OBRAZEK?! Przecież jest instrukcja, jak poprawnie wstawić kod



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 wrz 2018, o 09:37 
Offline
Nowy

Dołączył(a): 04 wrz 2018
Posty: 10
Pomógł: 0

Mógłby ktoś zerknąć czy prawidłowo podłączyłem MAX485?
Obrazek
RO jest podłączone do RXD procka
DI do TXD
a te dwa środkowe do wspólnego pinu który będzie sterował MAXami.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 wrz 2018, o 10:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1146
Lokalizacja: Kraków
Pomógł: 93

R19 pomiędzy pinem B i GND, R20 pomiędzy A i +5V.
I jeszcze dałbym rezystor podciągający do 5V na pinie Rx. I jeszcze (ale to już nadmiarowo trochę) piny sterujące podciągnąłbym rezystorem do GND. Po to, żeby sterownik nie zajmował linii niepotrzebnie.
Rezystory po 10k powinny być ok.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 wrz 2018, o 11:03 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2561
Pomógł: 126

Wstaw porządnie kody (nie jako obrazki) zanim admin się zdenerwuje.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 wrz 2018, o 11:09 
Offline
Nowy

Dołączył(a): 04 wrz 2018
Posty: 10
Pomógł: 0

Po poprawce, chyba tak to powinno wyglądać, zgadza się?
Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 wrz 2018, o 11:11 
Offline
Moderator
Avatar użytkownika

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

a po co te r19 i r20 ?

tak samo r21 w ogóle niepotrzebny

_________________
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: 6 wrz 2018, o 14:11 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 230
Pomógł: 26

.

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Ostatnio edytowano 7 wrz 2018, o 05:18 przez JarekB, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 wrz 2018, o 15:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

mirekk36 napisał(a):
a po co te r19 i r20 ?

tak samo r21 w ogóle niepotrzebny
Te rezystory użył do Fail-Safe Biasing
http://www.ti.com/lit/an/slyt514/slyt514.pdf
https://www.intersil.com/content/dam/In ... an1986.pdf

Oprócz R21 to pewnie R22 także może być zbędne (zależy do czego jest wpięte).

--
Pozdrawiam,
Robert

------------------------ [ Dodano po: 3 minutach ]

Choć w użytym układzie MAX3468 to ma już to wewnętrznie zaimplementowane, więc masz rację że nie musi :D

"The devices operate from a +5V supply and feature true fail-safe circuitry, which guarantees a logic-high receiver output when the receiver inputs are open or shorted. This enables all receiver outputs on a terminated bus to output logic highs when all transmitters are disabled."



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 wrz 2018, o 19:42 
Offline
Nowy

Dołączył(a): 04 wrz 2018
Posty: 10
Pomógł: 0

Czyli ostatecznie mogę zrezygnować z tych rezystorów tak?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 wrz 2018, o 22:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

kuba_kubek napisał(a):
Czyli ostatecznie mogę zrezygnować z tych rezystorów tak?
Jeżeli stosujesz odbiorniki z wbudowanym zabezpieczeniem Fail-Safe, to rezystory R19 i R20 nie są potrzebne. Ale dla bezpieczeństwa radzę Ci na płytce zostawić na nie miejsca (najwyżej ich nie wlutujesz), bo bardzo często sprzedawane układy jako MAX485 to są tańsze odpowiedniki, które już często nie mają tych funkcjonalności.

--
Pozdrawiam,
Robert



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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