nu gi isbandyta praktiskai. Netinka. 00000010000000000x 00000001111111111x Kas bus? Kai keisis reiksme paskutiniam "nubrauktam" bite? Cia yra ne tikslumo skaiciavimo problema ir net ne apvalinimo, o rodymo "histerezes"! Praktiskai nupjaunant bitus mazeja "skaiciu", taciau "mirgejimas" neisnyksta. Tik kiek sunkiau sukiojant "analogine" rankenele pagauti reiksme prie kurios mirga skaiciai. Galima labai stipriai mazinti skaiciu kieki, kad praktiskai bus sunku nustatyti ta mirgejimo "vieta", bet prarasim tiksluma Dabar sakysim (ten kur postinau) rodo 10 bitu +-3 skaiciu (2bitai!). Ir vaizdas stabilus, jei ADC blaskosi per tuos 3 skaicius. On 2015.02.04 23:22, ejs wrote: > 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 ;) -- Bye, Levas -- http://www.vabolis.lt