Szukam programiku



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
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ę.

Poprzedni Następny
Wiadomość
Spis treści
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.

Poprzedni Następny
Wiadomość
Spis treści
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
------------------------------------------------

Poprzedni Następny
Wiadomość
Spis treści
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ć.

Poprzedni Następny
Wiadomość
Spis treści
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 :).

Poprzedni Następny
Wiadomość
Spis treści
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.