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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 5 cze 2025, o 23:45


    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 ] [ Zaznacz wszystko ]
    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: 27406
    Lokalizacja: Szczecin
    Pomógł: 1043

    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 5 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:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO