[elektro] STM32f4 interrupt : volatile tombok

Móczik Gábor pm_levlista at progzmaster.hu
Wed Dec 11 08:33:13 CET 2013


2013.12.10. 20:09 keltezéssel, Pal Lukacs írta:
> Ki fogom probalni, hogy nem adok volatile modositot.
> Tudom hogy kikapcsolja az optimalizaciot,..az IT miatt tettem a tomboket es a tobbit volatilere, mert az IT irja, olvassa.

A kipróbálás nem az igazi, azt kellene megérteni, hogy a volatile mit 
jelent!

Olyan esetben kell, amikor a main által használt adat a háttérben 
megváltozhat!

Tehát a main által használt read pointer nem kell volatile legyen, ha 
csak a main írja. Az interrupt által használt write pointer sem kell 
volatile legyen, ha csak az ISR olvassa (beleértve azt is, hogy másik 
magasabb prioritású ISR sem olvassa!)

Ha viszont a mainban is olvasni akarod ezt a write pointert (pl. hogy 
tudd, hogy elfogyott-e az adat), akkor már volatile-ként kell deklarálni.

Az adatterületet ugye az ISR írja és a main olvassa, tehát a main 
szemszögéből a háttérben változik. Volatile-ként kell deklarálni.

Az technikai részletkérdések és feltételezések sorozata, hogy úgysem az 
az adat változik amit a main olvas, hanem valami más, de szerintem 
feltételezés alapján kódot írni nem jó ötlet.

Nyugodtan deklarálhatod volatile-ként, az esetedben nem fog változni a 
végrehajtási sebesség.



More information about the Elektro mailing list