From 86432f7efc989c91bdaee5d1cea6668ecc7dd9b9 Mon Sep 17 00:00:00 2001 From: sabas1080 Date: Tue, 25 Jan 2022 16:08:45 -0600 Subject: [PATCH 1/4] init support 10 sensors --- src/touch.c | 45 +++++++++++++++++++++++++++++++++++++++++ src/touch_config_samd.h | 6 +++--- 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/src/touch.c b/src/touch.c index 499ec96..d7c1818 100644 --- a/src/touch.c +++ b/src/touch.c @@ -383,6 +383,51 @@ touch_ret = touch_selfcap_sensor_config(SENSOR_TYPE_KEY, CHANNEL_0, } } + touch_ret = touch_selfcap_sensor_config(SENSOR_TYPE_KEY, CHANNEL_5, + CHANNEL_5, NO_AKS_GROUP, _sensitivity_ch[5], + HYST_6_25, RES_1_BIT, + &sensor_id); + if (touch_ret != TOUCH_SUCCESS) { + while (1) { + } + } + + touch_ret = touch_selfcap_sensor_config(SENSOR_TYPE_KEY, CHANNEL_6, + CHANNEL_6, NO_AKS_GROUP, _sensitivity_ch[6], + HYST_6_25, RES_1_BIT, + &sensor_id); + if (touch_ret != TOUCH_SUCCESS) { + while (1) { + } + } + + touch_ret = touch_selfcap_sensor_config(SENSOR_TYPE_KEY, CHANNEL_7, + CHANNEL_7, NO_AKS_GROUP, _sensitivity_ch[7], + HYST_6_25, RES_1_BIT, + &sensor_id); + if (touch_ret != TOUCH_SUCCESS) { + while (1) { + } + } + + touch_ret = touch_selfcap_sensor_config(SENSOR_TYPE_KEY, CHANNEL_8, + CHANNEL_8, NO_AKS_GROUP, _sensitivity_ch[8], + HYST_6_25, RES_1_BIT, + &sensor_id); + if (touch_ret != TOUCH_SUCCESS) { + while (1) { + } + } + + touch_ret = touch_selfcap_sensor_config(SENSOR_TYPE_KEY, CHANNEL_9, + CHANNEL_9, NO_AKS_GROUP, _sensitivity_ch[9], + HYST_6_25, RES_1_BIT, + &sensor_id); + if (touch_ret != TOUCH_SUCCESS) { + while (1) { + } + } + return (touch_ret); } diff --git a/src/touch_config_samd.h b/src/touch_config_samd.h index 2eae4f1..189edbb 100644 --- a/src/touch_config_samd.h +++ b/src/touch_config_samd.h @@ -92,7 +92,7 @@ * the touch channel (nodes) are specified below. Touch channel numbering * follows the order in which Y lines are specified. */ -#define DEF_SELFCAP_LINES Y(0), Y(8), Y(9), Y(2), Y(3) +#define DEF_SELFCAP_LINES Y(0), Y(1), Y(2), Y(3), Y(4), Y(5), Y(8), Y(9), Y(14), Y(15) /*---------------------------------------------------------------------------- * Self Cap method channel and sensor configuration. @@ -105,7 +105,7 @@ * using 3 touch channels. * Range: 1u to 16u. */ -#define DEF_SELFCAP_NUM_CHANNELS (5) /* Total number of channels */ +#define DEF_SELFCAP_NUM_CHANNELS (10) /* Total number of channels */ /** * Self Cap number of Sensors. @@ -117,7 +117,7 @@ * the number of sensors is 6 key + 1 rotor + 1 slider = 8 sensors. * Range: 1u to 16u. */ -#define DEF_SELFCAP_NUM_SENSORS (5) /* Total number of sensors */ +#define DEF_SELFCAP_NUM_SENSORS (10) /* Total number of sensors */ /** * Self Cap number of Rotors and Sliders. From 081490a842141d2d676326730a446c6b862c536d Mon Sep 17 00:00:00 2001 From: sabas1080 Date: Thu, 27 Jan 2022 15:28:07 -0600 Subject: [PATCH 2/4] add more channel sensitivity --- src/touch.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/touch.c b/src/touch.c index d7c1818..e6aed94 100644 --- a/src/touch.c +++ b/src/touch.c @@ -93,7 +93,7 @@ touch_measure_data_t *p_selfcap_measure_data = NULL; * setHysteresis() , setSensitivity() and setSensitivityChannel before the init */ unsigned int _sensitivity = 50u; -unsigned int _sensitivity_ch[5] = {50u , 50u, 50u, 50u, 50u}; +unsigned int _sensitivity_ch[10] = {50u , 50u, 50u, 50u, 50u, 50u , 50u, 50u, 50u, 50u}; hysteresis_t _hysteresis = HYST_6_25; @@ -457,7 +457,7 @@ void setHysteresis(hysteresis_t newHyst){ void setSensitivity(unsigned int newSens){ _sensitivity = newSens; - for (int i = 0; i < 5; i++){ + for (int i = 0; i < DEF_SELFCAP_LINES; i++){ _sensitivity_ch[i] = _sensitivity; } } From 07071e16d17d202031c00fdc4077e223c9844d7b Mon Sep 17 00:00:00 2001 From: sabas1080 Date: Sun, 30 Jan 2022 17:07:38 -0600 Subject: [PATCH 3/4] change Pointer to Touch Status of each sensor to uint16 --- src/touch_api_SAMD.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/touch_api_SAMD.h b/src/touch_api_SAMD.h index 8bd4ecc..052ec4b 100644 --- a/src/touch_api_SAMD.h +++ b/src/touch_api_SAMD.h @@ -759,7 +759,7 @@ typedef struct tag_touch_measure_data_t { /* ! Number of sensor state bytes. */ uint8_t num_sensor_states; /* ! Pointer to Touch Status of each sensor. */ - uint8_t *p_sensor_states; + uint16_t *p_sensor_states; /* ! Length of the Rotor and Slider position values list. */ uint8_t num_rotor_slider_values; /* ! Pointer to Rotor and Slider position values. */ From 91e7d3e0a2f367452e14ef6af94fab504a5e2ea1 Mon Sep 17 00:00:00 2001 From: sabas1080 Date: Sun, 30 Jan 2022 17:13:29 -0600 Subject: [PATCH 4/4] change divisor to 16 --- src/touch_api_SAMD.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/touch_api_SAMD.h b/src/touch_api_SAMD.h index 052ec4b..09aab81 100644 --- a/src/touch_api_SAMD.h +++ b/src/touch_api_SAMD.h @@ -128,11 +128,11 @@ extern "C" /* Self capacitance method */ #define GET_SELFCAP_SENSOR_STATE(SENSOR_NUMBER) p_selfcap_measure_data-> \ p_sensor_states[(SENSOR_NUMBER / \ - 8)] & (1 << (SENSOR_NUMBER % 8)) + 16)] & (1 << (SENSOR_NUMBER % 16)) /* Mutual capacitance method */ #define GET_MUTLCAP_SENSOR_STATE(SENSOR_NUMBER) p_mutlcap_measure_data-> \ p_sensor_states[(SENSOR_NUMBER / \ - 8)] & (1 << (SENSOR_NUMBER % 8)) + 16)] & (1 << (SENSOR_NUMBER % 16)) /** * \def GET_ROTOR_SLIDER_POSITION(ROTOR_SLIDER_NUMBER)