batisto4ka 0 26 августа, 2012 Опубликовано 26 августа, 2012 · Жалоба Помогите, пожалуйста, примером кода, как работать с тачскрином ads7843e. Есть плата SK-WF43BTIBEDOTP-Plug. Там TFT с данным тачскрином. По примерам в нете настраиваю spi. В результате при касании к экрану срабатывает прерывание, настроенное на PENIRQ. Но при опрашивании координат всегда возвращается 0. Опрашиваю координаты командами 0х9С и 0хDC. Алгоритм такой: обработчик прерывания от PENIRQ устанавливает флаг TOUCH_FLAG.В основном цикле идет проверка флага и считывание координат х и у следующим образом: if (TOUCH_FLAG) { TOUCH_FLAG=o; Xpos=WriteSPI(SPI1,0x9C); Ypos=WriteSPI(SPI1,0xDC); } // uint8_t WriteSPI(SPI_TypeDef *SPIx, uint8_t val) { SPIx->DR=val; while(!(SPI1->SR&SPI_SR_RXNE)); return SPI1->DR; } В качестве мастрева использую камень stm32f107vc(плата SK-mstm32f107) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
batisto4ka 0 26 августа, 2012 Опубликовано 26 августа, 2012 (изменено) · Жалоба Теперь тач отвечает, но постоянно выдает координату Х 0xff, y-0x7f.Думаю, нужно оираться с настройками. Апока хотлось бы уточнить, в каком виде выдается напряжение и как оно соответствует координатам? Изменено 26 августа, 2012 пользователем batisto4ka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
batisto4ka 0 27 августа, 2012 Опубликовано 27 августа, 2012 · Жалоба и еще.Ноги SPI дрыгаются. Не могу подобрать скорость и настройки CPHA, CPOL. Подскажите, как для данного тачскрина настроить эти параметры Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
batisto4ka 0 27 августа, 2012 Опубликовано 27 августа, 2012 · Жалоба Поставив прескаллер SPI в 2, получаю следующие данные (1. при первой обработке прерывания, 2. при второй обработке прерывания): 1. Верхний правый угол: //Координата Х //1 k=WriteSPI(SPI1,0xDC);// k=0x4c k=WriteSPI(SPI1,0); //k=0xff k=WriteSPI(SPI1,0); //k=0 //2 k=0xee, k=0xf0, k=0 Координата Y: //1 k=WriteSPI(SPI1,0x9C);//k=0x0с, k=WriteSPI(SPI1,0); //k=0 k=WriteSPI(SPI1,0);//k=0 2. k=0xce, k=0xf0 k=0xf5 Нижняя правая точка: Координата Х 1. к=0x4c; k=0x40, k=0 2. к=0x6c; k=0, k=0xc0 Координата У: 1. к=0x0c; k=0, k=0 2. к=0x0c; k=0xff, k=0 Нижняя левая точка: Координата Х 1. к=0x4c; k=0, k=0xff 2. к=0xee; k=0, k=0xf5 Координата У: 1. к=0x0c; k=0, k=0 2. к=0xce; k=0, k=0 Верхняя левая точка: Координата Х 1. к=0xee; k=0, k=0 2. к=0xcc; k=0xf0, k=0 Координата У: 1. к=0xce; k=0xc0, k=0 2. к=0x8c; k=0xfc, k=0 Как интерпретировать полученные данные? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sherr 0 27 августа, 2012 Опубликовано 27 августа, 2012 · Жалоба Вообще-то у самого тачскрина приличная емкость - порядка тысяч пикофарад и показания после касания устанавливаются единицы- десятки микросекунд, поэтому обычно читают показания Х и У пока разница между соседними не станет минимальной (обычно 2-3 единицы), кроме того - отбрасывают слишком большие или слишком малые показания, ибо на самых краях данные некорректны. Данные получаются в условных единицах, где 255 - максимум (ну 479 по Х и 271 по У для вашего дисплея) ну или минимум, смот- ря как подключено в плаге. И еще, замечено, что если время от времени не читать результаты Х-У просто так не дожидаясь касания, PENIRQ может подвиснуть ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
batisto4ka 0 28 августа, 2012 Опубликовано 28 августа, 2012 · Жалоба Вообще-то у самого тачскрина приличная емкость - порядка тысяч пикофарад и показания после касания устанавливаются единицы- десятки микросекунд, поэтому обычно читают показания Х и У пока разница между соседними не станет минимальной (обычно 2-3 единицы), кроме того - отбрасывают слишком большие или слишком малые показания, ибо на самых краях данные некорректны. Данные получаются в условных единицах, где 255 - максимум (ну 479 по Х и 271 по У для вашего дисплея) ну или минимум, смот- ря как подключено в плаге. И еще, замечено, что если время от времени не читать результаты Х-У просто так не дожидаясь касания, PENIRQ может подвиснуть ... то есть, после срабатывания прерывания от penirq я читаю Х и У столько раз, пока пока разница между предыдцщим и текущим прочитанным значением Х не станет равна 2-3, и то же с У? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sherr 0 28 августа, 2012 Опубликовано 28 августа, 2012 (изменено) · Жалоба то есть, после срабатывания прерывания от penirq я читаю Х и У столько раз, пока пока разница между предыдцщим и текущим прочитанным значением Х не станет равна 2-3, и то же с У? У Стартеркита в примерах именно так - а у вас их нету,что ли , напишите им- пришлют на почту, правда у них опросом в цикле, без прерывания ,,, у меня тоже их подобный код есть , но на stm32f4xx Изменено 28 августа, 2012 пользователем sherr Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
batisto4ka 0 28 августа, 2012 Опубликовано 28 августа, 2012 · Жалоба У Стартеркита в примерах именно так - а у вас их нету,что ли , напишите им- пришлют на почту, правда у них опросом в цикле, без прерывания ,,, у меня тоже их подобный код есть , но на stm32f4xx а дайте пример,какой есть у вас. и пример стартеркита у вас есть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sherr 0 28 августа, 2012 Опубликовано 28 августа, 2012 (изменено) · Жалоба Куда слать ? Нашел только свое для LPC2478 и экрана 800*480, но именно с ads7843 - предупреждаю - код ужасный, постараюсь вечерком выдрать нужное, и чуть-чуть откомментировать ... Изменено 28 августа, 2012 пользователем sherr Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
batisto4ka 0 28 августа, 2012 Опубликовано 28 августа, 2012 · Жалоба Куда слать ? Нашел только свое для LPC2478 и экрана 800*480, но именно с ads7843 - предупреждаю - код ужасный, постараюсь вечерком выдрать нужное, и чуть-чуть откомментировать ... ответила в личку Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 2 28 августа, 2012 Опубликовано 28 августа, 2012 (изменено) · Жалоба Помогите, пожалуйста, примером кода, как работать с тачскрином ads7843e. Есть плата SK-WF43BTIBEDOTP-Plug. Там TFT с данным тачскрином. Посмотрите драйвер в ядре Linux http://lxr.free-electrons.com/source/drive...creen/ads7846.c там можете найти полезные дефайны и пример как фильтровать "отскоки", но вам все равно нужно калибровать показания, можете тут посмотреть теорию http://www.ti.com/lit/an/slyt277/slyt277.pdf у AD где-то аппнот есть на эту тему. Вы настраиваете АЦП на 8 бит, а экран у вас 480x272 - лучше 12 бит использовать. Изменено 28 августа, 2012 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
batisto4ka 0 28 августа, 2012 Опубликовано 28 августа, 2012 · Жалоба Посмотрите драйвер в ядре Linux http://lxr.free-electrons.com/source/drive...creen/ads7846.c там можете найти полезные дефайны и пример как фильтровать "отскоки", но вам все равно нужно калибровать показания, можете тут посмотреть теорию http://www.ti.com/lit/an/slyt277/slyt277.pdf у AD где-то аппнот есть на эту тему. Вы настраиваете АЦП на 8 бит, а экран у вас 480x272 - лучше 12 бит использовать. А может знаете, где найти этот апноут Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 28 августа, 2012 Опубликовано 28 августа, 2012 · Жалоба А может знаете, где найти этот апноут наверно где-то тут тыц Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 2 29 августа, 2012 Опубликовано 29 августа, 2012 (изменено) · Жалоба наверно где-то тут Не - не там :) http://www.analog.com/static/imported-file...tes/AN-1021.pdf Изменено 29 августа, 2012 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться