2 Commits 9645adbc0d ... 2bec6694a2

Author SHA1 Message Date
  lch 2bec6694a2 修改 : 频率追踪更新方式; 3 months ago
  lch 4a79fed537 增加 : 频率追踪投退下发到RV核; 3 months ago

+ 4 - 1
README.md

@@ -80,4 +80,7 @@
 
 # 20251219
 01. 合并: 液晶处理部分代码。
-02. 修改: 为提高液晶响应速度将主循环休眠时间修改为10ms。
+02. 修改: 为提高液晶响应速度将主循环休眠时间修改为10ms。
+
+# 202601(04-11)
+01. 增加 : 频率追踪投退下发到RV核;

+ 11 - 0
app_public/fuxi_public/fuxi_bsp/include/shm_api.h

@@ -116,6 +116,17 @@ struct t_shmdata_timestamp
     uint16_t us_crc;         /* crc 应用不用处理 底层接口处理 */
 } __attribute__ ((packed)); /* 大小16个字节 */
 
+/* 定值参数 */
+struct t_shmdata_cvalue
+{
+    uint16_t us_updata;    /* 数据更新标志 */
+    uint16_t us_op;        /* 操作标志 */
+    uint16_t us_op_bk;     /* 操作标志备份 */
+    uint8_t uc_freq_track; /* 频率跟踪 */
+    uint8_t uc_cv_bk;      /* 对齐使用 */
+    uint16_t us_crc;       /* crc 应用不用处理 底层接口处理 */
+} __attribute__((packed)); /* 大小16个字节 */
+
 /****************************** A核读, R核写 ******************************/
 
 /* 开入量 */

+ 35 - 1
dtu/dtu_main_t536/app/set.c

@@ -4146,6 +4146,32 @@ void get_yx_ac(u8 index, u32 type)
 	gb_yx_ac = true;
 }
 
+/**
+ * @brief          检测频率跟踪投退是否有变化
+ * @author         lch (lch_work@foxmail.com)
+ * @version        1.0
+ * @date           20260106
+ * @return         * void
+ * @retval         none
+ * 
+ * @warning        none
+ * @note           none
+ */
+void check_shmdata_change(void)
+{
+    static uint8_t suc_freq_track = 0xff;
+    struct t_shmdata_cvalue t_cvale = {0};
+    
+    printf("check_shmdata_change\r\n");
+
+    if (suc_freq_track != pRunSet->bTT_FREQ)
+    {
+        t_cvale.uc_freq_track = pRunSet->bTT_FREQ;
+        shm_packet_write_v2(SHM_ADDR_R_MACHINEPARAM, (uint8_t *)&t_cvale, sizeof(struct t_shmdata_cvalue));
+        suc_freq_track = pRunSet->bTT_FREQ;
+    }
+}
+
 /**************************************************************************
 函数名称:MakeRunSet
 函数版本:1.00 
@@ -6662,7 +6688,15 @@ bool  MakeRunSet(bool bFirst)
 
 	m_runsection=pRunSet->section;
 
-	create_set_data_txt();	
+#if !defined CPU_FUXI
+    create_set_data_txt();
+#else
+    extern int g_l_shm_init;
+    if (0 == g_l_shm_init)
+    {
+        check_shmdata_change();
+    }
+#endif
 	return bRet;
 }
 /******************************************************************************

+ 1 - 0
dtu/dtu_main_t536/app/set.h

@@ -3196,6 +3196,7 @@ void create_set_data_txt(void); //
 void get_yx_ac(u8 index, u32 type);
 WORD GetCstValForwardAddr(const BYTE type,const int index);
 extern DWORD GetSetSQR(float ff,float fk);
+extern void check_shmdata_change(void);
 
 char *get_replace_setdisp(u8 index, u8 menu);
 

+ 5 - 0
dtu/dtu_main_t536/main_mod.c

@@ -31,6 +31,7 @@
 #include <pthread.h>
 // #include <alchemy/task.h>
 
+int g_l_shm_init = 0xff;
 static int m_reset; //看门狗复位变量
 struct completion *g_exit_completion_gprs_net_IEC_proc;
 static int g_exit_flag;
@@ -319,11 +320,15 @@ int di_do_adc (void *unused)
 	struct shmem_fd shmem_fd;
 	if (share_mem_init_v2(&shmem_fd) < 0){
 		printf("--->shmem_init fail !!!\r\n");
+        g_l_shm_init = -1;
 		return -1;
 	} else {
+        g_l_shm_init = 0;
 		printf("--->shmem_init success !!!\r\n");
 	}
 
+    check_shmdata_change();
+
 	// 装置类型us_machine_type (分布式:1,集中式:2)
 	struct t_shmdata_machine_type machine_type = {0};
 	machine_type.us_machine_type = 2;