fix: SW4 快速模式 — 离开和脉冲延时均缩短为500ms

- TaskLoop.h: 新增 OUT_DELAY_FAST=10, PULSE_DELAY_FAST=10
- TaskLoop.h: SET_DLY 注释从"延时"改为"快速模式"
- TaskLoop.c: FLAG_OUT 不再跳过延时,改为 OUT_DELAY_FAST 计数
- TaskLoop.c: FLAG_PLUSE 改用 PULSE_DELAY_FAST 计数
- 旧行为: SET_DLY=1 时 FLAG_OUT 立即跳到 FLAG_PLUSE
- 新行为: SET_DLY=1 时两者均用 10 tick (500ms) 快速延迟
This commit is contained in:
wangfq
2026-06-24 09:07:01 +08:00
parent 07a80763cd
commit 034a82f024
2 changed files with 13 additions and 14 deletions

View File

@@ -26,6 +26,10 @@
#define OUT_DELAY 38 // 离开防抖 1.9s
#define PULSE_DELAY 19 // 脉冲宽度 950ms
/* SW_4 快速模式:缩短离开防抖和脉冲宽度为 500ms */
#define OUT_DELAY_FAST 10 // 离开防抖快速 500ms
#define PULSE_DELAY_FAST 10 // 脉冲宽度快速 500ms
/*===========================================================================
* 滤波参数 — 对齐 M1H
*===========================================================================*/
@@ -115,7 +119,7 @@ extern uint8_t TM1cnt; // 50ms tick 分频计数
* 拨码开关状态
*===========================================================================*/
extern uint8_t SET_PLUS; // 0=存在输出, 1=脉冲输出
extern uint8_t SET_DLY; // 0=无延时, 1=延时
extern uint8_t SET_DLY; // 0=正常, 1=快速模式(500ms)
extern uint8_t SET_SAFE; // 1=安全复位拨下
/*===========================================================================

View File

@@ -76,7 +76,7 @@ uint8_t TM1cnt = 0;
* 拨码开关状态
*===========================================================================*/
uint8_t SET_PLUS = 0;
uint8_t SET_DLY = 0;
uint8_t SET_DLY = 0; // 0=正常, 1=快速模式(500ms)
uint8_t SET_SAFE = 0;
/*===========================================================================
@@ -508,27 +508,22 @@ void TMR15_GLOBAL_IRQHandler(void)
}
}
/* FLAG_OUT: 离开延时 1.9s(或 SET_DLY 时立即脉冲 */
/* FLAG_OUT: 离开延时(正常 1.9s,快速模式 500ms */
if (loop1_FLAG_OUT) {
if (SET_DLY) {
/* 延时模式:立即触发脉冲 */
loop1_FLAG_OUT = 0;
loop1_FLAG_PLUSE = 1;
loop1_OUTCNT = 0;
} else {
uint16_t out_delay = SET_DLY ? OUT_DELAY_FAST : OUT_DELAY;
loop1_OUTCNT++;
if (loop1_OUTCNT > OUT_DELAY) {
if (loop1_OUTCNT > out_delay) {
loop1_FLAG_OUT = 0;
loop1_FLAG_PLUSE = 1;
loop1_OUTCNT = 0;
}
}
}
/* FLAG_PLUSE: 脉冲宽度 950ms */
/* FLAG_PLUSE: 脉冲宽度(正常 950ms,快速模式 500ms */
if (loop1_FLAG_PLUSE) {
uint16_t pulse_delay = SET_DLY ? PULSE_DELAY_FAST : PULSE_DELAY;
loop1_OUTCNT++;
if (loop1_OUTCNT > PULSE_DELAY) {
if (loop1_OUTCNT > pulse_delay) {
loop1_FLAG_PLUSE = 0;
loop1_OUTCNT = 0;
}