Files
DLD154V4B/utilities/at32f421_freertos_demo/inc/cmcng.h
T
wangfq 41a4577fa7 fix(V4B): V4.36.40 — 短路级热切换线圈死锁修复
用户实测: <20µH 短路级强制断开后, 不断电换正常线圈不恢复(拨码不重启), 只能断电.
根因: 强制期 ISR 847 每5ms压 LOOP_OK=0 → vd1_task 停摆 → Origin/LPCNT 冻结在旧短路线圈值;
      recover 用 calc_freq_khz(冻结Origin,LPCNT) 判回窗永远>171k → 死锁.
修复: recover 恢复判定改 TMR3 捕获 ISR 实时 Xn (f=240000/Xn, 每振荡周期新鲜);
      换线圈后 f 回窗连续5s → 实时置档 → ISR 847 停压 LOOP_OK 自然回位 →
      主循环 0→1 沿检测自动发起 reconnect confirmed → 无车判稳门控 → Origin 判稳重建.
spec V2.58 / devlog V2.76
语法0 error, 4测试全绿
2026-09-09 11:16:10 +08:00

74 lines
1.8 KiB
C

/**
**************************************************************************
* @file cmcng.h
* @version v1.0
* @date 2025-09-08
* @brief 一些配置
**************************************************************************
* Copyright notice & Disclaimer
* * Create 2025-09-08 by wangfq
* *
**************************************************************************
*/
#ifndef __CMCNG_H__
#define __CMCNG_H__
#define PRODUCT_MODEL "DLD154"
#define FIRMWARE_VER "4.36.40" // 主.子.修订 (2026-09-03 起: 小改动只增 REV; MAIN/SUB 由产品定)
#define HARDWARE_VER "3.00"
#define FIRMWARE_VER_MAIN 4
#define FIRMWARE_VER_SUB 36
#define FIRMWARE_VER_REV 40
#define HARDWARE_VER_MAIN 3
#define HARDWARE_VER_SUB 0
#include <stdio.h>
#include <stdint.h>
#ifdef DEBUG
#define PRINT(X...) printf(X)
#else
#define PRINT(X...)
#endif
typedef struct _LOOP_ACS_INFO
{
uint8_t flag_event;
uint8_t loop_num;
uint8_t freq_level;
uint8_t sensity;
uint8_t relay1_cng;
uint8_t relay1_state;
uint8_t relay2_cng;
uint8_t relay2_state;
uint8_t loop_state;
uint8_t output_mode;
uint8_t dir_mode;
uint8_t delay;
uint8_t car_state;
uint8_t direction;
uint8_t flag_loop_safe;
uint32_t loop_safe_counter;
uint8_t condition;
uint32_t frequent;
uint32_t loop_capvd;
int16_t variation;
uint32_t event_counter;
uint32_t report_counter;
} Loop_ACS_Info;
extern Loop_ACS_Info g_loop_acs_info;
extern uint8_t g_flag_output;
extern uint8_t g_flag_output2;
extern uint8_t g_input_div;
#endif