RTV forum PL | NewsGroups PL

Przykładowy program w assemblerze dla ATmega z konwersją ADC na wartości z tablicy

Szukam programiku

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Przykładowy program w assemblerze dla ATmega z konwersją ADC na wartości z tablicy

michael
Guest

Sat Oct 08, 2005 7:33 pm   



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ę.

Adam Dybkowski
Guest

Sat Oct 08, 2005 9:27 pm   



michael wrote:

Quote:
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.

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.

--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/

Uwaga: przed wysłaniem do mnie maila usuń "123" z adresu.

Miłosz K.
Guest

Sat Oct 08, 2005 10:05 pm   



Adam Dybkowski napisał(a):

Quote:
Hmm, a gdzie tu filozofia?

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.



--
Miłosz Kłosowicz

------------------------------------------------
AVR : ISP,JTAG,moduły prototypowe (USB,CAN)
TYPO3: projekty, webhosting, sklepy internetowe
-> http://www.miklobit.com
------------------------------------------------

michael
Guest

Sun Oct 09, 2005 7:24 am   



Adam Dybkowski wrote:
Quote:
michael wrote:

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.


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.

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ć.

michael
Guest

Sun Oct 09, 2005 7:43 am   



michael wrote:
Quote:
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ć.
OKI trochę to trwało, ale skumałem. Dzięki Smile.


Adam Dybkowski
Guest

Sun Oct 09, 2005 7:36 pm   



michael wrote:

Quote:
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.

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ć.

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).

--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/

Uwaga: przed wysłaniem do mnie maila usuń "123" z adresu.

elektroda NewsGroups Forum Index - Elektronika Polska - Przykładowy program w assemblerze dla ATmega z konwersją ADC na wartości z tablicy

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map