pawgo2606 napisał: jak mam podzielić nie używając float?? skoro mam wynik który muszę podzielić na rozdzielczość?? (2^24) zakres napięcia wynosi 0 -2,5V.
Pomyśl sobie - masz np rozdzielczość 10-bit czyli 1024 czyli
2,5V / 1024 daje ci 0,002441406V na jeden krok

wyobraź sobie ile tracisz na zaokrąglaniu pracując na liczbach typu float. A czym się to będzie różniło jeśli te liczby przed obliczeniami pomnożysz np przez 1 000 000 (milion) albo i więcej - uzyskasz od razu piękną liczbę całkowitą: 2 441 (odrzucając dalszą część ułamkową)
z tego wynika że można nawet spokojnie pomnożyć nie przez milion a chociażby przez 10 000 ... wtedy będziesz miał 24 albo 244 jeśli pomnożysz * sto tys
dalej rób dokładnie to samo co byś robił na floatach - ale teraz jak widzisz możesz robić operacje na liczbach bez przecinka
fakt wyjdzie ci ogromna wartość wyniku - no ale co za problem na końcu podzielić ten wynik z powrotem przez 1000000 albo po kolei przez coraz mniejsze wartości aby uzyskać to co miałeś na początku przed przecinkiem i po przecinku.
Dostaniesz wtedy dwie liczby całkowite - jedna będzie wyrażała wartość do przecinka a druga po przecinku - jeśli będziesz to potrzebował wyświetlić gdzieś czy wysłać na UART to co za problem zamienić to na ASCII i dodać ręcznie przecinek/kropkę pomiędzy tymi dwoma liczbami
a wszystkie obliczenia na liczbach całkowitych nie dość że wykonają się dużo szybciej, to jeszcze zaoszczędzisz miejsca w pamięci Flash na kod obsługi tego nie mówiąc o tym, że nadal będziesz miał wysoką precyzję obliczeń i nie będą ci nawet przeszkadzać te dwa ostatnie bity na których masz szumy jak piszesz.