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



Teraz jest 28 mar 2024, o 10:29


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: 147
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: 147
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 1 gość


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