Tema: Re: Padekit pagaut bug'a (Arduino)
Autorius: CodeC
Data: 2015-06-07 22:43:45
jei neklystu, cia parasyta +- for dummies:

http://blog.regehr.org/archives/28

*6. Using volatile to get atomicity*
<...>
*Summary: Volatile has nothing to do with atomicity.  Use locks.*

ka dar pamirsau pries 2-3 postus parasyt ir pasiulyt, kad vizualizuoti 
problemos esme: kintamojo tipa is int pakeisti i char ir maks reiksme 
sumazinti iki 0xff. stebuklingai volatile "prades veikti" taip kaip EJS 
tikisi ir "problemos neliks" :)

On 2015.06.07 20:55, ejs wrote:
> 2015-06-06 20:34, CodeC rašė:
>
>> sesk vel du
>> vieta kur "kazkas" tikrai atsitinka, tai c uzkrovimo is ram vieta ("if
>> (c > 623)") eilute. todel, kad tai NE atomic operacija. tau jau gal 3
>> zmones parase esme, bet vistiek toliau nesamones kliedi ir dar kitus
>> klaidini. "jei tik skaityt moketum..."
>
> "c" yra monotoniškai didėjantis.
> Kokios jo galimos reikšmės jai jis nuskaitomas kolizijos metu ir kaip
> tai įtakos programos logiką?
>
> Kitas momentas: kadangi "c" yra keičiamas ~1,2 kHz dažniu, dabartinė
> programa gerokai dažniau matys tą pačią "c" reikšmę nei pasikeitusią.
>
> Ok, jei reikia tikslios "c" reikšmės, pasiimi ją į registrą ir cikle
> operuoji registru, o ne kintamuoju.
> Fin ?
>