Функции работы с Touch Panel в mikroC. Пример использования.
В предыдущей статье были рассмотрены функции работы с сенсорной панелью, реализованные в компиляторах языка C, предлагаемого Mikroelektronika. Ниже будет рассмотрен пример использования данных функций.
Текст программы на языке С для компилятора mikroC приведен в конце статьи. При старте процессора, программа настраивает оборудование и запускает калибровку сенсорной панели. Значения калибровочных констант отображаются на экране. В рабочем режиме, на дисплее выводятся координаты точки нажатия. Некоторые замечания по работе с сенсорной панелью приведены ниже.
Настройка оборудования.
Настройка оборудования призвана показать компилятору, куда подключены линии, используемые для сенсорной панели. Пример предназначен для платы mikromedia Board for STM32M3, поэтому использованы соответствующие настройки. Для других плат, процессоров и экранов они должны быть изменены.
Калибровка
Одной из самых сложных задач при настройке Touch Panel становится калибровка. Ее задачей является совмещение выходных сигналов сенсорной панели и координат дисплея. При калибровке применяются вызовы функций TP_TFT_Calibrate_Min() и TP_TFT_Calibrate_Max(). Особенностью функций является необходимость нажатия в соответствующий угол панели, после вызова каждой из них. В приведенном примере, для процедуры калибровки использован код функции Calibrate, разработанной производителем.
Некоторым неудобством использования функции калибровки становится необходимость ее проведения каждый раз, при старте программы. В противном случае, сенсорная панель не будет возвращать требуемые координаты. В приложениях, где вызов калибровки панели не соответствует задачам, можно применять программное задание констант. Для этого, после проведения калибровки, с помощью функции TP_TFT_Get_Calibration_Consts необходимо определить значения АЦП в левом верхнем и правом нижнем углу дисплея. Данные значения индивидуальны для каждого устройства и должны быть сохранены программно. Далее, при каждом старте программы можно использовать полученные данные с помощью TP_TFT_Set_Calibration_Consts. Это избавит от необходимости запуска калибровки. Необходимо только учесть возможный дрейф параметров, и периодически повторно получать калибровочные константы.