Tema: Re: Padekit pagaut bug'a (Arduino)
Autorius: Laimis
Data: 2015-06-06 13:34:08
ig rašė:
> Bet tai ... bus kita problemele - jei interuptas ateis "if" metu, ir i
> ji nebus sureaguota, tai as pamesiu zingsniuka. Zingsniukas po
> zingsniuko ir ziurek po kurio laiko jau nebepataiko niekas... Tuo
> labiau, kad greiciausiai bus ir daugiau tu if'u ir kitu veiksmu.

Tai išjungi interrupt'us juk tik vienai/kelioms operacijoms, kai 
skaitai/keiti counter'į. T.y. labai trumpam laikui.
Po to vėl įjungi ir suveiks interrup'tai ir if'e. Aišku, teoriškai gali 
pamesti žingsniuką. Jei tai kritiška, tai tuo labiau negali turėti tacho 
ISR'e jokių ilgesnių/sudėtingesnių kodų, nes reentrant ISR'ą 
(interrupt'ai pačiame ISR'e) vargu ar norėtum daryti...

Šiaip reikia žiūrėti, koks asm'as gaunasi ir ten optimizuoti ant 
atominių operacijų. Pavyzdžiui sukti skaitliuką iš dviejų atskirų baitų.
Berods turi arduino lowByte(), highByte(), tai gali bandyti iš loop'o 
skaityti/lipdyti int counter'io reikšmę per šias funkcijas, kurios pagal 
viską turėtų būti atominės.