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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 11 lip 2025, o 19:44


    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: 27415
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 27415
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 27415
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 1174
    Lokalizacja: Kraków
    Pomógł: 94

    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: 1174
    Lokalizacja: Kraków
    Pomógł: 94

    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: 2596
    Pomógł: 129

    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: 27415
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 232
    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 14 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