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



Teraz jest 28 mar 2024, o 22:40


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
 Tytuł: ADC - ADIF
PostNapisane: 23 maja 2012, o 14:54 
Offline
Użytkownik

Dołączył(a): 05 lis 2011
Posty: 81
Pomógł: 0

Witam Serdecznie

Pisząc program do obsługi ADC (ATmega8), mam jedną niepewność mianowicie w nocie widnieje:
Cytuj:
After the conversion is complete (ADIF is high), the conversion result can be found in the ADC
Result Registers (ADCL, ADCH).

czyli, że po zakończeniu konwersji ADIF przyjmuje stan wysoki - 1 i wtedy można odczytać wartość pomiaru z bitów ADCL i ADCH
i tu wszystko jest jasne tylko teraz przeglądając program napisany w książce nie sprawdza się ADIF, lecz ADSC i teraz nie wiem czy ta wersja jest poprawna z ADIF. Dodam, że testowałem z ADIF jak i również ADSC i obie działają tak samo. Poniżej mój program


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: ADC - ADIF
PostNapisane: 23 maja 2012, o 15:19 
Offline
Moderator
Avatar użytkownika

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

Jest mała różnica w działaniu ADSC i ADIF


ADSC - jest tak długo ustawiony na 1 jak długo trwa pomiar i po tym fakcie jest zerowany przez procek

ADIF - to flaga przerwania i jest ona zapalana gdy pomiar zostanie ukończony

oczywiście programowo można sprawdzać i to i to

tylko że w przypadku ADSC czekamy w pętli aż się wyzeruje

natomiast w przypadku ADIF czekamy aż pojawi się jedynka

oczywiście po zezwoleniu na pomiar czyli po ustawieniu ADSC na jeden

ty masz w kodzie błąd bo masz tak

Kod:
while(ADCSRA & (1<<ADIF))


a gdzie jest średnik na końcu ? z tego wynika że bez średnika gdy zostanie ustawiona flaga czyli pomiar zakończony do dopiero wtedy wyświetli się coś na LCD. Ale że i tak to wszystko odbywa się strasznie szybko to dla twoich oczu nie ma to żadnej różnicy.

powinieneś mieć albo tak:
Kod:
while( !( ADCSRA & (1<<ADIF)) ) ;


czyli po zezwoleniu na pomiar trwa pętla nieskończona aż do czasu gdy flaga będzie = 1

albo powinieneś tak:

Kod:
while( ADCSRA & (1<<ADSC) ) ;


czyli pętla trwa dotąd dokąd bit ADSC jest = 1

_________________
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  
 Tytuł: Re: ADC - ADIF
PostNapisane: 23 maja 2012, o 16:01 
Offline
Użytkownik

Dołączył(a): 05 lis 2011
Posty: 81
Pomógł: 0

aha, rozumiem różnice i dziękuję za wskazanie błędu jak i za wytłumaczenie ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: ADC - ADIF
PostNapisane: 24 paź 2014, o 21:22 
Offline
Użytkownik

Dołączył(a): 04 kwi 2013
Posty: 107
Lokalizacja: Zabrze
Pomógł: 0

Cz poprawny jest też zapis skrócony:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

lub
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: ADC - ADIF
PostNapisane: 24 paź 2014, o 21:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 sty 2014
Posty: 39
Lokalizacja: Pszczyna
Pomógł: 4

Nie, te zapisy są błędne, musisz odczytać wartości z rejestrów, a samo ADIF to tylko makro do liczby 4, a ADSC to makro liczby 6.



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: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 7 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