
/************************ (C) COPYRIGHT 2015 FT *******************************
* File Name          : 行业功能层
* Author             : Application Team  Tom.wang 
* Version            : V2.0.0
* Date               : 06/15/2015
* Description        : 警告：禁止修改,删除 结构体定义 否则会导致未知错误
TOM 20170911
sys_conf.h -> fu68xx_IQmath.h
              user_conf.h  -> tempuserconf.h
           -> function.h
           -> tempconstant.h
********************************************************************************
/*******************************************************************************
* All Rights Reserved
*******************************************************************************/

/* Includes ------------------------------------------------------------------*/
#ifndef __FUNCTION_H_
#define __FUNCTION_H_

//------------------------------------------------------------------------
#define      F_0          0                 //none
#define      F_A          1                 //A、electronic speed controller   
#define      F_B          2                 //B、Hand-held motor-operated electric tools

//Select 
#if(ESC_PPMSREFEN)
  #define      F_MODE       F_A             //0 F_A F_B   
#else
  #define      F_MODE       F_B             //0 F_A F_B 
#endif
//============================================================================
//功能选择层选择 会增加代码量 
#define SETVERSIONSEN     0                //Set_Versions  
#define FAILLOGEN         0                //故障信息记录          
#define FAILLAMPEN        1                //故障指示 LED闪烁  
#define FAILSTOREEN       0                //Flash 故障存储 

//============================================================================
//速度给定曲线修正参数 ADC、PWMIN  ON/OFF 
//(X1,Y1) (X2,Y2) -->> (SREF_OUT_MAX,SREF_IN_MAX)  (SREF_OUT_MIN,SREF_IN_MIN) 
//A = (Y2,Y1)/(X2,X1)  B = Y2 - AX2                         
#define SREFCOUNT            (15)                 //ON/OFF滤波次数
#define SREF_IN_OFFVALUE     (_IQ(0.05))          //关机电平0.05*5 = 0.25V 
#define SREF_IN_ONVALUE      (_IQ(0.1))           //开机电平0.1*5 = 0.5V

#define SREF_IN_MIN          (_IQ(0.1))           //外部给定输入 最小
#define SREF_IN_MAX          (_IQ(0.95))          //外部给定输入 最大
#define SREF_OUT_MIN         (_IQ(0.10))          //速度给定输出 最小
#define SREF_OUT_MAX         (_IQ(1.0))           //速度给定输出 最大

#define SREFlineA            ((float)(SREF_OUT_MAX-SREF_OUT_MIN)/(float)(SREF_IN_MAX-SREF_IN_MIN))
#define SREFlineB            (SREF_OUT_MAX - SREF_IN_MAX*SREFlineA)

#define MOTORCIRCLECALEEN    (0)              //电机旋转圈数计算  Motor rotating ring number counting

//=======================================================================
#if (F_MODE == F_B)                          //手持电动工具常用功能
  //电动工具行参数设置
  #define LAMP_EN           (0)              //单位-- && 电动工具延时照明使能  //无操作延时控制
  #define NOOPDELAYNMS      (10000)          //单位ms && NoOperationDelaynms
  //------------------------------------------------------------------------
  //过载保护                              
  #define  OVERLOAD_EN        (0)            //单位-  过载使能
  #define  OVERLOAD0          (40.1)         //单位A  过流值
  #define  OVERLOAD1          (42.2)         //单位A  过流值
  #define  OVERLOAD2          (44.3)         //单位A  过流值
  #define  OVERLOAD3          (46.4)         //单位A  过流值
    
  #define  OL0NMS             (6000)         //单位ms 过流监测时间
  #define  OL1NMS             (3000)         //单位ms 过流监测时间
  #define  OL2NMS             (1000)         //单位ms 过流监测时间
  #define  OL3NMS             (500)          //单位ms 过流监测时间
  //------------------------------------------------------------------------
  //空载判断
  #define  NOLOAD_EN           (0)
  #define  NOLOADCURRENT       (8.0)          //单位A 
  #define  NOLOADNUM           (2)            //单位ms
  
#endif
//========================================================================
//电调行业参数设置
#if (F_MODE == F_A)                          //航模电调常用功能
  //电机发声参数设置
  #define BEEPSCAN_EN         (1)            //电机鸣叫 提示音 
  #define BEEP_VOL            (0.5)          //电机鸣叫声音 大小  volume
  //--------------------------------------------------- 
  /* 
  电调油门   油门分辨率0.0833us
  1、软件兼容1000us油门 和125us 油门
  2、支持油门校准功能 
  油门报警
  1、上电时油门线短 立刻报警
  2、运行时油门断线 运行1s后 停机 5s后报警
  */
    #define PWMINALINE_EN         (0)      // 油门校准使能
    #define PWMHighMinDefaultA    (1000)   // 默认最低油门, us   
    #define PWMHighMaxDefaultA    (1900)   // 默认最高油门, us   
    #define PWMHighMinAlineA      (1200)   // 最低油门校准, us   
    #define PWMHighMaxAlineA      (1800)   // 最高油门校准, us   
    #define MotorBreakTimeA       (40)     // 刹车油门时间 us     没有使用
    #define MotorOFFTimeErrA      (60)     // OFF时间偏差, us     停机油门 PWMHighMinDefault+ MotorOFFTimeErr
    #define MotorONTimeErrA       (80)     // ON时间偏差, us      启动油门 PWMHighMinDefault+ MotorONTimeErr 
    #define MotorLinearTimeErrA   (85)     // 线性调速最小,err    大于PWMHighMinDefault+ MotorLinearTimeErrA 调速
    #define PWMINHighMinFiltA     (500)    // 最低油门信号周期值, us 400   小于此油门报警
    #define PWMINHighMaxFiltA     (2200)   // 最高油门信号周期值, us 3000  大于此油门报警
#endif