ADS7843 i STM32: obsługa dotykowego panelu rezystancyjnego
List. 4. Funkcja odczytująca pozycję X miejsca dotknięcia panelu
/* Odczyt pozycji X z panelu dotykowego */
int Odczyt_X(void)
{
int i;
// linia CS jest ustawiana w stan niski
TP_CS(0);
// opóźnienie potrzebne do aktywacji kontrolera
DelayUS(1);
// Wysłanie komendy ‘10010000’
Wyslij_Komende (CHX);
// opóźnienie związane z odczytem napiecia
DelayUS(20);
// odczyt napięcia
i=Odczytaj_Pomiar();
// ustawienie linii CS w stan niski
TP_CS(1);
// konwersja odczytanego napięcia
return ( 320 - i/12+18 );
}
List. 5. Funkcja odczytująca pozycję Y miejsca dotknięcia panelu
/* Odczyt pozycji Y z panelu dotykowego */
int Odczyt_Y(void)
{
int i;
// linia CS jest ustawiana w stan niski
TP_CS(0);
// opóźnienie potrzebne do aktywacji kontrolera
DelayUS(1);
// Wysłanie komendy ‘11010000’
Wyslij_Komende (CHY);
// opóźnienie związane z odczytem napiecia
DelayUS(20);
// odczyt napięcia
i=Odczytaj_Pomiar();
// ustawienie linii CS w stan niski
TP_CS(1);
// konwersja odczytanego napięcia
return i/17;
}
Przy odczycie pozycji X wysyłana jest komenda ‘10010000’, co oznacza, że pomiar napięcia ma nastąpić na kanale pierwszym – linia X+. Przy odczycie pozycji Y wysyłana jest komenda ‘11010000’ stąd pomiar ma nastąpić na kanale piątym – linia Y+. Dodatkowo obydwie komendy ustawiają kontroler w następujący sposób:
- rozdzielczość konwersji: 12bit,
- pomiary w trybie Differential Reference Mode,
- automatyczne „uśpienie” układu po każdej konwersji.
Przy wykorzystaniu powyższych funkcji można bez większego problemu konstruować urządzenia wykorzystujące panel dotykowy, jako dodatkowy interfejs użytkownika.
Jan Rogalski

I-7188EA – kompaktowy sterownik PAC z komunikacją Ethernet
Pomiar impedancji głośnika z użyciem zestawu ADALM2000
Grzegorz Kamiński: Terafab – realny projekt czy wydmuszka? 




