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

[Xmega128A3U] Jak skonfigurować ADC w Xmega128A3U do pomiaru na 16 pinach co 5ms?

grabki95 06 Lis 2013 21:55 1896 1
REKLAMA
  • #1 12923433
    grabki95
    Poziom 14  
    Witam,
    jestem w trakcie czytania książki AVR Praktyczne projekty. Niestety jak do tej pory nie ma nic o ADC i sądząc po menu, nic o nim nie będzie. A ja jestem w trakcie pisania programu, i muszę co 5ms dokonać pomiaru ADC na wszystkich 16 pinach. W związku z tym zwracam się do was z prośbą, czy moglibyście rzucić okiem, na programy, które udało mi się wykombinować.
    Moja funkcja ADC_init wygląda tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Z kolei funkcja do pomiaru ( a potrzebne będą 2? analogiczna dla pinów 4-7 i 12-15) wygląda tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Czy to zadziała? Czy prawidłowo inicjalizuję ADC? Czy dobrze rozumiem, że w tym samym czasie mogę uruchomić po 4 kanały dla ADCA oraz ADCB?
  • REKLAMA
  • Pomocny post
    #2 12924551
    tmf
    VIP Zasłużony dla elektroda
    O ADC będzie w drugiej części, już wkrótce.
    Tak, możesz zainicjować jednocześnie wszystkie kanały, lecz konwersja nie będzie jednoczesna. Cztery kanały ADC tworzą potok, konwersja w ramach potoku odbywa się co 1 takt CLKADC (kanały odpalane są zgodnie z priorytetem). Dla dwóch oddzielnych ADC jakie ma XMEGA możesz przetworniki odpalić jednocześnie.
    Jeśli chcesz dokonać prawie jednoczesnej konwersji na wszystkich pinach to wykorzystaj funkcję skanowania ADC - w połączeniu z DMA i event system da ci to szybkie przemiatanie (łącznie 8 taktów ADC) wejść analogowych z umieszczeniem pomiarów we wskazanym miejscu pamięci.
    Pamiętaj też, że dla trybu z pojedynczym wejściem (single ended) masz spory offset, wypadałoby go najpierw zmierzyć, a potem odjąć od wyników pomiaru.
REKLAMA