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 ]