-
Data: 2011-01-31 12:25:23
Temat: Re: książka o programowniu AVR w C
Od: Piotr Gałka <p...@C...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]
Użytkownik "Michoo" <m...@v...pl> napisał w wiadomości
news:ii66p3$56t$1@news.onet.pl...
>W dniu 31.01.2011 10:11, Piotr Gałka pisze:
>> "Przecież tak nie można na AVR! Widać, że gość przeniósł się z 51 gdzie
>> tak było można. Facet użył pól bitowych do przekazywania flag między
>> programem a przerwaniami. Tego się nie da _dobrze_ zrealizować w
>> asemblerze AVR bo zmiana bitu wymaga dwu rozkazów i jak między nimi
>> przyjdzie przerwanie to ustawiona w przerwaniu flaga w tym samym
>> rejestrze zostanie skasowana pierwszym rozkazem po powrocie z
>> przerwania."
> Po pierwsze m.i. od tego jest możliwość zablokowania przerwań aby
> wykonywać operacje atomowe.
>
> Po drugie C (avr-gcc) udostępnia ładne makro po którym od razu widać, że w
> tym miejscu zachodzi synchronizacja:
> ATOMIC_BLOCK(ATOMIC_FORCEON)
> {
> flags |= 0b00001001;
> }
>
Ani nie czytałem tego kursu, ani nie pisałem nigdy nic pod gcc.
Przypuszczam, że w tym kursie było coś takiego:
struct {int a:1;int b:1;...}flags;
i potem zapisy typu: flags.a=1; które prawdopodobnie nie były w nic
robiącego z tego operację atomową ujęte.
O ile widząc flags|=1 można się spodziewać kilku rozkazów, o tyle widząc
flags.a=1 można mieć większe problemy, aby wpaść na to, że to może wymagać
otoczenia blokowaniem przerwań.
Tak z czystej ciekawości:
Czy takie makro patrzy co jest w jego wnętrzu i albo blokuje przerwania,
albo nie (jeśli wnętrze z natury jest operacją atomową) ?
P.G.
Następne wpisy z tego wątku
- 31.01.11 14:11 Marcin Wasilewski
- 31.01.11 14:30 Michoo
- 31.01.11 15:38 J.F.
- 31.01.11 16:22 identifikator: 20040501
- 31.01.11 17:00 Michoo
- 31.01.11 17:27 J.F.
- 31.01.11 19:39 Marcin Wasilewski
- 31.01.11 20:04 Sebastian Biały
- 31.01.11 20:13 kk
- 31.01.11 20:54 Sebastian Biały
- 31.01.11 21:20 kk
- 31.01.11 21:27 JDX
- 31.01.11 21:34 Marcin Wasilewski
- 31.01.11 21:40 JDX
- 31.01.11 23:17 RoMan Mandziejewicz
Najnowsze wątki z tej grupy
- Re: Kompensacja mocy biernej przy 230VAC
- Łożysko ślizgowe - jaki olej
- Re: Kompensacja mocy biernej przy 230VAC
- Re: Kompensacja mocy biernej przy 230VAC
- Współczesny falomierz
- Zasilacz 7V na szynę DIN
- Waga z legalizacją
- Wietnam wykłada 500M$ i chce zbudować fabrykę za 50G$
- Pendrive zdycha, czy coś jeszcze innego? Problem z plikami.
- Odkurzacz Smapp Dynamic - dawny Zelmer
- Nagra IV i zewnętrzny pilot
- Fejk muzyczny czy nie fejk
- Raspberry Pi 3 Model B+
- Kuchenka elektryczna
- test
Najnowsze wątki
- 2025-03-29 Re: Kompensacja mocy biernej przy 230VAC
- 2025-03-29 Ostrów Wielkopolski => Konsultant Wdrożeniowy Comarch XL/Optima (Ksi
- 2025-03-29 Łożysko ślizgowe - jaki olej
- 2025-03-29 Re: Kompensacja mocy biernej przy 230VAC
- 2025-03-29 Warszawa => NMS System Administrator <=
- 2025-03-29 Warszawa => Laravel PHP Developer <=
- 2025-03-29 Re: Kompensacja mocy biernej przy 230VAC
- 2025-03-29 Warszawa => Java Full Stack Developer (Angular2+) <=
- 2025-03-29 Warszawa => Specjalista rekrutacji IT <=
- 2025-03-28 A gdyby to był elektryk?
- 2025-03-28 Współczesny falomierz
- 2025-03-28 Rzeszów => WEBCON Developer <=
- 2025-03-28 Szczecin => Specjalista ds. public relations <=
- 2025-03-28 Warszawa => Staż w dziale Sprzedaży B2B <=
- 2025-03-28 Warszawa => MENA New Business Manager <=