Перейти к содержанию
    

TSC (Touch sensing controller) на STM32F051

И всё таки проблема с CooCox-ом. В Keil-е всё отлично устанавливается и сбрасывается. Так что буду копать дальше. :08:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Непонятно как это работает:

TSC->CR = (2 << TSC_CR_CTPH)

| (6 << TSC_CR_CTPL)

| (9 << TSC_CR_SSD)

| (0 << TSC_CR_SSE)

| (1 << TSC_CR_SSPSC)

| (0 << TSC_CR_PGPSC)

| (6 << TSC_CR_MCV)

| (0 << TSC_CR_IODEF)

| (0 << TSC_CR_SYNCPOL)

| (0 << TSC_CR_AM)

| (0 << TSC_CR_START)

| (1 << TSC_CR_TSCE);

 

Можете объяснить как эта запись записывает значения в регистр CR? Или это такая очистка регистра?

Изменено пользователем silovi4

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Непонятно как это работает:

TSC->CR = (2 << TSC_CR_CTPH)

| (6 << TSC_CR_CTPL)

| (9 << TSC_CR_SSD)

| (0 << TSC_CR_SSE)

| (1 << TSC_CR_SSPSC)

| (0 << TSC_CR_PGPSC)

| (6 << TSC_CR_MCV)

| (0 << TSC_CR_IODEF)

| (0 << TSC_CR_SYNCPOL)

| (0 << TSC_CR_AM)

| (0 << TSC_CR_START)

| (1 << TSC_CR_TSCE);

 

Можете объяснить как эта запись записывает значения в регистр CR? Или это такая очистка регистра?

Посмотрите поля регистра TSC->CR. Устанавливаются соответствующие значения в соответствующие поля. Что конкретно не понятно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрите поля регистра TSC->CR. Устанавливаются соответствующие значения в соответствующие поля. Что конкретно не понятно?

С этим уже разобрался. Инициализация у меня проходит, т.е. я инициализировал порты и TSC. Теперь не понятно как определять касание. Я так понимаю это определяется уже в прерывании, но в Вашем коде мне не понятны некоторые переменные, откуда они берутся. Можете в двух словах объяснить как определять касание?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С этим уже разобрался. Инициализация у меня проходит, т.е. я инициализировал порты и TSC. Теперь не понятно как определять касание. Я так понимаю это определяется уже в прерывании, но в Вашем коде мне не понятны некоторые переменные, откуда они берутся. Можете в двух словах объяснить как определять касание?

Исключительный матан. В двух словах: это авторский алгоритм с автокалибровкой, раскрывать желания не имею.

Вам сойдет простое сравнение с порогом. Данные от TSC можно забирать так:

tsc_val = TSC->IOGXCR[0];

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Исключительный матан. В двух словах: это авторский алгоритм с автокалибровкой, раскрывать желания не имею.

Вам сойдет простое сравнение с порогом. Данные от TSC можно забирать так:

tsc_val = TSC->IOGXCR[0];

Спасибо хоть за это! Хотел ещё спросить: в моей схеме, та что я приложил в самом начале, я правильно подключил конденсаторы? А то я меряю осциллографом ножку PA0 на неё вообще ничего не приходит, а на PA1 идут импульсы примерно такого вида:

post-76577-1383308588_thumb.jpg

 

Изменено пользователем silovi4

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо хоть за это! Хотел ещё спросить: в моей схеме, та что я приложил в самом начале, я правильно подключил конденсаторы? А то я меряю осциллографом ножку PA0 на неё вообще ничего не приходит, а на PA1 идут импульсы примерно такого вида:

post-76577-1383308588_thumb.jpg

А данные при этом меняются?

Осциллограмма очень похожа на правду.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А данные при этом меняются?

Осциллограмма очень похожа на правду.

Вы про счётный регистр? Если да, то он досчитывает до максимально заданного значения при этом устанавливаются два флага (флаг ошибки и флаг завершения опроса), которые вызывают прерывание. При касании пальцем ничего не меняется. :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы про счётный регистр? Если да, то он досчитывает до максимально заданного значения при этом устанавливаются два флага (флаг ошибки и флаг завершения опроса), которые вызывают прерывание. При касании пальцем ничего не меняется. :(

В общем разобрался, то я не правильно сконфигурировал порты. Данные получаются вполне адекватные. Когда не касаюсь сенсора счётный регистр показывает где-то 0x14С0, когда дотрагиваюсь - 0x17С0. Я думаю так и должно быть. Теперь мне не понятно как определять что нажата конкретная кнопка?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем разобрался, то я не правильно сконфигурировал порты. Данные получаются вполне адекватные. Когда не касаюсь сенсора счётный регистр показывает где-то 0x14С0, когда дотрагиваюсь - 0x17С0. Я думаю так и должно быть.

Когда я делал сенсор, то числа отличались очень сильно (в разы).

Теперь мне не понятно как определять что нажата конкретная кнопка?

Переключением опроса кнопок по очереди.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Когда я делал сенсор, то числа отличались очень сильно (в разы).

Кстати у меня почему-то в group2 значения очень маленькие, от 0x04 до 0x0B :( Во всех остальных (при тех же настройках) вроде нормально.

Переключением опроса кнопок по очереди.

Всё понял :rolleyes:

 

А какой ёмкостью кондёры у вас были?

Изменено пользователем silovi4

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разобрался с group 2, оказалось просто не припаял один конец кондёра. Теперь возник другой вопрос: почему на некоторых тачах (даже если тач из одной группы) значения меняются в противоположную сторону. Допустим на таче G4_IO1, когда не касаешься его, значение 0x1400, если касаешся 0x1600. А на таче G4_IO3 наоборот (при касании 0x1400, а при отпускании 0x1600). Может сталкивались с этой проблемой?

Изменено пользователем silovi4

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Теперь возник другой вопрос: почему на некоторых тачах (даже если тач из одной группы) значения меняются в противоположную сторону. Может сталкивались с этой проблемой?

Такого не должно быть. При касании значение должно уменьшаться (т.к. переносимый заряд увеличивается

и для достижения порога нужно меньше иттераций). Где-то неправильно инициализируете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...