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 4 maja 2025, o 17:13


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
    Autor Wiadomość
    PostNapisane: 24 kwi 2021, o 22:50 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 02 kwi 2014
    Posty: 150
    Pomógł: 1

    Hej,

    Proszę o wyjaśnienie dlaczego tak się dzieje :)

    Dla przejrzystości problemu zamieszczam tylko najważniejsze fragmenty kodu.

    1. Pierwszy przypadek

    Wybieram opcje przerwania: jednen priorytet grupowy i 16 podpriorytetów (0 bits for pre-emption priority, 4 bits for subpriority)

    Ustawiam sobie przerwanie zewnętrzne z pinu PA2 wraz z ustawieniem subpriority na 10
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    oraz konfiguruje przerwanie UARTa z subpriority na 0 (w tej samej grupie pre-emption co i przerwanie od PA2, ale przerwanie od UARTA ma większy podpriorytet niż przerwanie od PA2)
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    I teraz w przerwaniu od PA2 uruchamiam funkcję, która wysyła dane po UARTcie (funkcja wzięta z BB + GB) w której uruchamiane jest przerwanie wysyłające dane -> patrz linijka 15
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    i niestety program się "zawiesza" na: while ( tmp_head == UART_TxTail ){} -> linijka 7.


    2. Drugi przypadek

    Wybieram opcje przerwania: 2 priorytety grupowe i 8 podpriorytetów (1 bits for pre-emption priority, 3 bits for subpriority)

    Ustawiam sobie przerwanie zewnętrzne z pinu PA2 wraz z ustawieniem pre-emption = 1 i subpriority = 10
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    oraz konfiguruje UARTa z pre-emption = 0 i subpriority = 0 (więc przerwanie UART ma większy priorytet główny niż przerwanie od PA2)

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


    I w tym przypadku program się nie zawiesza, komunikacja UART działa i przerwania od PA2 są poprawnie obsługiwane

    Reasumując
    Obrazek



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 kwi 2021, o 07:55 
    Offline
    Użytkownik
    Avatar użytkownika

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

    Przeczytaj uważniej jak działa "subpriority" a zrozumiesz.

    _________________
    Think for yourself and question authority.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 kwi 2021, o 08:11 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 02 kwi 2014
    Posty: 150
    Pomógł: 1

    Szukałem, czytałem ale nie zrozumiałem dlatego na forum się odezwałem :) nie róbmy z tego forum drugiej elektrody, czyli "Sprawdź w googlach" :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 kwi 2021, o 08:26 
    Offline
    Użytkownik
    Avatar użytkownika

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

    Podrozdział "Preempt Priority and Supbpriority": https://community.arm.com/developer/ip- ... priorities

    _________________
    Think for yourself and question authority.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 kwi 2021, o 08:49 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lis 2015
    Posty: 219
    Pomógł: 20

    Pewnie masz debuger wiec sprawdz dkaczego wiesza sie na tym
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Wyglada jakby nie bylo miejsca w buforze



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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