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