Re: sprintf - co dělám blbě?

Jan Waclawek konfera na efton.sk
Pondělí Duben 15 19:48:17 CEST 2024


Mozno to je jednoduche, ale rekurzia v mcu - najma 8-bitovom - je dost
silne nie, kym sa pracne nedokaze ze ano.

Rule of the thumb je, ze 1 bit RAM je 6 tranzistorov kym 1 bit FLASH je 1
tranzistor (ano ja viem ze to je porovnanie jablk s hruskami, ale nejake
cislo treba povedat a toto odovodnenie znie mudro) takze asi podobna je aj
hodnota RAM voci FLASH. 

Je tam dost parametrov aj lokalnych premennych, vsetky int-ovite co je u
AVR 16-bit, takze by som povedal tak od oka ze 12 byte na iteraciu; mozno
nieco z toho moze byt 8-bit? Takze pre 5 cislic to je 60 byte, dobre som
ratal? Cize moj rule of the thumb hovori, ze len tato spotreba je
ekvivalentna asi 360B FLASH, takze to treba priratat na vrch.

Ano, ano ja viem ze aj ine riesenia budu mat spotrebu RAM. Nevravel som
rule of the thumb a ze to treba pracne dokazovat?

wek


----- Original Message ---------------

>Nevím, jestli je to jednodu±e, protoµe je v tom rekurze
>
>static constexpr unsigned BASE = 10u;
>static constexpr unsigned DP   = 3u;
>unsigned utos (char * ptr, const unsigned n, const unsigned d = 0u) {
>   unsigned res = 0;
>   const unsigned m = n / BASE;
>   const unsigned z = n % BASE;
>   if (m > 0 or d < DP) {
>     res += utos (ptr, m, d + 1u);
>     ptr += res;
>   }
>   * ptr++ = '0' + z;  res++;
>   if (d == DP) { * ptr++ = '.'; res++; }
>   * ptr = '\0';
>   return res;
>}
>
>ale funguje to od 0. Pro celá kladná čísla.
>
>Mrazík
>
>On 15. 04. 24 17:25, Jan Waclawek wrote:
>>> JEDNODU©E
>> 
>> To je nova poziadavka, o tej sme sa doteraz vobec nebavili.
>> 
>> Ale ano, ak je priorita JEDNODU©E, tak pokojne arduino, double, printf(),
>> trebars aj micropython alebo PICAXE.
>> 
>> V mcu neexistuje NAJLEPSIE, vzdy je to o poziadavkach a kompromisoch.
>> 
>> wek



Další informace o konferenci Hw-list