Szukam programiku

Szukam jakiegoś gotowca programu w assemblerze, który wykorzystuje wewnętrzny przetwornik ADC ATmega i zawiara tablicę konwersji (dane z ADC na właściwe wartości). Potrzebuję ten programik żeby wykumać jak robi się konwersje wartości z ADC za pomocą tablicy. Z góry dziękuję.

Reply to
invalid unparseable
Loading thread data ...

Hmm, a gdzie tu filozofia? Przyjmujac, ze korzystasz z wewnetrznego napiecia referencyjnego 2,56V i mierzysz napiecie z rozdzielczoscia 10 bitow czyli 1024 wartosci to wartosc 0 oznacza 0V a wartosc 1023 oznacza 2,56V. Czyli jeden kwant przetwornika to 2,56V/1023 = około 2,5 mV. A więc jeżeli z pomiaru dostałeś np. wartość 321 to odpowiada to napięciu 321*(2,56V/1023) = około 803,3 mV. Wg mnie tablica konwersji zbędna. Mnożenie przez 2,5 [mV] wykonuje się nawet w asemblerze bardzo prosto. Pomnóż przez 2 i dodaj połowę pierwotnej wartości. Wynik wychodzi w mV.

Reply to
Adam Dybkowski

Adam Dybkowski napisał(a):

No chyba że zależność jest nieliniowa... To wtedy w najprostszym przypadku odżałujesz pare kilo pamięci i wpiszesz tam wartosći , a adresem w tablicy wartosci będzie wartośc odczytana z ADC. Ale zwykle udaje się jakoś aproksymować zalezność i wtedy tylko trzeba badać przedział w ktrórym, miesci się wartośc z ADC i z tablicy pobierać współczynniki do funkcji aproksymującej. Ilość danych jest dużo mniejsza.

Reply to
"Miłosz K."

No właśnie masz rację z mnożeniem nie ma problemu. Dzielenie też można rozwiązać, ale wydaje mi się, że w przypadku dzielenia może ta operacja trochę długo trwać.

Reply to
invalid unparseable

OKI trochę to trwało, ale skumałem. Dzięki :).

Reply to
invalid unparseable

Często wystarczy przejść na wyższą rozdzielczość (np. operacje na liczbach 32-bitowych) i wykonać mnożenie operując w arytmetyce stałoprzecinkowej. Aby wynik pomiaru podzielić przez np. 33, wystarczy zamiast tego pomnożyć go przez 1/33 czyli około 1986/65536. Czyli wynik pomiaru pomnożyć przez 1986 a potem wziąć 2 starsze bajty iloczynu. Błąd zaokrąglenia jest poniżej 1 bitu. Dzielenie nie jest takie straszne jeżeli się dzieli zawsze przez stałą wartość - bo prościej mnożyć przez odwrotność a wiele procesorów ma mnożenie sprzętowe (w tym ATmega).

Reply to
Adam Dybkowski

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.