Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Przetwornik ADC w ATmega8 i pomiar z dwóch kanałów

Sławek5
-
-
Posty:485
Rejestracja:15 sie 2003, o 16:40
Lokalizacja:Szczecin
Kontaktowanie:
Przetwornik ADC w ATmega8 i pomiar z dwóch kanałów

Postautor: Sławek5 » 25 lis 2007, o 08:20

Chcałem prosić o poradę.
Chcę zastosować ATMega8 i wewnętrzne przetworniki A/C. Pomiar ma być dokonywany z dwóch kanałów. Ma to wyglądać tak że kanał jest podawany jako argument w funkcji (program w C).

Kod: Zaznacz cały

unsigned int adc(unsigned char kanal); { ADMUX=0x40 | kanal; ADCSR|=0x40; while((ADCSR&0x40)!=0); return ADC; }
W nocie katalogowej czytałem ze pierszy pomiar po uruchomieniu przetwornika (wpisaniu do ADEN) zajmuje najdłużej bo 25 cykli zegarowych a pozostałe tylko 13.

Natomiast nie mogę znaleść nic na temat ile czasu potrzebuje przetwornik po zmianie kanału wejsciowego na ustabilizowanie się zanim można rozpocząć konwersję.

Inaczej mówiąc czy po zmianie kanału wejściowego mogę od razu wpisać 1 do ADSC czyli rozpocząć pomiar jak w funkcji adc().


Samo wywołanie ma byc tak realizowane:

Kod: Zaznacz cały

while(1){ dana1=adc(1); //odczyt z kanału 1 dana2=adc(2); //odczyt z kanału 2 }
A co ze zmiana napięcia odniesienia? Czy są jakieś zależności czasowe?

Jurek Szczesiul
-
-
Posty:175
Rejestracja:10 paź 2003, o 20:44
Lokalizacja:Białystok
Kontaktowanie:

Re: Przetwornik ADC w ATmega8 i pomiar z dwóch kanałów

Postautor: Jurek Szczesiul » 25 lis 2007, o 19:05

Natomiast nie mogę znaleść nic na temat ile czasu potrzebuje przetwornik po zmianie kanału wejsciowego na ustabilizowanie się zanim można rozpocząć konwersję.
Pdf >> fragment 'Analog Input Circuitry'

Pozdrowienia Jurek S.

Sławek5
-
-
Posty:485
Rejestracja:15 sie 2003, o 16:40
Lokalizacja:Szczecin
Kontaktowanie:

Postautor: Sławek5 » 25 lis 2007, o 20:01

A mogę po prostu prosić o wyjaśnienie ze strony praktycznej. Tzn albo jak ma to wyglądać albo jak to naprawić?
Czy to co napisałem powyżej jest poprawne czy moe to trzeba zmienić.
Proszę :-)

Jurek Szczesiul
-
-
Posty:175
Rejestracja:10 paź 2003, o 20:44
Lokalizacja:Białystok
Kontaktowanie:

Postautor: Jurek Szczesiul » 27 lis 2007, o 21:02

A mogę po prostu prosić o wyjaśnienie ze strony praktycznej. Tzn albo jak ma to wyglądać albo jak to naprawić?
Czy to co napisałem powyżej jest poprawne czy moe to trzeba zmienić.
Proszę :-)
Kod pewnie będzie w porządku - chociaż IMHO zgrabniej zrobić na przerwaniach.
Wspomniany fragment opisuje wejścia analogowe ADC : wymagają one impedancji
źródła sygnału nie większej niż 10k - i wtedy opóźnienia po przełączeniu kanałów
są pomijalne, można startować od razu. Jeśli tego warunku konstrukcyjnie nie spełnisz
( np. zrobisz dzielnik 100k+100k ) wtedy rzeczywiście przeładowanie wewnętrznej
pojemności toru ADC może wymagać większych czasów i konieczne będą dodatkowe
opóźnienia. Zresztą - zrób eksperyment z najbardziej niekorzystnym przypadkiem
przełączania pomiędzy Vcc i 0V i zobacz czy wynik nie jest przekłamany.

PS - atmega 8 ma wadę konstrukcyjną układu ADC ( wewnętrzne zwarcie AVcc z Vcc,
które uniemożliwia dobre odfiltrowanie napięcia zasilania ADC; jeśli to możliwe
weź 88.

Pozdrowienia Jurek S.

Sławek5
-
-
Posty:485
Rejestracja:15 sie 2003, o 16:40
Lokalizacja:Szczecin
Kontaktowanie:

Postautor: Sławek5 » 28 lis 2007, o 05:50

Czy to zwarcie o którym mowa między AVcc a Vcc powoduje ze nie ma konieczności stosowania dławika i kondensatora, o którym pisza w dokumentacji. Czy można po prostu zewrzezć AVcc z Vcc?

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty:2653
Rejestracja:24 sty 2005, o 00:39
Lokalizacja:Winny gród

Postautor: pajaczek » 28 lis 2007, o 16:25

Coz, jesli tam jest blad jak opisal Jurek, to nie tyle nie ma koniecznosci co sensu stosowania dlawika - czy jakiejkolwiek innej formy filtracji.

Wróć do „AVR/AVR32”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 14 gości