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

[Atmega][C] ADC - free running - sposób działania

owenpe 20 Sty 2010 15:02 7133 7
REKLAMA
  • #1 7563804
    owenpe
    Poziom 17  
    Jak to dokładnie jest z przetwornikiem ADC? Przeglądam forum i datasheeta od atmegi i nie widzę odpowiedzi na moje pytanie. Chodzi mi o tryb free running. Powiedzcie mi czy dobrze rozumiem zasadę działania przetwornika w tym trybie. Zaczynam od rejestru ADMUX, gdzie ustawiam napięcie odniesienia (REFSx) i kanał (MUXx). Później w ADCSRA ustawiam preskaler (ADPSx). Później ustawiam ADEN, ADIE i ADFR. Jeśli dobrze rozumiem, to uC w tej chwili ma skonfigurowany i włączony przetwornik ADC, ale żeby zaczął się pomiar muszę jeszcze ustawić ADSC. Dopiero po ustawieniu tego bitu zaczyna się konwersja, po niej ustawiany jest bit ADIF, a wynik konwesji jest zapisywany do ADCL i ADCH. Zaraz po tym rozpoczyna się następna konwersja i tak do momentu wyzerowania ADSC. Po każdej konwersji nadpisywane są ADCL i ADCH.

    A czy jeśli bit ADSC nie jest ustawiony to coś dzieje się z przetwornikiem? Domyślam się, że co najwyżej zbierany jest sygnał wejściowy, ale nie ma konwersji i zapisu do rejestrów danych. Mam rację?

    Kiedy muszę przepisać dane z rejestrów do jakiejś tablicy, tak aby nie zostały utracone (nadpisane)? Z tego co zrozumiałem, to po ustawieniu ADIF? Ile mam na to czasu?

    Kiedy mogę zmienić kanał multipleksera? W dowolnej chwili czy najpierw muszę wyzerować ADSC i dopiero zmienić kanał? Jeśli mogę w dowolnej, to jak ma się zmiana bitów w ADMUX do faktycznego przełączenia kanału podczas konwersji?

    Chyba tyle... na razie :) Jeśli ktoś mógłby mi to wyjaśnić, to będę wdzięczny :D
  • REKLAMA
  • #2 7564030
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #3 7567349
    owenpe
    Poziom 17  
    No dobrze, już coś wiem:) Ale zostało jeszcze to:
    owenpe napisał:
    A czy jeśli bit ADSC nie jest ustawiony to coś dzieje się z przetwornikiem? Domyślam się, że co najwyżej zbierany jest sygnał wejściowy, ale nie ma konwersji i zapisu do rejestrów danych. Mam rację?

    Kiedy muszę przepisać dane z rejestrów do jakiejś tablicy, tak aby nie zostały utracone (nadpisane)? Z tego co zrozumiałem, to po ustawieniu ADIF? Ile mam na to czasu
  • REKLAMA
  • #4 7567870
    tmf
    VIP Zasłużony dla elektroda
    Masz dowolna ilosc czasu, dopoki prawidlowo (zgodnie z opisem w PDF) nie odczytasz ADC nie zostanie on nadpisany nowa wartoscia.
  • #5 7569634
    owenpe
    Poziom 17  
    No to została już tylko jedna wątpliwość do wyjaśnienia :)
    owenpe napisał:
    A czy jeśli bit ADSC nie jest ustawiony to coś dzieje się z przetwornikiem? Domyślam się, że co najwyżej zbierany jest sygnał wejściowy, ale nie ma konwersji i zapisu do rejestrów danych. Mam rację?
  • REKLAMA
  • #6 7569659
    tmf
    VIP Zasłużony dla elektroda
    W free running mode ten bit sluzy tylko do zainicjowania pierwszej konwersji. Potem nic cie nie interesuje, bo kolejne konwersje zachodza dopiero kiedy odczytasz ADC.
  • #7 7572296
    Konto nie istnieje
    Poziom 1  
  • #8 7583151
    owenpe
    Poziom 17  
    Dzięki wszystkim za wyjaśnienia :) Teraz łatwiej mi będzie napisać program korzystający z przetwornika ADC :)
REKLAMA