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 w 2025? 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 17 kwi 2025, o 17:52


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
    Autor Wiadomość
    PostNapisane: 27 mar 2014, o 19:21 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 sty 2014
    Posty: 243
    Pomógł: 9

    Witam

    Zrobiłem sobie na podstawie niebieskiej książki sterownik oparty na ENC28J60. Generalnie działa, ma 2 funkcje jedna przerobiona z set_led, która załącza przekaźnik. Druga opcja przerobiona z get_led zwracająca stan stycznika. Wszystko ładnie działa z programem TestyUDP :) produkcji pana Mirka. Jak w programie kliknę LED1 przekaźnik się załącza jak kliknę sprawdź otrzymuję na kontrolce LED1 stan faktyczny stycznika.

    Chciałem pójść krok dalej i stworzyć komunikację pomiędzy takimi 2 sterownikami. Jeden by wysyłał informację do drugiego by się załączał po zwarciu powiedzmy switcha i zapalał diodę (w tym przypadku załączał przekaźnik) jeżeli zdalny sterownik wykryłby załączenie stycznika.
    I tu pojawia się problem, bo nie mogę wysterować zdalnego przekaźnika.
    W programie klikanie LED1 powoduje wysłanie ramek: [0^1^0] lub [0^1^1] i komunikat np: ramka --> [0^1^1].
    Na chłopski rozum wyedytowałem kawałek kodu:
    Kod:
    void mk_send_udp(uint8_t nr_klawisza) {
        char str[30];
        sprintf(str,"0^1^1");
        send_udp(buf, str, strlen(str), 1100, farip[ip_pc], 21000);
    }

    po skierowaniu tego do programu otrzymuję: ramka <-- [0^1^1], czyli można powiedzieć że identycznie jak sam program wysyła tylko strzałka kierunkowa jest inaczej zwrócona bo w końcu to program odbiera a nie nadaje.
    To samo wysłane do zdalnego sterownika nie działa.
    Co jest nie tak, że program interpretuje to prawidłowo, sterownik nie :(

    Pozdrawiam i liczę na wszelkie wskazówki.

    _________________
    http://www.ate-zbaszyn.eu



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 mar 2014, o 19:56 
    Offline
    Moderator
    Avatar użytkownika

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

    a może niepotrzebnie wysyłasz te nawiasy kwadratowe ? .... tak z pamięci tylko coś podpowiadam - bo szczegółów nie pamiętam a nie mam teraz jak do kodu zajrzeć

    _________________
    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: 27 mar 2014, o 20:03 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 sty 2014
    Posty: 243
    Pomógł: 9

    Już po kłopocie panie Mirku. Jak zwykle diabeł tkwi w szczegółach.
    Nie na ten port informacje wysyłałem.
    Sterownik nasłuchuje na porcie 1200 natomiast wg przykładu z książki odpowiedź z funkcji mk_send_udp na zupełnie inny.

    Sorry za małe zamieszanie, ale znów czegoś ciekawego się nauczyłem :)

    _________________
    http://www.ate-zbaszyn.eu



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 mar 2014, o 00:44 
    Offline
    Moderator
    Avatar użytkownika

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

    Cieszę się że ruszyła taka komunikacja pomiędzy prockami ;) .... daje ona sporo fajnych możliwości

    _________________
    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: 29 mar 2014, o 20:25 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 sty 2014
    Posty: 243
    Pomógł: 9

    No daje daje.
    W tej chwili myślę nad sensowną komunikacją pomiędzy tymi sterownikami. Tak by sygnał był wysyłany powiedzmy co około sekundę w każdą ze stron, co by za bardzo sieci nie zapychać masą pakietów.
    Wydaje mi się, że najsensowniejsze będzie uruchomienie timera do tego celu. Chyba, że ma pan ciekawszy pomysł.

    _________________
    http://www.ate-zbaszyn.eu



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 mar 2014, o 07:22 
    Offline
    Moderator
    Avatar użytkownika

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

    oczywiście że timera - ale ponieważ obsługa eth jest reaizowana tu w poolingu to zwykły timer programowy powinien z pewnością wystarczyć

    _________________
    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: 31 mar 2014, o 21:05 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 sty 2014
    Posty: 243
    Pomógł: 9

    Co do timera to miałbym jedno pytanie. Załóżmy, że mam procesor np atmega32 z kwarcem 16MHz. Chciałbym odmierzać czas co sekundę. Po podaniu tych założeń do AVR Timer Kalkulator otrzymuję, że w trybie CRC do OCR powinienem wpisać wartość 15624 na co Eclipse się burzy: large integer implicitly truncated to unsigned type. Ja tą wartość zmniejszyłem to 155 i dodałem sobie zmienną licznik. Teraz timer po przepełnieniu inkrementuje zmienną licznik aż dojdzie do 100. Wtedy następuje zerowanie zmiennej licznik i wykonanie określonych funkcji. Mam pytanie czy takie podejście jest prawidłowe?

    _________________
    http://www.ate-zbaszyn.eu



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 31 mar 2014, o 21:29 
    Offline
    Moderator
    Avatar użytkownika

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

    No a jak ty byś chciał np do timera 8 bitowego wpisywać liczbę większą niż 255 ;) ??

    poza tym daj sobie spokój z odmierzaniem SEKUNDY przez timer sprzętowy bo to jakaś mega strata :(

    poczytaj sobie w Bluebooku o timerach programowych ;)

    rozdział szczególnie:

    "wstęp do systemów czasu rzeczywistego"

    jak to zaskoczysz to wtedy dopiero zobaczysz ;) .... będzie odjazd

    _________________
    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  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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