-
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!.PO
STED!not-for-mail
From: Michoo <m...@v...pl>
Newsgroups: pl.misc.elektronika
Subject: Re: AVR ATmega, pomiar częstotliwości przebiegu, prośba o sprawdzenie
kodu
Date: Thu, 10 Feb 2011 22:31:01 +0100
Organization: http://onet.pl
Lines: 50
Message-ID: <ij1leg$ciq$1@news.onet.pl>
References: <4d528e6b$0$2436$65785112@news.neostrada.pl>
<4d52df8e$0$2452$65785112@news.neostrada.pl>
<4d53ffa7$0$2504$65785112@news.neostrada.pl>
<4d540151$0$2457$65785112@news.neostrada.pl> <ij1236$va6$1@news.onet.pl>
<4d543005$0$2448$65785112@news.neostrada.pl>
NNTP-Posting-Host: smaug.int.pl
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: news.onet.pl 1297373456 12890 83.238.197.12 (10 Feb 2011 21:30:56 GMT)
X-Complaints-To: n...@o...pl
NNTP-Posting-Date: Thu, 10 Feb 2011 21:30:56 +0000 (UTC)
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.16) Gecko/20101227
Icedove/3.0.11
In-Reply-To: <4d543005$0$2448$65785112@news.neostrada.pl>
Xref: news-archive.icm.edu.pl pl.misc.elektronika:604632
[ ukryj nagłówki ]W dniu 10.02.2011 19:35, Zbych pisze:
> W dniu 2011-02-10 17:00, Michoo pisze:
>> W dniu 10.02.2011 16:16, Zbych pisze:
>>> Nie używaj cli i sei do robienia sekcji atomowych, te makra nie są
>>> zabezpieczone przed optymalizacją i kompilator może zmienić kolejność
>>> instrukcji (choć oczywiście nie musi).
>> Chyba nie - definicja wyglądają tak:
>> # define sei() __asm__ __volatile__ ("sei" ::)
>> # define cli() __asm__ __volatile__ ("cli" ::)
>>
>> Co zabrania kompilatorowi zamiany kolejności ewaluacji wyrażeń.
>
> volatile zabrania usunięcia, optymalizacji, ale nie zabroni przesunięcia
> czegoś co jest pomiędzy sei i cli, czyli z kodu
> cli();[coś];sei();
> może wyjść:
> cli();sei(); [coś];
Tylko jeżeli [coś] jest kiepskim kodem ;) - Używanie w sekcji krytycznej
czegoś co nie jest volatile i nie zawiera bariery na przesyłanej
zmiennej jest sprzeczne zarówno ze standardem jak i ze zdrowym rozsądkiem.
Gdy [coś] operuje na zmiennych volatile wszystko musi działać a
jednocześnie nie ma konieczności synchronizacji wszystkich rejestrów jak
przy klasycznej barierze.
>
> Dodatkowo taka konstrukcja nie zmusza kompilatora do zapisania wartości
> tymczasowych trzymanych w rejestrach do pamięci, więc może się okazać,
> że zapis wielobajtowej zmiennej nastąpi już przy włączonych przerwaniach.
>
> Przykłady można znaleźć na liście dyskusyjnej avr-gcc.
Masz może linkę? Bo na szybko nie mogłem znaleźć.
>
>> Dziwne swoją drogą, że nie jest to zapisane na wszelki wypadek jako
>> # define sei() __asm__ __volatile__ ("sei" :::"memory")
>
> No właśnie o tę barierę na pamięci chodzi.
Tylko bariera jest wolna i nieoptymalna. W sumie jak się głębiej
zastanowić to to jest sensowne:
cli();[operacje na volatile]sei();
- działa jak należy
cli();[dowolne operacje i synchronizacja zmiennej współdzielonej]sei();
- też działa
cli();[operacje bez synchronizacji]sei();
- robi to co programista napisał a nie to co chciał, ale C jest znane z
tego że pozwala się postrzelić w stopę
--
Pozdrawiam
Michoo
Następne wpisy z tego wątku
- 11.02.11 07:36 Zbych
- 11.02.11 11:05 Robbo
- 11.02.11 11:43 Michoo
- 11.02.11 12:15 Zbych
- 11.02.11 12:22 Robbo
- 11.02.11 12:24 Zbych
- 11.02.11 12:33 Zbych
- 11.02.11 12:58 Robbo
- 11.02.11 13:09 Robbo
Najnowsze wątki z tej grupy
- Akumulatorki Ni-MH AA i AAA Green Cell
- Dławik CM
- JDG i utylizacja sprzetu
- Identyfikacja układ SO8 w sterowniku migających światełek choinkowych
- DS1813-10 się psuje
- Taki tam szkolny problem...
- LIR2032 a ML2032
- SmartWatch Multimetr bezprzewodowy
- olej psuje?
- Internet w lesie - Starlink
- Opis produktu z Aliexpress
- No proszę, a śmialiście się z hindusów.
- Zewnętrzne napięcie referencyjne LM385 1,2V -> 100mV dla ICL7106, Metex M-3800
- karta parkingowa
- Wl/Wyl (On/Off) bialy/niebieski
Najnowsze wątki
- 2024-12-04 Warszawa => Architekt rozwiązań (doświadczenie w obszarze Java, AWS
- 2024-12-04 Czy policjantów należy ROZBROIĆ?
- 2024-12-03 Tymoteusz Sz.
- 2024-12-03 Re: Prezydent ułaskawia: Prezydent USA Biden (D) ułaskawia syna własnego
- 2024-12-03 Re: Tani dodatkowy sim do smartwacha
- 2024-12-03 Wróblewo => Analityk finansowy <=
- 2024-12-03 Praktyczny test GPS...
- 2024-12-02 Tak się sprzedają elektryczne woldzwageny ;-)
- 2024-12-02 Akumulator do Hyundai
- 2024-12-02 Olsztyn => Sales Specialist <=
- 2024-12-02 Poznań => Technical Artist <=
- 2024-12-02 Bieruń => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-12-02 Kraków => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2024-12-02 Chrzanów => Team Lead / Tribe Lead FrontEnd <=
- 2024-12-02 Białystok => Delphi Programmer <=