Witam.
Zwracam się do Was z dziwnym problemem, który spędza mi sen z powiek. Pacjent to Xmega 128A3U, którą próbuje zmusić do do uruchomienia przetwornika ADC.
Postaram się ogólnie nakreślić w czym problem, a następnie przedstawie kod źródłowy obsługi przetwornika.
Korzystam z dwóch przetworników ADC , tj ADC A oraz ADC B. Wszystkie kanały w obu przetwornikach są wyzwalane ręcznie w przerwaniu a odczyt z kanału dokonuje w przerwaniu czy też z debugera. Przetwornik ADC B pracuje z częstotliwością 62,5 kHz oraz jego zerowy kanał odczytuje napięcie BANDGAP. Według dokumentacji wynosi ono 1,1V i tyle też odczytuje. Próba odczytu wartości z pinów zewnętrznych kończy się niepowodzeniem dla każdego kanału. Próbowałem z pomiarem single ended czy pomiaru różnicowego a nawet ze znakiem czy bez znaku. Za każdym razem przetwornik coś próbuje tylko nie wiadomo co. Wartości w rejestrze CHRES przeważnie wynoszą około 300 i ta wartość zależy TYLKO od częstotliwości próbkowania przetwornika. Zwieranie do masy czy podawanie napięcia nic nie zmienia.
Przetwornik ADC A pracuje z wyższa częstotliwością wynoszącą 500 kHz. Problem ten sam co wyżej. Nie reaguje na kanały z multipleksera. Czy to pomiar różnicowy czy single ended, ze znakiem czy bez kompletnie to nie ma znaczenia. Wartość w przetwornika zależy tylko od częstotliwości próbkowania.
Dodam, że wszystkie nogi GPIO A oraz GPIO B są ustawione jako wejścia. Każdy kanał, który jest używany ma fragment kodu odpowiedzialny za obsługę przerwania.
Również sprawdzałem kod ze strony Link Oczywiście nadal nie działa.
KOD PROGRAMU:
Zapomniałem o czymś, czy błąd jakiś ?
Zwracam się do Was z dziwnym problemem, który spędza mi sen z powiek. Pacjent to Xmega 128A3U, którą próbuje zmusić do do uruchomienia przetwornika ADC.
Postaram się ogólnie nakreślić w czym problem, a następnie przedstawie kod źródłowy obsługi przetwornika.
Korzystam z dwóch przetworników ADC , tj ADC A oraz ADC B. Wszystkie kanały w obu przetwornikach są wyzwalane ręcznie w przerwaniu a odczyt z kanału dokonuje w przerwaniu czy też z debugera. Przetwornik ADC B pracuje z częstotliwością 62,5 kHz oraz jego zerowy kanał odczytuje napięcie BANDGAP. Według dokumentacji wynosi ono 1,1V i tyle też odczytuje. Próba odczytu wartości z pinów zewnętrznych kończy się niepowodzeniem dla każdego kanału. Próbowałem z pomiarem single ended czy pomiaru różnicowego a nawet ze znakiem czy bez znaku. Za każdym razem przetwornik coś próbuje tylko nie wiadomo co. Wartości w rejestrze CHRES przeważnie wynoszą około 300 i ta wartość zależy TYLKO od częstotliwości próbkowania przetwornika. Zwieranie do masy czy podawanie napięcia nic nie zmienia.
Przetwornik ADC A pracuje z wyższa częstotliwością wynoszącą 500 kHz. Problem ten sam co wyżej. Nie reaguje na kanały z multipleksera. Czy to pomiar różnicowy czy single ended, ze znakiem czy bez kompletnie to nie ma znaczenia. Wartość w przetwornika zależy tylko od częstotliwości próbkowania.
Dodam, że wszystkie nogi GPIO A oraz GPIO B są ustawione jako wejścia. Każdy kanał, który jest używany ma fragment kodu odpowiedzialny za obsługę przerwania.
Również sprawdzałem kod ze strony Link Oczywiście nadal nie działa.
KOD PROGRAMU:
Kod: C / C++
Zapomniałem o czymś, czy błąd jakiś ?
