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 10:46


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 
    Autor Wiadomość
    PostNapisane: 2 wrz 2012, o 07:37 
    Offline
    Moderator
    Avatar użytkownika

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

    Antystatyczny napisał(a):
    Ok, rozumiem. Tę opcję noblock zmieniamy w kodzie programu, czy w opcjach kompilatora?


    Oj, oj , oj ....... oj

    Tylko tyle podpowiem na temat sugestii zmiany opcji noblock, jak opisał kolega wyżej. Rzeczywiście taka istnieje i robi się ją np tak:

    Kod:
    ISR( INT0_vect, ISR_NO_BLOCK ) {

    }


    ale jeśli kolega chce w miarę szybko poradzić sobie z problemem opisanym wyżej, to niech na długi czas zapomni w ogóle o istnieniu tej opcji. Dlaczego ? Dlatego, że nawet zaawansowane osoby bardzo ale to bardzo rzadko z niej korzystają. A dlaczego ? A dlatego, że odblokowanie przerwań wewnątrz innych przerwań to pogoń za kłopotami jak po równi pochyłej i w postępie geometrycznym - jeśli do końca nie rozumiemy o co tu chodzi i jak to działa. Dlatego jak ktoś już wie - to także z ogromną dozą ostrożności z tego korzysta ....

    w czym rzecz ....

    używanie tej opcji podczas przerwań nie może a BĘDZIE się wiązało z o wiele większym zużyciem stosu w trakcie działania programu. Pomyśl sobie, KAŻDE wejście w przerwanie - to poza odłożeniem na stos wykonanie całego PROLOGU, którego programista początkujący w C w ogóle nie widzi i nie zdaje sobie z niego sprawy....

    ok co to jest PROLOG ale też EPILOG jeśli chodzi o makra ISR() ????

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


    tymczasem to jest dodatkowy i czasem spory kod w asemblerze, który ma za zadanie na początku odłożyć na stos wszystkie używane rejestry a przy wyjściu je odłożyć .... oczywiście to tylko przykładowy prolog i eplilog, ale mogą one być znacznie dłuższe ....

    to już chyba zaczyna coś ci mówić ??? hmmm???

    jeśli teraz po wejściu w takie przerwanie i zwiększenie stosu o wszystko co jest w prologu, odblokujesz przerwania i wykona się kolejne - to znowu kolejny prolog - a niech się wykona jeszcze kolejne i jeszcze kolejne .... eeeh szkoda mówić ... jeśli i tego aspektu nie przewidzisz - ale nie będę tu o nim teraz pisał ..... to na końcu będzie to mniej więcej tak jakby dać dziecku do zabawy żyletki. Nie chcę broń boże mówić że jesteś dzieckiem i mam nadzieję że tak nie odbierasz moich słów, ponieważ ja czuję się podobnie gdy przychodzi mi czasem pomysł aby skorzystać z ISR_NO_BLOCK ;) .... najczęściej, w takich przypadkach zaczynam od nowa myśleć nad algorytmem programu i na końcu okazuje się że to jeszcze nie ten czas aby trzeba było z tego skorzystać

    SŁOWO NA NIEDZIELĘ:

    zastosowanie ISR_NO_BLOCK - w takim kodzie o jakim ty napisałeś nawet tylko teoretycznie w pierwszym poście - to po prostu (jak dla mnie byłoby CRAZY) .... zapewniam cię, że nie ma NAJMNIEJSZEJ potrzeby i nigdy nie dojdzie do sytuacji żeby coś ci się nie udało w nim bez użycia tej opcji.... a zresztą - spójrz sobie na to:

    http://mirekk36.blogspot.com/2011/09/fa ... mow-z.html

    albo kurczę na

    rozdział "wstęp do systemów czasu rzeczywistego" który masz przecież w książce. ZOBACZ ile tam rzeczy jest naraz robionych - i pokaż mi chociaż jedno przerwanie z ISR_NO_BLOCK .... mam nadzieję, że dobrze to wyjaśniłem ?

    _________________
    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: 2 wrz 2012, o 07:59 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

    Zatem jeśli stosuje się dobry styl programowania to nie ma potrzeby korzystać z ISR_NO_BLOCK. Podam przykład.
    Dobrze:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

    _________________
    Dragonus Cracovus: Biomagia



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 8 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:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO