-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.P
OSTED!not-for-mail
From: "Grzegorz Niemirowski" <g...@p...onet.pl>
Newsgroups: pl.misc.elektronika
Subject: Re: AVR i inne 8-bitowce a modyfikacja zmiennych globalnych w przerwaniach
Date: Tue, 14 Oct 2014 22:39:10 +0200
Organization: ATMAN - ATM S.A.
Lines: 30
Message-ID: <m1k1lf$anj$1@node2.news.atman.pl>
References: <m1k10q$a38$1@node2.news.atman.pl>
NNTP-Posting-Host: 031011139062.warszawa.vectranet.pl
Mime-Version: 1.0
Content-Type: text/plain; format=flowed; charset="UTF-8"; reply-type=response
Content-Transfer-Encoding: 8bit
X-Trace: node2.news.atman.pl 1413319151 10995 31.11.139.62 (14 Oct 2014 20:39:11 GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Tue, 14 Oct 2014 20:39:11 +0000 (UTC)
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: OE PowerTool 4.5
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157
X-WWW: http://www.grzegorz.net/
Xref: news-archive.icm.edu.pl pl.misc.elektronika:672683
[ ukryj nagłówki ]Jakub Rakus <s...@o...pl> napisał(a):
> Dawno już nie robiłem nic na 8-bitowcach i chyba mi coś umknęło, a w
> październikowej EP na str. 26 przeczytałem co następuje:
> "(...)zmienne wyniku pomiaru są współdzielone między pętlą główną a
> przerwaniem, a jak wiadomo, w przypadku 8-bitowego mikrokontrolera oraz
> zmiennych większych niż jeden bajt, sytuacja taka może prowadzić do złej
> interpretacji wartości zmiennej, jeśli się odpowiednio nie zabezpieczymy."
> Czy mógłby ktoś wyklarować dlaczego, jak i po co? Jakie zabezpieczenie?
> Coś kojarzę, że miałem dawno temu z tym jakieś problemy, bo między main()
> a ISR() wymieniałem zmienną typu uint32_t i pojawiały się w niej jakiejś
> bzdety, ale już nie pamiętam co wtedy zaradziłem.
Na tych mikrokontrolerach operacje na zmiennych większych niż 8-bitowe nie
są atomowe. Przykładowo dekrementujesz sobie 16-bitową zmienną w przerwaniu,
a w głównym programie masz pętlę sprawdzającą, czy zmienna ta osiągnęła
zero. Może się zdarzyć, że zmienna ta będzie miała wartość 0x0100 i wtedy:
- główny kod sprawdzi młodszy bajt i stwierdzi jego równość zeru
- nastąpi przerwanie, które zmieni wartość zmiennej na 0x00ff
- główny kod sprawdzi starszy bajt i stwierdzi jego równość zeru
- główny kod stwierdzi, że zmienna ma wartość 0x0000, choć nie będzie to
prawdą
Dlatego stosujemy sekcje krytyczne. Kłania się np. makro ATOMIC_BLOCK, które
wyłącza przerwania na czas wykonywania sekcji.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 15 days, 2 hours, 38 minutes and 10 seconds
Następne wpisy z tego wątku
- 14.10.14 22:42 platformowe głupki
- 14.10.14 23:17 Sebastian Biały
- 15.10.14 22:36 janusz_k
Najnowsze wątki z tej grupy
- Rejestrator temperatur - termopara, siec
- Router LTE z możliwością zmian MTU
- Fajny film widziałem...
- Jaka ładowarka sieciowa do Iphona?
- Taśma izolacyjna do prac elektrycznych
- Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Wkrętarki, wiertarki...
- Zasilacz impulsowy 12V 10A, coś godnego uwagi jako zamiennik akumulatora wkrętarki
- Mouser - koszt wysyłki
- [OT] Jak wycinac ksztalt w piance lub styropianie?
- FV--> ciepła woda w kranie
- Szok
Najnowsze wątki
- 2025-07-14 Awaria VM?
- 2025-07-14 Gdańsk => Programista Kotlin <=
- 2025-07-14 Warszawa => Junior Rekruter <=
- 2025-07-14 Warszawa => Specjalista rekrutacji IT <=
- 2025-07-14 Wkłady do zniczy...
- 2025-07-14 Warszawa => Specjalista ds. Sprzętu Komputerowego <=
- 2025-07-14 Re: PO chroniło i chroni policyjnych bandziorów [zawiasy za katowanie obywatela (Poznań czerwiec 2012)]
- 2025-07-14 Warszawa => International Freight Forwarder <=
- 2025-07-14 Warszawa => Recruiter 360 <=
- 2025-07-14 Re: Rz?Âd ZAKAZUJE magazyn?Â?w energii ?!! Nowe prawo od 14 lipca to SZOK! ??Â
- 2025-07-14 Warszawa => Sales Assistant <=
- 2025-07-13 Fałszywe alerty
- 2025-07-12 dlaczego gadacie z tym debilem
- 2025-07-13 Unia Europejska przygotowuje nowy podatek
- 2025-07-13 Unia Europejska przygotowuje nowy podatek