📄 nsa_timer_drv.h
字号:
/////////////////////////////////////////////////////////////////////////////
// 提供全局变量:
// TDATE g_tDate: 存放系统时间数据
//
// 提供全局函数:
//
// 读时钟芯片中的时间
// void TM_Read_Timer(void);
//
// 写时钟芯片中的时间
// void TM_Write_Timer(const TDATE *ptDate);
//
// 读时钟芯片的寄存器
// void TM_Read_DS_Array(char Offset,unsigned char Size,unsigned char *pTo);
//
// 写时钟芯片的寄存器
// void TM_Write_DS_Array(char Offset,unsigned char Size,unsigned char *pFrom);
//
// 使用全局变量:
// 无
//
// 使用全局函数:
// BcdHex,HexBcd
//
//
/////////////////////////////////////////////////////////////////////////////
#ifndef __TIMER__
#define __TIMER__
#include "typedef.h"
typedef struct tagTDATE
{
WORD wYear; //1997-2050
BYTE byMon; //1-12
BYTE byDay; //1-28,29,30,31
BYTE byHour;//0-23
BYTE byMin; //0-59
WORD wMs; //0-59999
} TDATE;
struct t_time
{
unsigned short year;
unsigned char month;
unsigned char date;
unsigned char hour;
unsigned char minute;
unsigned char second;
unsigned short msec; //define same as TDATE.wMs
};
#define ACDATAGRPS 3 //最多有多少组I,U,P,Q,COS原始量
typedef struct
{
//格式:bit15:溢出,bit14:差错,bit13:越限,bit12:符号(1负0正),bit11~0:(绝对值)值
short I[ACDATAGRPS];
short U[ACDATAGRPS];
short P[ACDATAGRPS];
short Q[ACDATAGRPS];
short COS[ACDATAGRPS];
bool QDIR[ACDATAGRPS];
} CALING_ENG_DATA;
extern CALING_ENG_DATA Cal_Eng_Data;
typedef struct
{
DWORD dPulseP;
DWORD dPulseQ;
DWORD dKwhP;
DWORD dKwhN;
DWORD dKvrP;
DWORD dKvrN;
DWORD dTKwhTP;
DWORD dTKwhTN;
DWORD dTKvrTP;
DWORD dTKvrTN;
} DIAN_LIANG;
extern DIAN_LIANG tDian_Liang;
typedef struct
{
short I[ACDATAGRPS];
short U[ACDATAGRPS];
short E[ACDATAGRPS];
bool BeUsed;
}CS5460_IVE;
extern CS5460_IVE CS5460_ive;
#define CALIBRATE_DC_OFFSET 1
#define CALIBRATE_AC_OFFSET 2
#define CALIBRATE_AC_GAIN 3
#define CALIBRATE_DEGREE 4
#define CALIBRATE_RIGHT 1
#define CALIBRATE_ERROR 2
typedef struct
{
bool bNeed_Save_Config;
bool bNeed_Read_Config;
bool bNeed_Save_Energy;
bool bNeed_Clear_Energy;
bool bNeed_Download_Config;
bool bNeed_Show_Offset_OK;
bool bNeed_Show_Gain_OK;
WORD wOprateID; //DCOff,ACOff,ACGain,DEGREE
bool bCalibrating;
WORD wCalibrate_Result;
}OPRATE_5460_FLAG;
extern OPRATE_5460_FLAG gtOp_5460_Flag;
typedef struct tagCONFIG_5460
{
DWORD Config;
DWORD Ioff;
DWORD Ign;
DWORD Voff;
DWORD Vgn;
DWORD Iacoff;
DWORD Vacoff;
DWORD Poff;
WORD wCRC;
}CONFIG_5460;
typedef struct tagENERGY_REG
{
CONFIG_5460 Conf; //保存到FLASH中
bool bUsed;
DWORD dRealEgy; //保存到DS1306EN中
DWORD E;
DWORD V;
DWORD I;
DWORD P;
DWORD Irms;
DWORD Vrms;
DWORD Tbc;
DWORD Status;
DWORD Mask;
DWORD dDeltT;
}ENERGY_REG;
#define CS_ALL 0x03
#define ENERGY_OFFSET 0 //
#define CSIBLXS 1676757
#define CSVBLXS 83874
#define CSEBLXS 04096
//串行时钟
char read_DS1306( const char reg); //读时钟芯片的寄存器
void TM_Write_DS1306(const char reg,const unsigned char control);
//时间读写
void TM_Read_Timer(void);
void TM_Write_Timer(const TDATE *ptDate);
//读时钟芯片的寄存器
//Offset:偏移地址[0,95]
//Size: 长度 条件:Offset+Size <= 96
//pTo: 读出的数据存放指针
void TM_Read_DS_Array(char Offset,unsigned char Size,unsigned char *pTo);
//写时钟芯片的寄存器
//Offset:偏移地址[0,95]
//Size: 长度 条件:Offset+Size <= 96
//pFrom: 待写入数据的存放指针
void TM_Write_DS_Array(char Offset,unsigned char Size,unsigned char *pFrom);
//从CS5460中读出数据
//which_cs:cs5460片选,0,1,2分别对应1,2,3
//Command: 命令字
//pDword: 待读出的数据存放指针,自动将24bits 转换成DWORD
void TM_Read_CS5460(unsigned char Command,unsigned char which_cs,unsigned long *pDword);
//向CS5460中写入数据
//which_cs:cs5460片选,0,1,2分别对应1,2,3
//Command: 命令字
//pDword: 待写入的数据存放指针,自动将DWORD 转换成24bits
void TM_Write_CS5460(unsigned char Command,unsigned char which_cs,unsigned long *pDword);
//上电初始化CS5460
void TM_Initinize_CS5460(void);
//偏置校验
//byWhich_CS:0,1,2,3(全部Three)
bool TM_CS_Set_Dc_Offset(BYTE byWhich_CS);
//偏置校验
//byWhich_CS:0,1,2,3(全部Three)
bool TM_CS_Set_AC_Offset(BYTE byWhich_CS);
//增益校验
bool TM_CS_Set_AC_Gain(BYTE byWhich_CS);
//角度校验
bool TM_CS_Set_Degree(BYTE byWhich_CS,BYTE byOprate);
//保存CS5460配置信息
bool TM_Save_CS5460_Config(BYTE byWhich_CS);
//复归CS5460
bool TM_Reset_CS5460(BYTE byWhich_CS);
//校验运行中CS5460配置信息
bool TM_Check_CS5460_Config(BYTE byWhich_CS);
//CS5460操作显示
void CS5460A_Operating_Show();
//实际保存能量清0
void TM_Clear_Real_Energy();
//周期性电能管理操作
// >1.3S调用一次
void Cycle_Energy_Operation();
extern volatile TDATE g_tDate;
extern ENERGY_REG Energy_Reg[3];
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -