PIC 16F676 a výpočet aritmetického průměru z nasbíraných dat

Zdravím,

měl bych dotaz, jak sbírat data a počítat z nich průměr (lépe řečeno jak počítat ten průměr, data sbírat zvládám).

Dejme tomu mi přijde 230, 200, 30, 200, 255 a já bych z toho potřeboval získat 915/5=183, ale následující krok přijde třeba 100 a pak to je 1015/6=169 atd. bude to plynule pokračovat dál dokud se neukončí příjem dat, kde není předem specifikováno množství…

Dá se říci, že potřebuji poradit jak udělat vícebitové dělení (do jedne proměné (složené z několika bytu) si budu ukládat součet dat a do druhé počet dat, ale tím se předem omezím na nějakou max. hodnotu), měli by jste nějaký nápad?

:arrow_right: administrator: přejmenováno z "Pic 16F676 a výpočet průměru"

s-o.webnode.cz/matematika-pro-pic/

Děkuji, to mi stačí, s tím si už poradím, proč mi to google nevrátil:(

Impozantní. A proč to rovnou nenapsat v C ?

Já to dělám tak, že všechny průměry co chci počítat se skládají z počtů čísel dělitelných dvěma. Potom stačí velice rychle dělit bitovým posunem. Spoustu výpočtů se dá pak upravit, tak aby dělení vycházelo na mocniny dvou.

Sprav si kruhovy bufer s poctom vzoriek 2^n. Napriklad 32. Potom budes mat suctovu hodnotu. Tu budes priebezne pocitat tak, ze novu vzorku pripocitas a vzorku, na ktorej miesto nasledne ulozis novu vzorku odpocitas. Nemusis potom neustale spocitavat 32 vzoriek, ale pomocou ukazatela spravis jedno pripocitania a jedno odpocitanie. Vysledok ziskas tak, ze na takto vytvarane a udrzovane cislo postves posun o 5 bitov. To je to delenie 32.

Google to má poslední dobou nějak divně poštelovaný, taky už jsem si toho všimnul.