Witam.
Tworzę projekt urządzenia wskazującego opartego na żyroskopie Bosch BMG160 i XMega32a4u. Wykorzystuję interfejs I2C do komunikacji. Odebrane dane z żyroskopu są przekształcane na ruchy kursora. Komunikacja z PC za pomocą sprzętowego USB. Cały projekt tworzę korzystając z frameworku Atmela ASF w Atmel Studio 6.2. Mam taki problem, że przy próbie odczytu/zapisu z żyroskopu zawiesza się mikroprocesor. Stwierdzam to po braku reakcji na naciśnięcie przycisku odpowiadającego za lewy przycisk myszy. Inicjalizacja modułu TWI przechodzi bez problemu jeśli żyroskop jest podłączony. Jeśli odłączę wówczas się nie wykona. Linie SDA i SCL są podciągnięte do zasilania przez rezystory 10k. Poniżej zamieszczam kod i schemat elektryczny. Cały projekt w załączniku.
Proszę o pomoc w rozwiązaniu problemu.
main.c
twim.c
![[XMEGA][TWI][C] - Zawiaszanie się mikroprocesora przy próbie odczytu/zapisu. [XMEGA][TWI][C] - Zawiaszanie się mikroprocesora przy próbie odczytu/zapisu.](https://obrazki.elektroda.pl/5999169400_1400697540_thumb.jpg)
Tworzę projekt urządzenia wskazującego opartego na żyroskopie Bosch BMG160 i XMega32a4u. Wykorzystuję interfejs I2C do komunikacji. Odebrane dane z żyroskopu są przekształcane na ruchy kursora. Komunikacja z PC za pomocą sprzętowego USB. Cały projekt tworzę korzystając z frameworku Atmela ASF w Atmel Studio 6.2. Mam taki problem, że przy próbie odczytu/zapisu z żyroskopu zawiesza się mikroprocesor. Stwierdzam to po braku reakcji na naciśnięcie przycisku odpowiadającego za lewy przycisk myszy. Inicjalizacja modułu TWI przechodzi bez problemu jeśli żyroskop jest podłączony. Jeśli odłączę wówczas się nie wykona. Linie SDA i SCL są podciągnięte do zasilania przez rezystory 10k. Poniżej zamieszczam kod i schemat elektryczny. Cały projekt w załączniku.
Proszę o pomoc w rozwiązaniu problemu.
main.c
Kod: C / C++
twim.c
Kod: C / C++
