avr threads

Moczik Gabor pm at progzmaster.hu
Sat Sep 16 15:06:39 CEST 2006


Pal Lukacs wrote:
> Egy valamit nem ertek.Miert volatile a valtozok egy resze es a tobbi nem ?Ugyanugy van hasznalva main() ban meg megszakitasban is,nem?

A volatile kulcsszo arra utasitja a forditot, hogy ne cache-elje 
regiszterekben azt a valtozot, mert a hatterben megvaltozhat az erteke.

A peldaprogramban azert nem kell volatile-nek lennie a cnt1_threshold 
valtozonak, mert azt alapvetoen csak a megszakitas hasznalja, a foprogramban 
csak adsz neki egy kezdoerteket (amit egyebkent a deklaracioban is megtehetsz).

A cnt-nek nem kotelezo volatile-nek lennie, azt csak a megszakitas 
hasznalja, ezt elirtam.

A flag valtozonak volatile-nek kell lennie, mert a hatterben a megszakitas 
valtoztathatja. Ha a foprogram regiszterbe cache-eli az erteket, akkor 
allandoan csak a cache-t fogja olvasni, nem az eredeti valtozot, amit az ISR 
modosit.
A cache erteke pedig a foprogramban nem fog valtozni, mert nincs iras a flag 
valtozora.
(csak a feltetelen belul, de oda igy soha nem jutna el, meg az egyebkent is 
0-ra allitja nem 1-re...)

-- 
((( Móczik Gábor  )))--((( pm -> @ -> progzmaster -> . -> hu  )))
((( Skype: moczik )))--((( Website: http://www.progzmaster.hu )))



More information about the Elektro mailing list