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 13 kwi 2025, o 15:03


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
    Autor Wiadomość
    PostNapisane: 17 mar 2021, o 23:31 
    Offline
    Moderator
    Avatar użytkownika

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

    edwardkraweznik napisał(a):
    Kod działa tak jak ma działać(nie blokuje procesora). Czy moje podejście jest poprawne?

    Jak to nie blokuje jak blokuje. Na krócej ale niestety paskudnie blokuje. Dlatego odbiór danych przez UART robi się za pomocą przerwań od UART'a i to najlepiej z użyciem bufora cyklicznego. Dopiero wtedy masz w 100% nieblokującą obsługę.

    Już nie wspomnę o delayach w pętli głównej które niszczą nieblokujący charakter ewentualnych innych rozwiązań.

    Polecam Bluebooka https://atnel.pl/mikrokontrolery-avr-jezyk-c.html - gdzie będziesz mógł zobaczyć jak się do tego podchodzi a szczególnie jak zacząć pisać nieblokujące programy bez żadnych delayów.

    _________________
    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: 18 mar 2021, o 07:59 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2595
    Pomógł: 128

    Źródła odpalisz, poza tym teraz to chyba dostajesz time linka do ściągnięcia materiałów z sieci.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 mar 2021, o 09:40 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 29 lis 2019
    Posty: 145
    Pomógł: 37

    Nieblokujący odbiór bez wykorzystania przerwań:

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    W main loop:

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Main loop musi się kręcić wystarczająco szybko by nadążać za odbieranymi znakami. Na przykład dla nieprzerwanej transmisji 115kbps nowy znak pojawia się co 86us (694 takty przy zegarze 8Mhz) a więc main loop musi trwać krócej by nie zachodziło gubienie znaków.

    _________________
    Think for yourself and question authority.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 mar 2021, o 14:00 
    Offline
    Użytkownik

    Dołączył(a): 05 sty 2015
    Posty: 393
    Lokalizacja: Mielec
    Pomógł: 14

    Witam.
    Fofex - wyliczenia spoko, a co z funkcjami które napiszesz i będą wykonywać dłuższe "prace"?
    Co chwila będziesz if'a wkładał w każdą funkcje by sprawdzić czy coś nadeszło na uart? Zgubisz/stracisz znaki z uart to pewne.

    Mirek już wskazał prawidłowe podejście do tematu.

    Pozdrawiam



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 mar 2021, o 14:31 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 29 lis 2019
    Posty: 145
    Pomógł: 37

    Po co na siłę lansować "jedynie słuszne" rozwiązanie w przypadkach gdy polling jest wystarczający?
    Ale tu nie o to chodzi, a o pokazanie pewnego, często wykorzystywanego, schematu budowania aplikacji tj. symulacji wielozadaniowości.
    W uzupełnieniu. Można zauważyć, że funkcja odbiorcza ma poważną wadę tj. nie pozwala na odebranie danej o wartości zero. Znacznie lepiej zrobić tak:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    albo krócej i czytelniej
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    main loop
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Autor postu otrzymał pochwałę

    _________________
    Think for yourself and question authority.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 mar 2021, o 14:39 
    Offline
    Moderator
    Avatar użytkownika

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

    fofex napisał(a):
    Po co na siłę lansować "jedynie słuszne" rozwiązanie w przypadkach gdy polling jest wystarczający?


    pooling dla RS232 jest właśnie NAJCZĘŚCIEJ Niewystarczający i zawodzi gdy tylko pojawi się byle dłuższe opóźnienie, szczególnie gdy ktoś zaczyna z tematem. Dlatego taki sposób to może się czasem przydać komuś kto od lat już siedzi i programuje czując dokładnie całą konstrukcję programu.

    Poza tym tu nie chodzi o żadne bezsensowne "lansowanie" tylko o zwrócenie uwagi jak należy to porządnie zrobić - czyli na przerwaniach i z buforami cyklicznymi, dzięki czemu można odbierać i w trybie ASCII i BINarnym. A nie takie protezy poolingowe.


    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  
    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 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