Tema: Re: AVR GCC, kaip daryti geriau ir teisingiau
Autorius: kef
Data: 2017-02-22 09:35:34
tai nieko cia geriau neprigalvosi kai funkcija nemonotoniska. Butu tie 
matuoklio segmentai vienodi, yra gudresnis logaritmo skaiciavimas, ir 
greiciau ir gal kompaktiskiau. Siaip tai nexj pautu sukti kai tas kas yra 
atitinka reikalavimus.

"Levas" <kazkur@pasbobute.com> wrote in message 
news:o8i8el$3n6$1@trimpas.omnitel.net...
> nei greicio nei vietos netruksta. Tik siaip buvo idomu, gal yra koks nors 
> kitoks uzduoties sprendimo metodas.
>
> On 2017.02.21 15:29, kef wrote:
>> Jei greicio truksta ir yra atminties lentelei - lentele, jei ne - dalini
>> antra varianta i 2 ar 4 dalis, kad nereiktu visi if'u pereit. Tuo
>> patrumpini leciausia varianta atitinkamai beveik 2 ar 4 kartus. pvz
>>
>> unsigned char v_vu(unsigned int a)
>> {
>> if(a > 390)
>> {
>>    if(a>1020) return 25; //OVER
>>    if(a>980) return 24; // +6
>>    if(a>778) return 23; // +4
>>    if(a>655) return 22; // +2.5
>>    if(a>618) return 21; // +2
>>    if(a>581) return 20; // +1.5
>>    if(a>551) return 19; // +1
>>    if(a>520) return 18; // +0.5
>>    if(a>491) return 17; // 0
>>    if(a>453) return 16; // -0.7
>>    if(a>413) return 15; // -1.5
>>    if(a>390) return 14; // -2
>> }
>> else
>> {
>>    if(a>368) return 13; // -2.5
>>    if(a>309) return 12; // -4
>>    if(a>292) return 11; // -4.5
>>    if(a>276) return 10; // -5
>>    if(a>246) return 9; // -6
>>    if(a>195) return 8; // -8
>>    if(a>174) return 7; // -9
>>    if(a>123) return 6; // -12
>>    if(a>109) return 5; // -13
>>    if(a>87) return 4;  // -15
>>    if(a>73) return 3;  // -16.5
>>    if(a>61) return 2;  // -18
>>    if(a>49) return 1;  // -20
>> }
>>
>> return 0;
>> }
>>
>>
>>
>> "Levas" <kazkur@pasbobute.com> wrote in message
>> news:o8fkif$q12$1@trimpas.omnitel.net...
>>> nuskaityta ADC reiksme turi buti perskaiciuojama i diskrecius
>>> elementus. (jei idomu, formule y=10^(x/20) )
>>> Taciau visur reiksmiu nereikia, reikia tik 25 specifiniu reiksmiu.
>>> Kaip toki veiksma darytu protingieji? Kad veiktu greitai, teisingai ir
>>> nedaug baitu. Mano du variantai skiriasi tik 10 baitu ilgiu. Aisku
>>> greiciu turetu skirtis stipriai:
>>>
>>> /*
>>> unsigned char v_vu(unsigned int a)
>>> {
>>> unsigned char i=0;
>>> if(a>49) i++;  // -20
>>> if(a>61) i++;  // -18
>>> if(a>73) i++;  // -16.5
>>> if(a>87) i++;  // -15
>>> if(a>109) i++; // -13
>>> if(a>123) i++; // -12
>>> if(a>174) i++; // -9
>>> if(a>195) i++; // -8
>>> if(a>246) i++; // -6
>>> if(a>276) i++; // -5
>>> if(a>292) i++; // -4.5
>>> if(a>309) i++; // -4
>>> if(a>368) i++; // -2.5
>>> if(a>390) i++; // -2
>>> if(a>413) i++; // -1.5
>>> if(a>453) i++; // -0.7
>>> if(a>491) i++; // 0
>>> if(a>520) i++; // +0.5
>>> if(a>551) i++; // +1
>>> if(a>581) i++; // +1.5
>>> if(a>618) i++; // +2
>>> if(a>655) i++; // +2.5
>>> if(a>778) i++; // +4
>>> if(a>980) i++; // +6
>>> if(a>1020) i++; //OVER
>>> return i;
>>> }
>>> */
>>> unsigned char v_vu(unsigned int a)
>>> {
>>> if(a>1020) return 25; //OVER
>>> if(a>980) return 24; // +6
>>> if(a>778) return 23; // +4
>>> if(a>655) return 22; // +2.5
>>> if(a>618) return 21; // +2
>>> if(a>581) return 20; // +1.5
>>> if(a>551) return 19; // +1
>>> if(a>520) return 18; // +0.5
>>> if(a>491) return 17; // 0
>>> if(a>453) return 16; // -0.7
>>> if(a>413) return 15; // -1.5
>>> if(a>390) return 14; // -2
>>> if(a>368) return 13; // -2.5
>>> if(a>309) return 12; // -4
>>> if(a>292) return 11; // -4.5
>>> if(a>276) return 10; // -5
>>> if(a>246) return 9; // -6
>>> if(a>195) return 8; // -8
>>> if(a>174) return 7; // -9
>>> if(a>123) return 6; // -12
>>> if(a>109) return 5; // -13
>>> if(a>87) return 4;  // -15
>>> if(a>73) return 3;  // -16.5
>>> if(a>61) return 2;  // -18
>>> if(a>49) return 1;  // -20
>>>
>>> return 0;
>>> }
>>>
>>>
>>>
>>> --
>>> Bye, Levas
>>>
>>> --
>>> http://www.vabolis.lt
>>
>
> -- 
> Bye, Levas
>
> --
> http://www.vabolis.lt