/****************************************************************************
*AD程序
*编写：李平
*版本号：V1.00
*日期：2011-7-16
*文件名：Ad.h
*/
#ifndef __ad_H
#define __ad_H

#include "main.h"

#define ZERO		500000
#define SPANZERO  	ZERO
#define TRN_INI   	2

#define uchar	uint8_t
#define ulng	uint32_t
#define uint	uint16_t

/******************************************************/
#define  AD_CLK_1   HAL_GPIO_WritePin(AD_CLK_GPIO_Port, AD_CLK_Pin, GPIO_PIN_SET)
#define  AD_CLK_0		HAL_GPIO_WritePin(AD_CLK_GPIO_Port, AD_CLK_Pin, GPIO_PIN_RESET)
#define  AD_CS_1   	HAL_GPIO_WritePin(AD_CS_GPIO_Port, AD_CS_Pin, GPIO_PIN_SET)
#define  AD_CS_0		HAL_GPIO_WritePin(AD_CS_GPIO_Port, AD_CS_Pin, GPIO_PIN_RESET)
#define  AD_DIN_1  	HAL_GPIO_WritePin(AD_DIN_GPIO_Port, AD_DIN_Pin, GPIO_PIN_SET)
#define  AD_DIN_0		HAL_GPIO_WritePin(AD_DIN_GPIO_Port, AD_DIN_Pin, GPIO_PIN_RESET)

#define	 AD_R_DI		HAL_GPIO_ReadPin(AD_DOUT_GPIO_Port, AD_DOUT_Pin)
#define  AD_SYNC_1 	HAL_GPIO_WritePin(AD_SYNC_GPIO_Port, AD_SYNC_Pin, GPIO_PIN_SET)
#define  AD_SYNC_0	HAL_GPIO_WritePin(AD_SYNC_GPIO_Port, AD_SYNC_Pin, GPIO_PIN_RESET)


extern uchar nag;	 //是否负值e
extern uchar point1;
extern ulng ad_read;
extern ulng ad_sample;
extern uchar fs[];
extern ulng Maxval;

extern void GPIO_Configuration_Ad(void);
extern void ArgIni(void);
extern void Zero_Save(void);
extern void Zero_Read(void);
extern void ArgRead(void);
extern void ArgSave(void);
extern void R_fs(void);
extern void W_fs(void);
extern ulng get_weight(void);
extern void RS232weight(__IO ulng x);
extern void Speed(void);

extern void setPoint(__IO uchar val_);
extern void setInteval(__IO uchar val_);
extern void setFS(__IO uchar val_);
extern void setPercent(__IO int val_);
extern void setMaxval(__IO ulng val_);
extern void setZeroCal(void);
extern void setFullCal(__IO ulng val_);
extern void setZero(void);

extern uchar Check_Start(void);
void Check_Wen(void);
void Check_Wen1(void);
void CommonModeIni(void);
void CheckZero(__IO ulng check_data);
void Check_Not_Wen(void);
extern void Do(void);
extern void Zero_Trace(void);
extern void ad_dis_calcu(void);
extern void Dis_Weight(void);

extern void Zero_Pro(void);
extern void Tare_Pro(void);
/******************************************/
extern void USART_Send_Byte(unsigned char j,unsigned char senddata);

extern void ArgSave(void);
extern void zerocalculate(void);
extern void fullcalculate(void);
extern void Zero_Save(void);
extern void Zero_Read(void);
extern void ArgSave(void);
extern void Speed(void);

extern ulng adcalculate(__IO ulng ads);
extern void Common(void);
extern ulng Ad_Sample1(void);
extern ulng EX_QR_Filter(ulng x);
extern void adFs(unsigned char fs_);

extern void kill_zero1(__IO uchar x);
extern void kill_zero2(__IO uchar x);
extern void Zero_Read(void);
extern ulng Updata(__IO ulng x);
extern void process(void);
extern void process1(void);
extern void Dis_timer(void);
extern void Com_P(ulng W_new);
extern uchar Is_B_location(void);
extern uchar Is_C_location(void);
extern void out_on_ma(void);
extern void out_off_ma(void);
extern void Cnt_ok_Read(void);
extern void Cnt_err_Read(void);
extern ulng adcalculate(__IO ulng ads);
extern void zerocalculate(void);
extern void fullcalculate(void);

extern ulng AdFilter(ulng x);
extern ulng AdFilter_xf(ulng x);
extern ulng Kalman_Filter(const double ResrcData, double ProcessNiose_Q,double MeasureNoise_R);
extern ulng EX_QR_Filter(ulng x);//函数说明,在应用文件中说明为外部函数

#endif 
