Witam.
Mam problem z panelem dotykowym, a dokładniej z sygnałem TIRQ.
Wyświetlacz 2,8 '' ze sterownikiem ILI9325
Panel dotykowy ze sterownikiem XPT2046
Dotyk podpięty do SPI na porcie C. Połączenie 1-1 bez pull-up'ow, rezystorów w linii i kondensatorów.
pin 2 na porcie C dostaje sygnał o dotknięciu ekranu.
Do tej pory potrzebowałem tylko wykrycia dotknięcia ekranu i to działało prawidłowo. Zbocze opadające na pinie 2 zgłaszało przerwanie.
Problem pojawił się gdy chciałem odczytać pozycję.
Wysłanie danych
Ustawienie portu
W odpowiedzi dostaje dane o pozycji, ale po przesłaniu informacji, panel zgłasza tylko raz lub dwa razy przerwanie na pinie TIRQ (niski stan).
Z dokumentacji (strona 24 tabela 5) wynika, że aby ten pin dalej zgłaszał przerwania, należy ustawić bit PD0=0.
Czasami stan stan pinu zostaje niski, czasami wysoki.
Dzieje się tak bez względu, czy mam włączoną optymalizację, czy nie. Taktowanie 2MHz lub 32 MHz i preskaler SPI od 4 do 128 nic nie zmienia.
Czasami nie można się doczekać potwierdzenia odpowiedzi "while(SPIC.STATUS == 0); "
Czy trzeba coś jeszcze nadać, po odebraniu pozycji ?
Czy jak wyślę bajt sterujący i dostane odpowiedź w 2 kolejnych bajtach to wszystko ?
pozdrawiam
Grzegorz.
Mam problem z panelem dotykowym, a dokładniej z sygnałem TIRQ.
Wyświetlacz 2,8 '' ze sterownikiem ILI9325
Panel dotykowy ze sterownikiem XPT2046
Dotyk podpięty do SPI na porcie C. Połączenie 1-1 bez pull-up'ow, rezystorów w linii i kondensatorów.
pin 2 na porcie C dostaje sygnał o dotknięciu ekranu.
Do tej pory potrzebowałem tylko wykrycia dotknięcia ekranu i to działało prawidłowo. Zbocze opadające na pinie 2 zgłaszało przerwanie.
Problem pojawił się gdy chciałem odczytać pozycję.
Kod: text
Wysłanie danych
Kod: text
Ustawienie portu
Kod: text
W odpowiedzi dostaje dane o pozycji, ale po przesłaniu informacji, panel zgłasza tylko raz lub dwa razy przerwanie na pinie TIRQ (niski stan).
Z dokumentacji (strona 24 tabela 5) wynika, że aby ten pin dalej zgłaszał przerwania, należy ustawić bit PD0=0.
Czasami stan stan pinu zostaje niski, czasami wysoki.
Dzieje się tak bez względu, czy mam włączoną optymalizację, czy nie. Taktowanie 2MHz lub 32 MHz i preskaler SPI od 4 do 128 nic nie zmienia.
Czasami nie można się doczekać potwierdzenia odpowiedzi "while(SPIC.STATUS == 0); "
Czy trzeba coś jeszcze nadać, po odebraniu pozycji ?
Czy jak wyślę bajt sterujący i dostane odpowiedź w 2 kolejnych bajtach to wszystko ?
pozdrawiam
Grzegorz.