Szukam programiku
Masz problem? Zapytaj na forum elektroda.pl
From: michael <"student100 NOSPAM "_at_nospam_o2.pl>
Subject: Szukam programiku
Date: Sat, 08 Oct 2005 22:33:16 +0200
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ę.
From: Adam Dybkowski <adybkows123_at_nospam_amwaw.edu.pl>
Subject: Re: Szukam programiku
Date: Sun, 09 Oct 2005 00:27:19 +0200
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.
--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/
Uwaga: przed wysłaniem do mnie maila usuń "123" z adresu.
From: =?ISO-8859-2?Q?=22Mi=B3osz_K=2E=22?= <news_at_nospam_miklobit.WYTNIJTO.com>
Subject: Re: Szukam programiku
Date: Sun, 09 Oct 2005 01:05:18 +0200
Adam Dybkowski napisał(a):
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
------------------------------------------------
From: michael <"student100 NOSPAM "_at_nospam_o2.pl>
Subject: Re: Szukam programiku
Date: Sun, 09 Oct 2005 10:24:04 +0200
Adam Dybkowski wrote:
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ć.
From: michael <"student100 NOSPAM "_at_nospam_o2.pl>
Subject: Re: Szukam programiku
Date: Sun, 09 Oct 2005 10:43:20 +0200
michael wrote:
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 :).
From: Adam Dybkowski <adybkows123_at_nospam_amwaw.edu.pl>
Subject: Re: Szukam programiku
Date: Sun, 09 Oct 2005 22:36:12 +0200
michael wrote:
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.