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ę

Adc 10bit->8bit konwersja danych

harriet
-
-
Posty: 28
Rejestracja: 28 maja 2003, o 14:44
Lokalizacja: Kraków

Adc 10bit->8bit konwersja danych

Postautor: harriet » 22 sie 2007, o 10:20

Witam

1. Czy ktoś mógłby mi wytłumaczyć jak przeprowadzić konwersję z przetwornika 10bit (2 bajty) w M8 na 8bit (1bajt) aby dane zajmowały mniej miejsca - próbkuje 32khz.

2. Czy może da się jakoś ustawić przetwornik aby samplował z dokładnością 8bit ??

Pozdrawiam
Łukasz

radzio
Moderator
Moderator
Posty: 965
Rejestracja: 13 maja 2003, o 10:33
Lokalizacja: Sosnowiec
Kontaktowanie:

Postautor: radzio » 22 sie 2007, o 10:59

Ustawiasz bit ADLAR z rejestru ADMUX i w rejestrze ADCH masz 8 starszych bitów wyniku konwersji, a młodsze z ADCL ignorujesz.

harriet
-
-
Posty: 28
Rejestracja: 28 maja 2003, o 14:44
Lokalizacja: Kraków

Postautor: harriet » 22 sie 2007, o 22:26

Dzięki
a jak to w bascomie ustawić? i czy wystarczy raz ustawić ten bit i tylko czytać już cały czas tylko rejestr ADCH ?

radzio
Moderator
Moderator
Posty: 965
Rejestracja: 13 maja 2003, o 10:33
Lokalizacja: Sosnowiec
Kontaktowanie:

Postautor: radzio » 24 sie 2007, o 09:15

Jak ustawić bit? Zapewne tak samo jak pin portu a jak nie to wykonać OR na obecnej wartości rejestru i z jedynką na pozycji bitu... Wystarczy zrobić to raz i potem tylko czytać ADCH.

radcorp
-
-
Posty: 79
Rejestracja: 2 sty 2006, o 15:52
Lokalizacja: Polska

Postautor: radcorp » 24 sie 2007, o 11:38

' przetestuj ten programik

Kod: Zaznacz cały

Declare Function _get_adc(byval Channel As Byte ) As Byte Config Adc = Single , Prescaler = 2 , Reference = Internal Admux = Admux Or &H20 Start Adc Dim W As Byte , Channel As Byte '------------------------------------------------------------------------------ ' '------------------------------------------------------------------------------ Do W = _get_adc(channel) Print "Channel " ; Channel ; " value " ; W Incr Channel If Channel > 7 Then Channel = 0 Wait 1 Loop End '------------------------------------------------------------------------------ ' '------------------------------------------------------------------------------ Function _get_adc(byval Channel As Byte ) As Byte Local I As Byte Channel = Channel And &H07 I = Admux I = I And &HF0 I = I Or Channel Admux = I Adcsra = Adcsra Or &H40 Do I = Adcsra I = I And &H40 If I = 0 Then Exit Do End If Loop _get_adc = Adch End Function
Kod proszę umieszczać między tagami 'code'. radzio
Ostatnio zmieniony 24 sie 2007, o 11:39 przez radcorp, łącznie zmieniany 1 raz.

harriet
-
-
Posty: 28
Rejestracja: 28 maja 2003, o 14:44
Lokalizacja: Kraków

Postautor: harriet » 27 sie 2007, o 20:09

Witam
Dzięki za pomoc jednakże zrobiłem to inaczej

Kod: Zaznacz cały

wadc as byte liczniczek as word Admux = &B11100000 ' ustawienie adc zgodnie z notą i to co mi trzeba 'Start Adc Adcsra = &B11100000 start adc zgodnie z notą jako free running czyli konwersja ciągła Liczniczek = 0 Do Incr Liczniczek Wadc = Adch Print Adch ; "--" ; Wadc Loop Until Liczniczek = 512
Dla testu podłączyłem potencjometr i sprawdziłem zakres - liczby pomiędzy 2 a 252

Niestety twój programik nie zadziałał - wrzuciłem go dla testu ale już nieszukałem co poprawić.

Pozdrawiam i dzięki
Łukasz

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Google [Bot] i 79 gości