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



Teraz jest 25 kwi 2024, o 11:13


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 21 paź 2016, o 20:16 
Offline
Użytkownik

Dołączył(a): 22 kwi 2015
Posty: 50
Pomógł: 0

Witam. W jaki sposób można globalnie wyłączyć a następnie włączyć przerwania, tak aby nie utracić informacji o aktywnych przerwniach przed wyłączeniem, tzn. jak tylko na chwilę wyłączyć przerwania a po chwili powrócić do stanu przed wyłączeniem?

Czy dobrze będzie jeśli odczytam wartości z rejestrów NVIC_ICER, zapisze gdzieś w zmiennej, następnie wszystkie poustawiam (ustawienie powoduje wyłączenie) a gdy będę chciał je włączyć to wartośc zapisanej zmiennej przypisze do NVIC_ISER ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2016, o 20:23 
Offline
Użytkownik

Dołączył(a): 26 lip 2012
Posty: 291
Lokalizacja: okolice Opola
Pomógł: 20

A zastanów się czy jest to konieczne. W ARM jako tako nie stosuje się raczej wyłączania przerwań.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2016, o 20:41 
Offline
Użytkownik

Dołączył(a): 22 kwi 2015
Posty: 50
Pomógł: 0

Być może masz rację, chociaż jedna z not od ST mówi inaczej :-)
Obrazek

I własnie wolałbym postąpić zgodnie z tą notą.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2016, o 00:06 
Offline
Użytkownik

Dołączył(a): 26 lip 2012
Posty: 291
Lokalizacja: okolice Opola
Pomógł: 20

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


Wyłączenie przerwań nie kasuje ich, więc po włączeniu, aktywne będą od razu obsłużone. Pamiętaj tylko, żeby kod pomiędzy tymi instrukcjami był maksymalnie krótki, bo jeżeli przylecą np 2 znaki od UARTU, to odczytany zostanie tylko jeden ponieważ przerwania nie są w żaden sposób kolejkowane.


Autor postu otrzymał pochwałę

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2016, o 13:29 
Offline
Użytkownik

Dołączył(a): 22 kwi 2015
Posty: 50
Pomógł: 0

Dzięki :-).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2016, o 16:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lut 2014
Posty: 39
Lokalizacja: Kraków
Pomógł: 0

krafin napisał(a):
A zastanów się czy jest to konieczne. W ARM jako tako nie stosuje się raczej wyłączania przerwań.


Mylisz się stosuje się m.in przy obsłudze stosu TCP/IP, w innych przypadkach wystarczają priorytety.



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 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO