2015-02-04 22:52, Levas rašė:
> bitu pjaustymas nepadeda.
>
> Nes 4.9999 ir 5.0000 ar 4.9 ir 5.0 mirges, jei persijungines bitai. T.y.
> tik bus zymiai maziau "padeciu" kai mirges visi skaiciai.
nebus tokių išmatuotų reikšmių.
Kadangi nežinau taviškio setup'o, priimam kad matuojam intervalą 0-10 V.
Delta tarp gretimų reikšmių:
8 bitų - 10/256 = 0,039 ~=0,04;
10 bitų - 10/1024 = 0,0098 ~= 0,01;
12 bitų - 10/4096 = 0,0024 ~= 0,0025;
Sakykim naudoji 10 bitų režimą, LSB bitas nereikšminis (triukšmai ir
pan) ir jo atsikratai su '>> 1', lieki su 9 reikšminiais bitais ir 0,02
V žingsniu. Arba, imant 12 bitų - 11 reikšminių bitų ir 0,005 V žingsnis.
Tokiu atveju reikšmę keisčiau, kai abs(displayValue - currentValue) > 2.
Ir čia viskas prieš level-shift'ą į displėjaus reikšmes.
Galima net įvesti 'pataisą':
int displayValue = 0;
int currentValue = read_ADC();
int diff = currentValue - displayValue;
if (abs(diff >> 1)) {
displayValue = currentValue - (diff >> 1)
}
Ant geležies netikrinau; jei '+' operacija valgo mažiau ciklų nei '-',
žinosi ką daryti ;)
> Mechaniskai tai gaunasi kaip "liuftas" dantraciuose- sukam skyva kazkiek
> i prieki, poto sukam "laisvai" atgal, kol vel dantraciai ir sriegiai
> susikabina.
baisiai džergždami ;)
--
Grammar for Time Travelers:
The term "Future Perfect" has been abandoned since it was discovered not
to be.