From 2ef92b0e3a89a305d28c4a6c01371a7c1577dab3 Mon Sep 17 00:00:00 2001 From: Aleksandar Markovic Date: Sat, 4 Sep 2021 22:58:59 +0200 Subject: [PATCH] Fixed SW_timers for IR commands --- Src/TIM2_enc.c | 4 ++- Src/TIM2_enc.h | 2 +- Src/main.c | 75 ++++++++++++++++++++++++++++++++++---------------- 3 files changed, 55 insertions(+), 26 deletions(-) diff --git a/Src/TIM2_enc.c b/Src/TIM2_enc.c index 6b19a8e..875bb58 100755 --- a/Src/TIM2_enc.c +++ b/Src/TIM2_enc.c @@ -31,6 +31,7 @@ volatile uint16_t MyDataLimHI[32] = { 255, // IR-CHSW 255, // IR-Power 2, // Input CH + 1, // RY Power save }; volatile uint16_t MyDataLimLO[32] = { 0, // @@ -49,9 +50,10 @@ volatile uint16_t MyDataLimLO[32] = { 1, // IR-CHSW 1, // IR-Power 1, // Input CH + 0, // RY Power save }; -#define max_menu 19 +#define max_menu 20 volatile bool menu_active = 0; volatile bool edit_active = 0; diff --git a/Src/TIM2_enc.h b/Src/TIM2_enc.h index 4b28dd5..0b617db 100755 --- a/Src/TIM2_enc.h +++ b/Src/TIM2_enc.h @@ -4,7 +4,7 @@ void TIM2_Setup_ENC (void); enum { VOLUME, MENU, OPMODE, DELAY, DEBUG, QEIMODE, IMPSSTEP, ENABLEIR, - THEME, SSAVER, IRVUP, IRVDOWN, IRMUTE, IRCHSW, IRPOWER, INPUTCH}; + THEME, SSAVER, IRVUP, IRVDOWN, IRMUTE, IRCHSW, IRPOWER, INPUTCH, POWSAVE}; //timer labels enum {T_BUTTON, T_EDIT_BLINK, T_EDIT_OFF, T_WAKEUP, T_UN_4, T_SSAVER, T_FPS, T_RY}; diff --git a/Src/main.c b/Src/main.c index 3d3009c..d883f0b 100644 --- a/Src/main.c +++ b/Src/main.c @@ -58,7 +58,7 @@ #define theme_enable_title 1 #define theme_enable_vu 2 -#define max_menu 19 +#define max_menu 20 //some vars volatile bool update_seq_up_down = 1; @@ -249,6 +249,7 @@ void Reset_Settings() { MyData[IRCHSW] = 3; MyData[IRPOWER] = 95; MyData[INPUTCH] = 1; + MyData[POWSAVE] = 1; Update_Encoder_Settings(); } @@ -273,11 +274,12 @@ const struct { {"IR-CHSW", 1},//14 {"IR-Power", 1},//15 {"Input-CH", 1},//16 - {"*ResetSettings!", 0},//17 - {"*forum.yu3ma.net", 0},//18 - {"*FW 0.9.9 09-2021", 0},//19 - {"*Power OFF", 0},//20 - {"*Save & Exit", 0},//21 + {"STB-PowerSave", 1},//17 + {"*ResetSettings!", 0},//18 + {"*forum.yu3ma.net", 0},//19 + {"*FW 0.9.9 09-2021", 0},//20 + {"*Power OFF", 0},//21 + {"*Save & Exit", 0},//22 }; //-------------------------------------------------------- @@ -383,22 +385,44 @@ void SysTick_Handler (void) { SW_timers[T_FPS] ++; SW_timers[T_RY] ++; - //switch operation mode, function call every 1ms - switch (MyData[OPMODE]) { - case 1: Handle_Relays_mode1(); break; - case 2: Handle_Relays_mode2(); break; - case 3: Handle_Relays_mode3(); break; - case 4: Handle_Relays_mode4(); break; - } + if (power_off_on == 0 && MyData[POWSAVE] == 1) { + //power save mode, off all relays + RY1_off; + RY2_off; + RY3_off; + RY4_off; + RY5_off; + RY6_off; + RY7_off; + + RY9_off; + } else { + //switch operation mode, function call every 1ms + switch (MyData[OPMODE]) { + case 1: + Handle_Relays_mode1(); + break; + case 2: + Handle_Relays_mode2(); + break; + case 3: + Handle_Relays_mode3(); + break; + case 4: + Handle_Relays_mode4(); + break; + } - //mute OUT - if (mute_active || MyData[VOLUME]==64) RY7_off; else RY7_on; + //mute OUT + if (mute_active || MyData[VOLUME] == 64) RY7_off; else RY7_on; + + //input ch switch OUT + if (MyData[INPUTCH] == 1) RY9_off; else RY9_on; + } //power off/on OUT if (power_off_on == 0) RY8_off; else RY8_on; - //input ch switch OUT - if (MyData[INPUTCH] == 1) RY9_off; else RY9_on; } //---------------------------------------- @@ -411,8 +435,6 @@ int main(void) { USART3_init(); TIM2_Setup_ENC(); TIM1_Setup_TBASE(); - SysTick_Config(72000); //1ms - ssd1306_Init(); ssd1306_Fill(0); @@ -431,6 +453,9 @@ int main(void) { ENC_IMPS_PER_STEP_HALF = ENC_IMPS_PER_STEP / 2; //init TIM2->SMCR = MyData[QEIMODE]; + //sve je spremno, startuj glavni tajmer + SysTick_Config(72000); //1ms + //--------------------- //endless loop! while (1) { @@ -460,7 +485,8 @@ int main(void) { //probudi ekran screen_saver_active = false; - SW_timers[5] = 0; + SW_timers[T_SSAVER] = 0; + SW_timers[T_RY] = 0; //take care! //decode IR cmd if (NEC1.repeat && !mute_active && power_off_on == 1) { @@ -647,7 +673,7 @@ int main(void) { // Button ------------------------------------- //--------------------------------------------- //Button kratak klick 10-500ms - if (SW_timers[T_BUTTON] > 50 && SW_timers[T_BUTTON] < 500 && SW_timers_enable[0] == 0 && power_off_on == 1) { + if (SW_timers[T_BUTTON] > 25 && SW_timers[T_BUTTON] < 500 && SW_timers_enable[0] == 0 && power_off_on == 1) { if (menu_active) { switch (MyData[MENU]) { case 0: @@ -668,21 +694,22 @@ int main(void) { case 12: case 13: case 14: + case 15: edit_active = !edit_active; //edit mode break; - case 15: //reset settings + case 16: //reset settings save_change_flag = 1; Reset_Settings(); break; - case 18: //power off + case 19: //power off power_off_on = 0; menu_active = 0; MyData[MENU] = 0; break; - case 19: //save settings + case 20: //save settings menu_active = 0; //izlazimo iz menu MyData[MENU] = 0; if (save_change_flag) Save_Settings();