Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ADC i Atmega32 - kilka wejsc ADC jednoczesnie?

kasaidolar 14 Sie 2007 12:44 2499 4
  • #1 14 Sie 2007 12:44
    kasaidolar
    Poziom 19  

    Witam serdecznie!
    Mam problem z podlaczeniem wiekszej ilosci sygnalow na przetworniki w atmedze32. Udalo mi sie podlaczyc i ladnie czytac z jednego wejscia a ja potrzebowalbym z dwóch lub trzech. Wiem ze mozna z 8. Poniżej zamieszczam kod. Prosze dajcie mi jakies wskazowki jak mierzyc z ADC1, ADC2... itd (z ADC0 jest chyba ok).

    ////////////////////////// ADC_init ////////////////////////////////////////////
    void ADC_init(void)
    {
    DDR_AD=0x00; // Port jako wejścia
    PORT_AD=0x00; // Port C wejścia bez podciągania

    // Wybranie wewnętrznego żródła napięcia odniesienia
    ADMUX |= _BV(REFS0);
    ADMUX |= _BV(REFS1);
    // Wybranie sposobu zapisu wyniku z wyrównaniem do lewej (osiem starszych bitów wyniku w rejestrze ADCH)
    ADMUX |= _BV(ADLAR);
    // Zezwolenie na konwersję
    ADCSRA |= _BV(ADEN);
    // Wybranie częstotliwości dla taktowania przetwornika (1/8 częstotliwosci zegara kontrolera)
    ADCSRA |= _BV(ADPS0);
    ADCSRA |= _BV(ADPS1);


    ADCSRA |= _BV(ADSC); // Rozpoczęcie przetwarzania
    while(bit_is_set(ADCSRA,ADSC)) // Oczekiwanie na zakończenie przetwarzania
    {};


    }

    pomiar1=ADCH; // np

    /////////////////////////////////////////////////////////////////////////////////////



    Bardzo prosze o Wasze uwagi!
    Pozdrawiam serdecznie,
    Paweł

    0 4
  • #2 14 Sie 2007 12:47
    bobbyAIR
    Poziom 20  

    Wystarczy w rejestrze ADMUX wybrać sobie kanał z którego chcesz pomiar. Opisane jest to na stronie 213 dokumentacji

    0
  • #3 14 Sie 2007 14:01
    kasaidolar
    Poziom 19  

    Dzieki za odp :)
    Sugerujesz cos takiego?

    ADMUX |= _BV(PA1); //lub np 0x02 dla ADC1

    a domyslnie jest ustawione dla ADC0?

    Pozdrawiam

    0
  • #4 14 Sie 2007 15:48
    ginar
    Poziom 21  

    Domyślne ustawiny jest ADC0 w rejestrze ADMUX 4 ostatnie bity odpowiedzialne są za wybór kanału wytarczy ustawiać odpowiednie bity

    0
  • #5 14 Sie 2007 16:49
    kasaidolar
    Poziom 19  

    Super dziala! Dziekuje za pomoc. Czyli w programie jak bede chcial korzystac z roznych wejsc jednoczesnie to bede musial zmieniac wartosc w ADMUX i robic konwersje tak?
    Pozdrawiam!

    0