Tema: Re: Padekit pagaut bug'a (Arduino)
Autorius: ejs
Data: 2015-06-06 11:41:43
2015-06-06 09:26, CodeC rašė:
> On 06/06/2015 01:53 AM, Laimis wrote:
>> ig rašė:
>>
>>> Zodziu biski konfuze. Gal kas turi minciu ?
>>
>> Kaip jau minėjo — ISR nebaigus skaityti 2 counter'io baitų (int). Reikia
>> tiesiogiai išjungti interrupt'us, kad operacija būtų atomic.
>> Bet šiaip tai keista, kad volatile dokumentacijoje apie tai neužsiminta.
>
> kas cia keisto? skaitykit normalias dokumentascijas o ne kazkokius
> arduino looseriu prirasytas nesamones.
> volatile visur ir visada buvo yra ir bus keywordas compileriui, kad to
> kintamojo access'o neoptimizuoti ir uzkrauti ji i registrus is atminties
> kiekvieno access'o metu. VISKAS, end of story.
> visa kita toliau - nebe volatile keyword'o dokumentacijos sritis, o
> arogantiskas replikas rasinejanciu gyku issilavinimo spragos.

/me puikiai supranta kad "if (c > 623)" , "Serial.println(c);" ir "c = 
0;" kalba eina apie tris skirtingas "c" vertes, kurios kartais gali sutapti.

Vienintelė vieta kur gali KAŽKAS ATSITIKTI yra "c = 0;"
todėl užtektų šią vietą perrašyti su cli(); c = 0; sei();

O jei reikia žinoti su kokiomis reikšmėmis dirbama cikle - be papildomo 
kintamojo neišsiversi.

ig, koks variklis? 20k rpm, 6 frontai /apsisukimui duoda 1kHz signalą. 
Nelabai tikiu kad parašytų eilučių vykdymo laikas ilgesnis nei 50 us, 
todėl mano galva ciklo metu kintamojo reikšmė turėtų likti pastovi.
Pažiūrėk su oscilografu kas darosi įėjime.
-- 
ejs