-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit
0.net!feeder.erje.net!1.eu.feeder.erje.net!proxad.net!feeder1-2.proxad.net!clea
nfeed3-b.proxad.net!nnrp1-1.free.fr!not-for-mail
From: Mateusz Viste <m...@n...pamietam>
Subject: Re: Zagwozdka w C Keil.
Newsgroups: pl.misc.elektronika
References: <q3q59d$hp9$1@node1.news.atman.pl>
User-Agent: Pan/0.139 (Sexual Chocolate; GIT bf56508 git://git.gnome.org/pan2)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Date: 10 Feb 2019 22:41:57 GMT
Lines: 52
Message-ID: <5c60a8b5$0$21611$426a74cc@news.free.fr>
Organization: Guest of ProXad - France
NNTP-Posting-Date: 10 Feb 2019 23:41:57 CET
NNTP-Posting-Host: 82.64.0.151
X-Trace: 1549838517 news-1.free.fr 21611 82.64.0.151:54566
X-Complaints-To: a...@p...net
Xref: news-archive.icm.edu.pl pl.misc.elektronika:740898
[ ukryj nagłówki ]On Sun, 10 Feb 2019 22:32:33 +0100, Irek.N. wrote:
> Pytanie do znawców C. Czy zapis taki:
>
> volatile unsigned int DEL_STEP;
>
> void DELAY(unsigned int Czas) {
> DEL_STEP = Czas;
> while(DEL_STEP);
> }
>
> może różnić się wykonaniem od zapisu takiego?
>
> void DELAY(unsigned int Czas) {
> unsigned char DEL_MSB,DEL_LSB;
> DEL_STEP = Czas;
> while(1) {
> DEL_LSB = DEL_STEP/0x100;
> DEL_MSB = DEL_STEP^0x100;
> if (DEL_MSB == 0 & DEL_LSB == 0) return;
> }
> }
O "Keil" nigdy nie słyszałem, ale C obiło mi się już o uszy, wrzucę moje
3 grosze, być może jakkolwiek pomocne :)
Pierwszy wariant wydaje się bardzo sensowny. Kompilator zepsuty? A może
typ int nie jest atomiczny, i kompilator sprawdza najpierw jednego nibbla,
i dopiero jeśli ten okaże się zerowy to zajmie się drugim?
Próbowałeś może zastąpić jakimś sig_atomic_t?
Ten drugi przykład to w ogóle lichy jest, bo pętla ma teoretyczne prawo
zostać przerwana za każdym razem kiedy wartość DEL_STEP zostaje zmieniona
z wartości o zerowym MSB do wartości o zerowym LSB (np. 0x0034 -> 0x1200)
- a to dlatego, że los może złośliwie zechcieć wykonać twoje przerwanie
akurat pomiędzy liniami:
DEL_LSB = DEL_STEP/0x100;
DEL_MSB = DEL_STEP^0x100;
Nazewnictwo jest tu nieco pomieszane, bo DEL_LSB będzie faktycznie
zawierał 8 "ważniejszych" bitów, tj. MSB. A DEL_MSB będzie zawierał 8
"mniej ważnych" bitów - z resztą celowość operacji XOR całkiem mi tu
umyka, tym bardziej że operuje na bitach których DEL_MSB i tak nie
zobaczy (bo jest charem). Może zamiast '^' (xor) miałeś na myśli
'%' (mod)? Też byłoby niepotrzebnie, ale byłbym wtedy w stanie zrozumieć
co autor miał na myśli.
Swoją drogą, trochę dziwnie patrzeć na dzielenie w takiej operacji. Jeśli
kompilator mądry, to zoptymalizuje twoje "/ 0x100" do ">> 8", ale jeśli
na to nie wpadnie... to będzie mało ekologicznie.
Mateusz
Następne wpisy z tego wątku
- 10.02.19 23:49 J.F.
- 10.02.19 23:55 J.F.
- 10.02.19 23:59 Grzegorz Niemirowski
- 11.02.19 00:10 Grzegorz Niemirowski
- 11.02.19 00:11 Irek.N.
- 11.02.19 00:14 Irek.N.
- 11.02.19 00:28 Irek.N.
- 11.02.19 09:27 Mateusz Viste
- 11.02.19 09:32 Mateusz Viste
- 11.02.19 09:43 Grzegorz Niemirowski
- 11.02.19 10:02 Grzegorz Niemirowski
- 11.02.19 11:10 Mateusz Viste
- 11.02.19 11:54 Queequeg
- 11.02.19 11:59 Queequeg
- 11.02.19 12:17 J.F.
Najnowsze wątki z tej grupy
- 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
- Dziwny schemat wzmacniacza m.cz.
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- CGNAT i ewentualne problemy
Najnowsze wątki
- 2025-07-05 Shrek, wzrośnie cena prądu :-)
- 2025-07-05 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2025-07-05 Środa Wielkopolska => SAP FI/CO Internal Consultant <=
- 2025-07-05 Środa Wielkopolska => SAP FI/CO Konsultant wewnętrzny <=
- 2025-07-06 Płacić za wodę ze studni
- 2025-07-06 Kolejny inżynier...
- 2025-07-05 UE ustępuje pod presją Trumpa. Socjaldemokraci: oddaliśmy miliardy
- 2025-07-04 od kiedy można obrażać Plastusia i do kiedy Batyra?
- 2025-07-05 UE ustępuje pod presją Trumpa. Socjaldemokraci: oddaliśmy miliardy
- 2025-07-03 Trybik
- 2025-07-04 Renault Symbioz
- 2025-07-04 Architektura IIIRP: Wyjątkowa, a prymitywniejsza niż stodoła pod zaborami
- 2025-07-04 Warszawa => International Freight Forwarder <=
- 2025-07-04 Wrocław => SAP ABAP Developer <=
- 2025-07-04 Warszawa => Mid/Senior IT Recruiter <=