Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM8S Touch-Sensing library и одновременное нажатиекнопок
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры
dexter_khm
Здравствуйте в своем проекте часов на STM8S пользуюсь "STM8S Touch-Sensing" библиотекой модифицировал проект STSW-STM8023 http://www.st.com/web/en/catalog/tools/PF259386# . Работают 4 кнопки все ок. Но для входа в меню настройку времени нужно одновременно нажать две кнопки, а вот тут засада так как библиотека возвращает значение DETECTED=1 только для одной кнопки в единицу времени, а если держишь палец на одной кнопке то нажатие второй библиотека уже не идентифицирует.
Привожу куски кода:
stm8_tsl_conf.h
Код
#define LOADREF_PORT_ADDR  (GPIOC_BaseAddress)  /**< LOADREF pin GPIO base address */

#define LOADREF_BIT        (0x04)               /**< LOADREF pin mask */


//==============================================================================
//
// 5) SINGLE CHANNEL KEYS DEFINITION - PORT 1
//
// Set the number of keys
// Set the port
// Set the pins mask
//
// Warning: This port is mandatory and one key at least must be defined.
//
//==============================================================================

#define SCKEY_P1_KEY_COUNT  (4)  /**< Single channel key Port 1: Number of keys used (value from 1 to 8) */

#define SCKEY_P1_PORT_ADDR  (GPIOC_BaseAddress)  /**< Single channel key Port 1: GPIO base address */

#define SCKEY_P1_A  (0x02)  /**< Single channel key Port 1: 1st key mask */
#define SCKEY_P1_B  (0x40)  /**< Single channel key Port 1: 2nd key mask */
#define SCKEY_P1_C  (0x20)  /**< Single channel key Port 1: 3rd key mask */
#define SCKEY_P1_D  (0x10)  /**< Single channel key Port 1: 4th key mask */
#define SCKEY_P1_E  (0)     /**< Single channel key Port 1: 5th key mask */
#define SCKEY_P1_F  (0)     /**< Single channel key Port 1: 6th key mask */
#define SCKEY_P1_G  (0)     /**< Single channel key Port 1: 7th key mask */
#define SCKEY_P1_H  (0)     /**< Single channel key Port 1: 8th key mask */

#define SCKEY_P1_DRIVEN_SHIELD_MASK (0)//(0x08)

Настройки библиотеки

main.h
Код

if ((TSL_GlobalSetting.b.CHANGED) && (TSLState == TSL_IDLE_STATE))
  {
    
        TSL_GlobalSetting.b.CHANGED = 0;
        
        
        if (sSCKeyInfo[3].Setting.b.DETECTED) /* KEY 1 touched */
    {            
            Keys|=Key1;
            return;
    }
        
        if (sSCKeyInfo[2].Setting.b.DETECTED) /* KEY 2 touched */
    {
            Keys|=Key2;
            return;
    }
}

Опрос кнопок.
Сделал такой финт ушами
Код
        
     if (sSCKeyInfo[1].Setting.b.DETECTED) /* KEY 3 touched */
    {
            if ((sSCKeyInfo[0].Setting.b.DETECTED)||(sSCKeyInfo[0].State.b.DETECTED))
            {
                Keys|=KeyD; //Нажаты две кнопки
                return;
            }
            else
            {
                
                Keys|=Key3;
                return;
            }
    }
        
     if (sSCKeyInfo[0].Setting.b.DETECTED) /* KEY 4 touched */
    {
            if ((sSCKeyInfo[1].Setting.b.DETECTED)||(sSCKeyInfo[1].State.b.DETECTED))
            {
                Keys|=KeyD;//Нажаты две кнопки
                return;
            }
            else
            {
                
                Keys|=Key4;
                return;
            }
    }

Нашел методом тыка - иногда в переменной второй из пары нажатых кнопок sSCKeyInfo[х].State.b.DETECTED появляется 1 но срабатывает 2 двух случаях из 3 то есть нестабильно. Помогите советом как мне отработать двойное нажатие?
SasaVitebsk
Вообще нестабильность работы меня угнетала. А если влажность, температура, поля какие-нибудь. Короче исследования проводить не стали, а зарубили весь проект под корень.
Интересно было бы узнать какие-нибудь положительные опыты по сенсорам. Чтобы не ходить по граблям.
Читал у Renesans есть аппаратная обработка сенсорных кнопок. Есть у Atmela библиотека. Кто-нибудь подскажет устойчивость?
smk
Цитата(SasaVitebsk @ Jul 15 2014, 09:17) *
Вообще нестабильность работы меня угнетала. А если влажность, температура, поля какие-нибудь. Короче исследования проводить не стали, а зарубили весь проект под корень.
Интересно было бы узнать какие-нибудь положительные опыты по сенсорам. Чтобы не ходить по граблям.
Читал у Renesans есть аппаратная обработка сенсорных кнопок. Есть у Atmela библиотека. Кто-нибудь подскажет устойчивость?

Делал на тини45. вполне прилично все работало и через пластик и через стекло. Даже на зеркале работала, только по периметру сенсора зеркальный слой выбран был, а большое зеркало на общем сидело. Только делал простой вариант без переизлучения. надежней оказался.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.