AVR (gc)C furmany

Szabados István szabados.i at easymail.hu
Sat Jun 3 15:47:42 CEST 2006


Szima Gábor írta:
> Sziasztok!
> 
> Epp most torolgetem a szam szelet, elegge feher... ;)
> 
> ATmega8, gcc-4.0.3
> 
> "Mezei" kod:
> 
> ...
> 
> lokalis_valtozo = globalis_valtozo - 1;
> 
> if ( lokalis_valtozo <= 110 ) {
> 
> ...
> ...
> 
> }
> else {
> 
> ...
> 
> }
> 
> Na. Ha epp igaz a feltetel, akkor tiszta sor, megy az elso ag.
> 
> Kozben "globalis_valtozo" interrupt-bol megvaltozik.
> Odaer az else-hez, es lass csodat: az "else" ag is lefut.
> 
> Nem hinnem, hogy normalis ez, de barmi megeshet.
> 
> Atrendezessel megoldottam (felcsereles vagy segedvaltozo hasznalata), de 
> normalis ez igy?
> 
> 


Nem normális, és gyanítom, hogy nem a proci a rossz, hanem valamit nem vettél észre.
A lokális változó értékét ugyanis csak egyszer vizsgálja a proci, és az eredmény függvényében 
valamelyik ág kerül végrehajtásra.
Tehát az igaz ág végén nem nézi meg ujra az értékét igy a közbeni megváltozásnak semmi hatása 
sem lehet.
Arról már nem is beszélve, hogy a lokális változó meg se változhat, hiszen a globális
azután változik, miután értékét átvette a lokális.
Ott valami más van gubanc van a programodban.

Üdv
István




More information about the Elektro mailing list