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.

ATmega168 i ADC - czy jest jakaś hierarchia/kolejność wykorzystania ADC?

Daniel_GSM 31 Maj 2015 14:04 756 5
  • #1 31 Maj 2015 14:04
    Daniel_GSM
    Poziom 25  

    Witam,
    Temat pewnie tajemniczy, ale chodzi mi o to czy istnieje jakaś zasada/reguła kolejności wykorzystywania wejść ADC?

    Potrzebuję wykorzystać tylko 2 wejścia analogowe do pomiarów - pozostałe będą niewykorzystane - tzn będę jeszcze wykorzystywał SDA i SCL.

    Czy jest jakaś różnica czy wykorzystam ADC0 i ADC1 lub ADC6 i ADC7? Czy może w ogóle mogę mieszać np ADC0 i ADC6 i niczego to nie zmieni w dokładności pomiarów i zakłoceń?
    Czy to w ogóle ma jakieś znaczenie?

    Obudowa TQFP
    Oczywiście zasilanie i filtrowanie wykonane zgodnie z poradami, które wyszukałem w internecie.

    0 5
  • #2 31 Maj 2015 14:47
    tmf
    Moderator Mikrokontrolery Projektowanie

    Możesz sobie wykorzystać dowolne wejścia ADC. Jest ich więcej dla wygody użytkownika, to które wykorzystasz zależy więc wyłącznie od ciebie.

    0
  • #3 31 Maj 2015 15:39
    strikexp
    Poziom 27  

    To może ja napiszę bardziej przejrzyście. Mikrokontroler wykonuje kolejne rozkazy z programu, w tym też skoki do odpowiednich miejsc w owym programie. Jednym z takich rozkazów jest uruchomienie przetwornika A/C. Gdy mikrokontroler napotka taki rozkaz to pobiera z określonych rejestrów ich wartości w celu uruchomienia odpowiedniej konfiguracji przetwornika A/C (między innymi numer wejścia ADC). Dlatego aby móc wykonać pomiar trzeba najpierw ustawić odpowiednio dane rejestry.
    Pomiar też nie następuje w trakcie jednego taktu mikrokontrolera i trzeba zaczekać na jego zakończenie. Gdy pomiar zakończy się i przetwornik A/C zostanie wyłaczony, można ustawić inną jego konfigurację (czytaj numer wejścia ADC) i wykonać kolejny pomiar.
    Jedynym programowym ograniczeniem korzystania z wejść ADC, jest konieczność zaczekania aż przetwornik A/C zakończy poprzedni pomiar. Dzieje się tak dlatego że przetwornik jest jeden a wejść kilka, i pomiar może być wykonywany w jednej chwili jedynie na jednym z nich.

    0
  • #4 31 Maj 2015 15:41
    dondu
    Moderator Mikrokontrolery Projektowanie

    Daniel_GSM napisał:
    Czy jest jakaś różnica czy wykorzystam ADC0 i ADC1 lub ADC6 i ADC7? Czy może w ogóle mogę mieszać np ADC0 i ADC6 i niczego to nie zmieni w dokładności pomiarów i zakłoceń?
    Czy to w ogóle ma jakieś znaczenie?

    Do tego co napisali koledzy wyżej należy dodać, że część wejść ADC jest zasilana z Vcc, a nie AVcc:

    Atmega168 napisał:
    AVCC is the supply voltage pin for the A/D Converter, PC3:0, and ADC7:6. It should be externally
    connected to VCC, even if the ADC is not used. If the ADC is used, it should be connected to VCC
    through a low-pass filter. Note that PC6..4 use digital supply voltage, VCC.


    A dlaczego tak jest? Ponieważ w przypadku ATmerga8 piny PC4 i PC5 to piny związane z interfejsem TWI.

    Dlatego czasami można/należy wziąć to pod uwagę. Niestety poza tą uwagą, nie znajdziemy w dokumentacji więcej szczegółów w tym zakresie.

    Jedynym potwierdzeniem jest jeszcze fragment:

    Atmega168 napisał:
    If any ADC [3..0] port pins are used as digital outputs, it is essential that these do not
    switch while a conversion is in progress. However, using the Two-wire Interface
    (ADC4 and ADC5) will only affect the conversion on ADC4 and ADC5 and not the
    other ADC channels.


    Konkluzja - jeśli można wybierać, należy wybierać te piny ADC, które zasilane są z AVcc.

    0
  • #5 31 Maj 2015 22:37
    tmf
    Moderator Mikrokontrolery Projektowanie

    strikexp napisał:

    Jedynym programowym ograniczeniem korzystania z wejść ADC, jest konieczność zaczekania aż przetwornik A/C zakończy poprzedni pomiar. Dzieje się tak dlatego że przetwornik jest jeden a wejść kilka, i pomiar może być wykonywany w jednej chwili jedynie na jednym z nich.


    Nie trzeba czekać na koniec pomiaru - zmiana wartości rejestru multiplexera wejść nie odnosi skutku do czasu zakończenia bieżącego pomiaru. Sekwencja:
    1. ustaw mux,
    2. rozpocznij pomiar,
    3. zmień mux,
    4. odczytaj wynik,
    5. rozpocznij pomiar
    jest poprawna i prowadzi do najbardziej efektywnego wykorzystania ADC.

    0
  • #6 31 Maj 2015 23:05
    strikexp
    Poziom 27  

    @tmf
    Zacytowałeś zły fragment mojego tekstu i twoja wypowiedź stałą się mało przejrzysta.
    Oczywiście wiem że można zmienić rejestry w czasie pomiarów, przecież pisałem wcześniej że mikrokontroler pobiera te wartości a nie działa według nich. Jednak nieco się zaplątałem i tak wyszło dwuznacznie.

    0