Tema: Re: AVR GCC, kaip daryti geriau ir teisingiau
Autorius: Levas
Data: 2017-02-21 22:37:41
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