Witam! Chcę zbierać pomiary z przetwornika ADC ATMEGA32 z trzech kanałów co określony czas (1,25ms) i wyświetlać je na LCD. Program napisany przeze mnie, niby działa poprawnie, ale pomiary z 3-kanałów są jednakowe, a przecież powinny być różne.
Zaplanowałem, żeby zrobić to w następujący sposób:
-ustawić ADC na generowanie przerwania w momencie zakończenia konwersji
-ustawić timer_1 na generowanie przerwania co 1,25ms
-w przerwaniu od timera_1 wybrać 1-szy kanał pomiarowy i wystartować ADC
-w momencie zakonczenia konwesji z kanału_1, zapis wyniku w zmiennej A1, zmiana kanału na 2 i start ADC
-w momencie zakonczenia konwesji z kanału_2, zapis wyniku w zmiennej A2, zmiana kanału na 3 i start ADC
-w momencie zakonczenia konwesji z kanału_3, zapis wyniku w zmiennej A3
-z moich obliczeń wynika, że wszystkie 3 pomiary zmieszczą się w czasie 1,25ms
-po upływie 1,25ms timer_1 rozpocznie cały proces od początku
Poniżej przedstawiam kod programu. Proszę o pomoc, nie mam już pojęcia gdzie popełniłem błąd. Środowisko to Studio4.
Zaplanowałem, żeby zrobić to w następujący sposób:
-ustawić ADC na generowanie przerwania w momencie zakończenia konwersji
-ustawić timer_1 na generowanie przerwania co 1,25ms
-w przerwaniu od timera_1 wybrać 1-szy kanał pomiarowy i wystartować ADC
-w momencie zakonczenia konwesji z kanału_1, zapis wyniku w zmiennej A1, zmiana kanału na 2 i start ADC
-w momencie zakonczenia konwesji z kanału_2, zapis wyniku w zmiennej A2, zmiana kanału na 3 i start ADC
-w momencie zakonczenia konwesji z kanału_3, zapis wyniku w zmiennej A3
-z moich obliczeń wynika, że wszystkie 3 pomiary zmieszczą się w czasie 1,25ms
-po upływie 1,25ms timer_1 rozpocznie cały proces od początku
Poniżej przedstawiam kod programu. Proszę o pomoc, nie mam już pojęcia gdzie popełniłem błąd. Środowisko to Studio4.
Kod: C / C++