logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmega8][C] Pytania o ADC

oskar777 03 Cze 2010 23:43 1178 3
REKLAMA
  • #1 8152794
    oskar777

    Poziom 26  
    Witam was, mam takie pytanie nawet kilka, są one spowodowane tym, że chce poukładać wiedzę jaką zdobyłem i zdobywam.

    1. Przerwania ADC
    Zakładając, że przerwania mam uruchomione wpis do rejestru ADIE.
    To jak one działają
    Przerwanie uruchamia się po zakończeniu pomiaru i tu pytanie czy to jest jednoznaczne z zakończeniem konwersji ? Widziałem gdzieś kod na sprawdzenie zakończenia konwersji raz w przerwaniu raz w pętli programu.

    2. Jeżeli jestem w trybie free runing to jak zatrzymać ADC tak by we/wy PORTC spełniały jakąś tam inną funkcję
    zapis w stylu
    
    void adc_off(){
    ADCSR &= ~_BV(ADEN);
    }
    

    Nie bardzo chce działać, pomiar nadal się wykonuje.

    3. Jaki jest poprawny kod na sprawdzenie zakończenia konwersji

    
    while(bit_is_set(ADCSRA,ADSC))  {}; // ten
    while(ADCSR&_BV(ADEN)); // czy ten, czy bez różnicy
    


    4. Będąc w trybie Nie- free runing , taki zapis

    
    ADCSRA |= _BV(ADSC);
    

    Uruchamia jedno przetwarzanie (tak mi się wydaje) ?, to żeby wyliczyć średnią kilku pomiarów muszę dać w przerwaniu pętle ? i zsumować kilka wyników ?
    Czyli
    pętla 10x { ADCSRA |= _BV(ADSC); , sprawdzenie_warunku_na_zak_konwersji, odczyt wartości}... suma / 10 = wynik

    5. wynik z przerwania można odczytać w pętli ?

    Zaznaczam, że nasiedziałem się trochę w google ale każdy ma inne pomysły i zaczynam się z tym gubić trochę.

    Będę wdzięczny za pomoc.

    Pozdrawiam
  • REKLAMA
  • #2 8152838
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #3 8153541
    oskar777

    Poziom 26  
    Do pt.2 czyli jak jest w trybie FR to PORTC pracuje tylko jako ADC i nic więcej się nie da z nim zrobić ?, Jak ADC wyłączyć, nie chodzi mi zatrzymać bo chyba ta opcja nie blokuje portu C by był traktowany jako NIE- adc (nie wiem czy jasno wytłumaczyłem). Chodzi mi o to, że jak po zakończeniu konwersji, której pomiar napływał z PC0, chciałem by PC0 np zapalił diodę LED to już się nie dało.
    Do pt.1 jeżeli ADC jest w trybie FR to muszę w przerwaniu sprawdzać stan zakończenia konwersji jeżeli przerwanie generuje się po jego zakończeniu (konwersji)
  • #4 8153568
    Konto nie istnieje
    Poziom 1  
REKLAMA