diff options
Diffstat (limited to 'Libraries/Button/button_task.c')
-rw-r--r-- | Libraries/Button/button_task.c | 87 |
1 files changed, 22 insertions, 65 deletions
diff --git a/Libraries/Button/button_task.c b/Libraries/Button/button_task.c index 4a06a3b..3446fb4 100644 --- a/Libraries/Button/button_task.c +++ b/Libraries/Button/button_task.c @@ -5,19 +5,11 @@ #include "button_handler.h" #include "ltimers.h" -// FreeRTOS includes #include "FreeRTOS.h" #include "task.h" #include "queue.h" #include "semphr.h" - -// Номера сенсорных кнопушек -//enum { -// TKEY_NUM_1 = 0, -// TKEY_NUM_2 -//}; - #define TKEY_NUM_1 0 #define TKEY_NUM_2 1 @@ -35,9 +27,7 @@ uint8_t DS[TSLPRM_TOTAL_TKEYS + TSLPRM_TOTAL_LNRTS]; // To store the States (one per object) int16_t DD[TSLPRM_TOTAL_TKEYS + (TSLPRM_TOTAL_LNRTS * 3)]; // To store the Deltas (one per channel) -//static uint8_t touch_tube_bufer [MAX_TUBES] = {0}; - -// Битовая переменная, в которой будут устанавливаться соответствующие +// Битовая переменная, в которой будут устанавливаться соответствующие // номерам нажатых кнопушек биты static volatile uint8_t tkey_buttons_bits = 0; @@ -63,9 +53,9 @@ void ProcessFSM_ButtonTask ( void ) { /* Execute STMTouch Driver state machine */ if (TSL_user_Action () == TSL_STATUS_OK) - { + { ProcessSensors (); // Execute sensors related tasks - + // Обработчик нажатий кнопушек (автомат) //Button_ProcessFSM (); } @@ -82,25 +72,19 @@ void ProcessFSM_ButtonTask ( void ) static void ProcessSensors ( void ) { uint32_t idx; - //uint32_t idxch; uint32_t idx_ds = 0; uint32_t idx_dd = 0; - //uint32_t touched = 0; -#if USE_LCD > 0 +#if USE_LCD > 0 static uint32_t started = 0; #endif -#if TSLPRM_TOTAL_TKEYS > 0 +#if TSLPRM_TOTAL_TKEYS > 0 // Read all TKeys for (idx = 0; idx < TSLPRM_TOTAL_TKEYS; idx++) { // STMStudio debug - DS[idx_ds++] = MyTKeys[idx].p_Data->StateId; + DS[idx_ds++] = MyTKeys[idx].p_Data->StateId; DD[idx_dd++] = MyTKeys[idx].p_ChD->Delta; -// if (TEST_TKEY(idx)) -// { -// touched = 1; -// } } #endif @@ -115,39 +99,15 @@ static void ProcessSensors ( void ) { DD[idx_dd++] = MyLinRots[idx].p_ChD[idxch].Delta; } -// if (TEST_LINROT(idx)) -// { -// touched = 1; -// } } #endif - + // Сделаем обработчик антидребезга (вроде он есть в библе сенсорных кнопок, // но GROUP5 почему-то сильно дергается) TkeyDebounce(); // Тут можно поменять кнопки местами - - // if (TEST_TKEY(TKEY_NUM_2)) - // { - // tkey_buttons_bits |= 1 << TKEY_NUM_1; - // } - // else - // { - // tkey_buttons_bits &= ~(1 << TKEY_NUM_1); - // } - - // if (TEST_TKEY(TKEY_NUM_1)) - // { - // tkey_buttons_bits |= 1 << TKEY_NUM_2; - - // } - // else - // { - // tkey_buttons_bits &= ~(1 << TKEY_NUM_2); - // } - } /** @@ -182,7 +142,6 @@ void TSL_CallBack_TimerTick(void) void MyTKeys_ErrorStateProcess(void) { /* Add here your own processing when a sensor is in Error state */ - //TSL_linrot_SetStateOff(); TSL_tkey_SetStateOff (); while(1) { @@ -193,7 +152,6 @@ void MyLinRots_ErrorStateProcess(void) { /* Add here your own processing when a sensor is in Error state */ TSL_linrot_SetStateOff(); - //TSL_tkey_SetStateOff (); while(1) { } @@ -203,7 +161,7 @@ void MyLinRots_ErrorStateProcess(void) // ---------------------------------------------------------------------------- // Ф-я антидребезга для сенсорных кнопок // ---------------------------------------------------------------------------- -void TkeyDebounce ( void ) +void TkeyDebounce ( void ) { static uint8_t tkey_db_state = 1; static uint8_t tkey_code = 0; @@ -211,16 +169,16 @@ void TkeyDebounce ( void ) if (TEST_TKEY(TKEY_NUM_2)) { - tkey_code |= 1 << TKEY_NUM_1; + tkey_code |= 1 << TKEY_NUM_1; } else { tkey_code &= ~(1 << TKEY_NUM_1); } - + if (TEST_TKEY(TKEY_NUM_1)) { - tkey_code |= 1 << TKEY_NUM_2; + tkey_code |= 1 << TKEY_NUM_2; } else { @@ -240,20 +198,20 @@ void TkeyDebounce ( void ) case 2: if( GetLTimer( LTIMER_SENSOR_BUT_DEBOUNCE ) >= TIME_SENSOR_BUT_DEBOUNCE ) - { + { tkey_db_state = 3; - } - break; + } + break; case 3: - if( _tkey_code == tkey_code ) - { - tkey_db_state = 1; + if( _tkey_code == tkey_code ) + { + tkey_db_state = 1; tkey_buttons_bits = _tkey_code; - - } - else { tkey_db_state = 1; } - break; + + } + else { tkey_db_state = 1; } + break; default: break; @@ -268,5 +226,4 @@ void TkeyDebounce ( void ) void Button_Task ( void *pvParameters ) { while(1)ProcessFSM_ButtonTask (); - //vTaskDelete(NULL); -}
\ No newline at end of file +} |