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

Czas trwania pierwszego pomiaru ADC w ATMega8 - dlaczego 25 cykli?

04 Gru 2006 21:03 3280 14
REKLAMA
  • #1 3295021
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #2 3449080
    tom1eczek
    Poziom 20  
    Posty: 523
    Pomógł: 30
    Ocena: 21
    Czy program ma możliwość sprawdzić jakie jest napięcie referencyjne??

    Bo chyba on otym nawet nie będzie wiedział, jeśli dobrze myślę.
  • #3 3451990
    benedetto
    Poziom 13  
    Posty: 23
    Pomógł: 5
    Ocena: 1
    W dokumentacji pisze wyraźnie:
    "The first conversion after the ADC is
    switched on (ADEN in ADCSRA is set) takes 25 ADC clock cycles(...)"

    Czyli pierwszy pomiar po włączeniu przetwornika bitem ADEN trwa 25 cykli, następne 13. Zmiana napięcia odniesienia nie ma na to wpływu.

    Poza tym to nieistotne bo i tak albo testuje się bit ADSC (czeka na "zero")
    albo zezwala się na przerwanie, gdzie odczytuje się gotowy wynik.
    Nie jest to krytyczne dla programu czy to będzie za 13 czy za 25 cykli.

    Pozdrawiam
  • #4 3452793
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #5 3454271
    ggrunge
    Poziom 17  
    Posty: 307
    Pomógł: 9
    Ocena: 25
    Jak pisze w nocie po wlaczeniu ADC, pierwszy pomiar zabiera 25 cykli poniewaz incjuje jakas analogowa czesc przetwornika, nie znalazlem nic co by moglo sugerwoac ze to sie da zainicjowac wczesniej.

    Jesli chcesz to skonfigurowac przed rozkazem konwersji tak jak mowisz, to czemu by nie zrobic pierwszego pomiaru przed ta konwersja, a dopiero drugi pomiar traktowac jako pierwszy.

    Pozdrawiam,
    Michal
  • #6 3454589
    Konto nie istnieje
    Poziom 1  
  • #7 3454680
    benedetto
    Poziom 13  
    Posty: 23
    Pomógł: 5
    Ocena: 1
    Moim zdaniem inicjacja analogówki następuje zaraz po włączeniu przetwornika (ustawieniu bitu ADEN).
    Jezeli w tym samym czasie rozpoczniemy pomiar (ustawimy bit ADSC) wynik dostaniemy dopiero po 25 cyklach.
    Jeżeli pomiar rozpoczniemy po upływie 10 cylki (zegara ADC oczywiście, a nie CPU) od ustawienia ADEN wynik otrzymamy 13 cykli później.

    Nie jest to może wyraźnie napisane, ale ja tak to rozumiem.
    Można to wywnioskować z rysunków w dokumentacji - ustawienie ADEN włącza zegar przetwornika, zatem pierwsze 12 cykle inicjują analogówkę.

    Moim zdaniem wystarczy jeśli ustawisz bit ADEN np na początku programu głównego razem z konfiguracją portów itd.
    A potem już tylkowyzwalać pomiary.

    PS Jeszcze raz zapytam - dlaczego jest to aż tak ważne?
    Czy konieczna ci jest znajomość momentu próbkowania sygnału z dokładnością do us?
  • #8 3454856
    ggrunge
    Poziom 17  
    Posty: 307
    Pomógł: 9
    Ocena: 25
    Cytat:
    The first conversion after the ADC is switched on (ADEN in
    ADCSRA is set) takes 25 ADC clock cycles in order to initialize the analog circuitry.


    Z tego wynika, ze inicjalizacja analogowki jest realizowana wraz z pierwszym pomiarem, a nie po wlaczeniu ADC.

    A na wykresie rzeczywiscie wyglada to tak jak mowi kolega benedetto.

    Dolaczam sie do pytania :) Czemu to jest az tak wazne?
  • #9 3455709
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #10 3455807
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    hmmm ja tak sobie myślę, że te 13 cykli przy tej częstotliwości to zaledwie ok 400us - czy to dużo?? ja uważam, że nawet zakładając, że jeszcze jakieś inne opóźnienia będą to i tak masz ogromy zapas aby sprawdzać położenie suwaka ... nie sądzisz?
  • REKLAMA
  • Pomocny post
    #11 3456203
    benedetto
    Poziom 13  
    Posty: 23
    Pomógł: 5
    Ocena: 1
    Jednak źle mi się wydawało. Opis znaczenia bitu ADSC jest jednoznaczny:

    "The first conversion afterADSC has been written after the ADC has been enabled,
    or if ADSC is written at the same time as the ADC is enabled,
    will take 25 ADC clock cycles instead of the normal 13.
    This first conversion performs initialization of the ADC."


    Czyli nie ma bata, pierwszy pomiar po włączeniu ADC trwa 25cykli.

    Można by zrobić eksperyment. Napisać programik, który po równo z włączeniem pomiaru uruchamia licznik taktowany takim samym zegarem jak ADC. Po zakończeniu pomiaru zatrzymujemy licznik i zagadka się rozwiąże. ;)

    Z napięciem odniesienia sprawa wygląda podobnie. Pierwszy pomiar po zmianie odniesienia może być fałszywy. Cytat:

    "The first ADC conversion result after switching reference voltage source may be inaccurate,
    and the user is advised to discard this result."



    Wniosek:
    Są dwa wyjścia
    1. szybkie pomiary + częste zmiany odniesienia - zwiększyć zegar, włączyć ADC na początku i zrobić pusty pomiar

    2. oszczedność - włączać ADC tuż przed pomiarem, wykonywać po dwa pomiary i wyłączać ADC, usypiać CPU w czasie pomiaru -

    Kompromis:
    Zwiększyć zegar, robić po dwa pomiary, włączać ADC tylko na czas pomiarów, wyłącząć CPU kiedy się da.

    Jest jeszcze jedno wyjście - zastosować procek MSP430 - tam nie ma takich pułapek ;)

    Pozdrawiam i życzę sukcesów!
  • #12 3458003
    Konto nie istnieje
    Poziom 1  
  • #13 3847337
    WoŹnY
    Poziom 28  
    Posty: 1298
    Pomógł: 76
    Ocena: 149
    Pytanie dospecjalistów od tego proca: Jak szybko procek jest w stanie zmienić kanał pomiarowy? Czy przerwa na 10 cykli zegarowych wystarczy?
  • #14 3857349
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    Zapewne nie dłuzej niz cykl, moze dwa, kwestia ustawienia multiplexera danego portu. Taktowanie z tak wolnym zegarem nie wpłynie zbyt pozytywnie na pomiar ADC ponieważ zalecany czas konwersji to 13-260us. Sugeruje odpalenie procka na 1MHz, można ładnie wykalibrować jego zegar, jeśli jest to konieczne.
    Pozdrawiam
  • #15 3859093
    WoŹnY
    Poziom 28  
    Posty: 1298
    Pomógł: 76
    Ocena: 149
    Jeśli chodzi o mój przypadek to taktuję proca zegarem 8MHz. Jeśli dwa NOPy wystarczą to super, przynajmniej nie będę miał prawie zwłok czasowych, a mi na tym zależy. dzięki.

Podsumowanie tematu

LABEL_AI_GENERATED
W dokumentacji mikrokontrolera ATMega8 pierwszy pomiar ADC po włączeniu przetwornika trwa 25 cykli zegara ADC, ponieważ odbywa się inicjalizacja analogowej części przetwornika. Kolejne pomiary trwają standardowo 13 cykli. Zmiana napięcia referencyjnego ADC nie wpływa na czas trwania pomiaru, jednak pierwszy pomiar po zmianie napięcia odniesienia może być niedokładny i zaleca się jego odrzucenie. Inicjalizacja przetwornika następuje po ustawieniu bitu ADEN, a jeśli pomiar rozpocznie się natychmiast, trwa 25 cykli; jeśli pomiar zostanie opóźniony o około 10 cykli ADC, to trwa on 13 cykli. W praktyce można włączyć ADC na początku programu, a pierwszy pomiar traktować jako inicjalizacyjny, by kolejne były szybsze. W BASCOMie nie ma automatycznego opóźnienia po zmianie napięcia referencyjnego, więc programista musi sam zadbać o odpowiednie opóźnienia. Przy niskich częstotliwościach taktowania (np. 32,768 kHz) 13 cykli ADC to około 400 µs, co może być istotne przy pomiarach w przerwaniach co 1 ms. Zmiana kanału pomiarowego ADC jest szybka i może wymagać jedynie kilku cykli zegara procesora. Zalecane jest taktowanie procesora co najmniej 1 MHz dla poprawnej pracy ADC i kalibracji.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA