Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Porada w użyciu zmiennych jako volatile

Moderatorzy: Jacek Bogusz, Moderatorzy

Sławek5
-
-
Posty: 485
Rejestracja: 15 sie 2003, o 16:40
Lokalizacja: Szczecin
Kontaktowanie:

Porada w użyciu zmiennych jako volatile

Postautor: Sławek5 » 13 lis 2006, o 13:29

Cześć. Chcę Was prosić o radę. Otóż mam fragment kodu:

Kod: Zaznacz cały

for(g_X=0; g_X<64; g_X++) { spec[g_X]=decybel(spec[g_X]); } for(g_X=0; g_X<64; g_X++) { maska.m=0xffffffffffffffff; maska.m<<=(64-spec[g_X]); for(g_Y=0; g_Y<8; g_Y++) { LcdGotoXY(g_X*2,g_Y); Lcddata(maska.yy[g_Y]); } }
Powduje on obliczenie wartości logartymu ze zmiennej tab. sepec[] i wynik wpisuje do tej samej tablicy. Nastepnie za pomoca petli rysuje linie na wyswietlaczu w zaleznosci od wartosci spec.
Teraz czy zmenne

Kod: Zaznacz cały

uint8_t volatile g_X, g_Y; union MASKA { uint64_t m; uint8_t yy[8]; } volatile maska;
mam zadeklarowac jako volatile czy usunac ten kwalifikator.
maska oraz g_X i g_Y nie sa wykorzystywane w przerwaniu ani niggdzie indziej tylko tutaj w tym fragmencie.

Kompilator generuje mi różne kody i nie wiem co mam zrobić.

Jurek Szczesiul
-
-
Posty: 175
Rejestracja: 10 paź 2003, o 20:44
Lokalizacja: Białystok
Kontaktowanie:

Re: Porada w użyciu zmiennych jako volatile

Postautor: Jurek Szczesiul » 13 lis 2006, o 19:49

mam zadeklarowac jako volatile czy usunac ten kwalifikator.
Po prostu sprawdź czy działa bez volatile. Generalnie volatile
'wyłącza' operacje na zmiennej spod działania optymalizacji kodu,
który przez to na ogół się powiększa. Przeważnie nie jest to
- poza użyciem w przerwaniach - potrzebne

Pozdrowienia Jurek S.

Sławek5
-
-
Posty: 485
Rejestracja: 15 sie 2003, o 16:40
Lokalizacja: Szczecin
Kontaktowanie:

Postautor: Sławek5 » 14 lis 2006, o 06:07

TAk mi sie jeszcze pzy okazji takie pytanie nasunęło:
czy jest róznica w zapisie

Kod: Zaznacz cały

uint8_t volatile Dana;
a

Kod: Zaznacz cały

volatile uint8_t Dana
czy nie ma to znaczenia

Wróć do „PLD/FPGA i inne zagadnienia techniki cyfrowej”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 5 gości