Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 23 lut 2025, o 15:42


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 9 gru 2014, o 07:59 
Offline
Użytkownik

Dołączył(a): 08 gru 2014
Posty: 53
Lokalizacja: Sz-n
Pomógł: 0

Witam,

Jestem tu nowy, więc jeśli nie ten dział, to proszę o przeniesienie.
W języku C dla AVR programuje od niedawna, wcześniej przez lata siedziałem w Bascomie, ale zdecydowałem się na przesiadkę.

Chciałem się dowiedzieć, jak obsłużyć poprawnie ADC w trybie FreeRunning na wielu kanałach? Jeśli pojawi się flaga ADIF, skąd mam wiedzieć, z którego kanału jest zmierzona wartość w rejestrach ADCH i ADCL?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2014, o 16:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
m@ciej napisał(a):
skąd mam wiedzieć, z którego kanału jest zmierzona wartość w rejestrach ADCH i ADCL?

Skoro nikt nie pisze "na pewno" ja odpowiem "chyba" ... po znajomości ustawienia w danej chwili MUX'ów ( rejestry konfiguracyjne PIN wejściowy ).

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2014, o 16:42 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27359
Lokalizacja: Szczecin
Pomógł: 1042

m@ciej napisał(a):
Chciałem się dowiedzieć, jak obsłużyć poprawnie ADC w trybie FreeRunning na wielu kanałach?

Warto właśnie zacząć od podstaw czyli jak się obsługuje ADC na wybranym kanale i to obsłużyć - to nie byłoby w ogóle pytania ;) bo przecież po to jest właśnie rejestr ADMUX. Reasumując - nie trzeba zgadywać z którego pomiaru jest wynik - to ty jako programista o tym decydujesz

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2014, o 17:39 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

pewna mądra książka napisał(a):
"...zmiana stanu bitów MUX zaczyna obowiązywać dopiero przy kolejnym pomiarze, gdyż w trybie ciągłej konwersji ich zmiana zawsze zachodzi w sytuacji, kiedy przetwornik zajęty jest przetwarzaniem sygnału"

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2014, o 13:28 
Offline
Użytkownik

Dołączył(a): 08 gru 2014
Posty: 53
Lokalizacja: Sz-n
Pomógł: 0

Na jednym kanale to banał. Ustawiamy ADC, ustawiamy MUXa i polecenie konwersji na początku programu, a w pętli głównej (najlepiej chyba) oczekujemy na flagę ADIF i jak się pojawi, przepisujemy do potrzebnej zmiennej dane z rejestrów ADCH i ADCL.

Jednak konieczność przełączania MUXa w pętli powoduje, że jak już pojawi się flaga ADIF, skąd mam wiedzieć, z którego kanału dane pochodzą? Ponownie sprawdzać MUX?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2014, o 07:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
Ja to robiłem tak ( fragmenty kodu ):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO