Witajcie,
Problem powinien być trywialny a nie jest. Dotychczas stosowałem auto trigger ADC na ATtiny13 i działało to przewidywalnie według datasheeta, ale kod przeniosłem na ATmege168 i działać przestało, mimo że wszystko ustawione według dokumentacji. Po krótce:
- uruchamiam timer0 w trybie CTC by zdarzenie Compare Match A zachodziło co 250us (4kHz),
- uruchamiam przetwornik ADC, ustawiam mu Auto Trigger Enable i Auto Trigger Source: Timer/Counter0 Compare Match A,
- w przerwaniu ISR(ADC_vect) "macham" zwyczajnie pinem by sprawdzić, czy wyzwalacz działa...
i NIE działa. Autotrigger udaje się tylko uruchomić w trybie Free Running, natomiast każdy, inny wyzwalacz nie działa. ATmega168 taktowana kwarcem 16MHz, zasilanie 5V. Kod poniżej:
Obejrzałem też w symulacji na Atmel Studio, czy ustawiane są poszczególne rejestry i wszystko wydaje się być w porządku. Sprawdzane jeszcze na innej Medze48 (tym razem). Też nie działa co oznacza, że gdzieś popełniam błąd. ALE gdzie??? Pozdrowienia... robiw
Problem powinien być trywialny a nie jest. Dotychczas stosowałem auto trigger ADC na ATtiny13 i działało to przewidywalnie według datasheeta, ale kod przeniosłem na ATmege168 i działać przestało, mimo że wszystko ustawione według dokumentacji. Po krótce:
- uruchamiam timer0 w trybie CTC by zdarzenie Compare Match A zachodziło co 250us (4kHz),
- uruchamiam przetwornik ADC, ustawiam mu Auto Trigger Enable i Auto Trigger Source: Timer/Counter0 Compare Match A,
- w przerwaniu ISR(ADC_vect) "macham" zwyczajnie pinem by sprawdzić, czy wyzwalacz działa...
i NIE działa. Autotrigger udaje się tylko uruchomić w trybie Free Running, natomiast każdy, inny wyzwalacz nie działa. ATmega168 taktowana kwarcem 16MHz, zasilanie 5V. Kod poniżej:
Kod: C / C++
Obejrzałem też w symulacji na Atmel Studio, czy ustawiane są poszczególne rejestry i wszystko wydaje się być w porządku. Sprawdzane jeszcze na innej Medze48 (tym razem). Też nie działa co oznacza, że gdzieś popełniam błąd. ALE gdzie??? Pozdrowienia... robiw