-
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
- Czujnik nacisku
- Protoków komunikacyjny do urządzenia pomiarowego
- Hiszpania bez pradu
- amperomierz w plusie
- 3G-nadal działa
- Historia pewnego miernika kalibratora
- Ustym 4k Pro i wyświetlacz
- Czemu rozwaliło celę?
- Wojna w portfelu
- Jaki trojfazowy licznik tuya lub podobny?
- Problem z dekoderem adresów
- Intel się wyprzedaje: po 10latach pchnęli pakiet kontrolny Altery za 1/4 kwoty zakupu
- Korekcja perspektywy
- Wentylator zabija zasilacze LEDek?
- Re: Kompensacja mocy biernej przy 230VAC
Najnowsze wątki
- 2025-05-08 Usługi, rozliczanie płatności z karty i blika
- 2025-05-08 Lublin => Delphi Programmer <=
- 2025-05-08 Lublin => Programista Delphi <=
- 2025-05-08 Łódź => Mainframe (z/OS, Assembler) Developer <=
- 2025-05-08 Warszawa => Senior Node.js Developer (doświadczenie z framework Nest.
- 2025-05-07 Wielki smog w Watykanie
- 2025-05-07 Polscy czołgiści najlepsi w międzynarodowych zawodach na Łotwie!!!
- 2025-05-07 Znaki wewnętrzne
- 2025-05-07 Czujnik nacisku
- 2025-05-07 Wielki smog w Watykanie Nadal palą węglem w piecach
- 2025-05-07 Kraków => Business Development Manager - Network and Network Security
- 2025-05-07 Białystok => Team Lead Data Engineer (obszar Snowflake) <=
- 2025-05-07 Białystok => Team Lead Data Engineer (Snowflake) <=
- 2025-05-07 Warszawa => IT Recruiter <=
- 2025-05-07 Żerniki => Dyspozytor Międzynarodowy <=