#include "Pwm_Capture_value.h"
INT8U   OLD_PULSE1F;		//�ɵ�ת�ٱ��ź������״̬ 
INT16U  CSB_T01_HL;
INT16U  CSB_T10_HL;
INT16U  CSB_SJTime_HL;	//ת�ٱ��¼��궨ʱ��(��λ60US) 
INT8U   T1IMEB_CUNT;    //��ʱ��(��ת�ٱ��������峬�����)      
INT16U  CSB_TS_BUFF;    //���ٱ� ʱ�仺�� 
INT8U   CSB_Freq_FF;		//=1��ʾ���Ե�Ƶ��ֵ
INT8U   CSB_TB_FF;			//=0��ʾ��TBֵ
INT16U  CSB_TS_CC;
INT8U   CSB_PULS_BUFF;
INT8U   CSB_PUZUO_FF;		//=0��׽����,=1��׽����
INT8U   CSB_TB_FF;			//=0��ʾ��TBֵ
INT8U   CSB_T01_FF;		  //=0��ʾ��T01ֵ
INT16U  CSB_TB_HL; 
INT8U   CSB_PULS_N;
INT16U  CSB_SS_FrHL;    //���ٱ�ʵʱ����Ƶ��
/**********************************************************************************
 * �������ƣ�BL_PWM_Duty_Cycle_Capture_CSB_ISR
 * ����˵��������Ƶ�ʻ�ȡ
 *           ����Ƶ��
 *
 * *******************************************************************************/
void BL_PWM_Duty_Cycle_Capture_CSB_ISR(void) 
{ 
	INT16U mTIME;
	CSB_SJTime_HL++;

	if( LINE_SPEED_IN )  //����Ƶ������
	{        
		if(!OLD_PULSE1F) //�ɵ� �ɵ�ת�ٱ��ź������״̬ 
		{         
			//0--->1   �͵�ƽ���ߵ�ƽ
			OLD_PULSE1F=1;   

			CSB_T01_HL = CSB_SJTime_HL;  // CSB_SJTime_HL ת�ٱ��¼��궨ʱ��(��λ60US) 
			CSB_T01_FF = 1;				       //��ʾT01����ֵ

			if(CSB_PUZUO_FF)			       //��׽����?,no ����׽������  //=0��׽����,=1��׽����
			{    	
				if( (CSB_T01_HL-CSB_T10_HL) < 8 )
					goto  INT_CSB_END;

				T1IMEB_CUNT  = 0;			//�峬ʱ��ʱ��
				CSB_PUZUO_FF = 0;			//����׽���ر�־ 

				//-------------------------
				mTIME=CSB_T01_HL-CSB_TB_HL;

				if( mTIME>=1875 )		//0.12s            1515     11Hz�� (1/11)*1000000/50=1818
				{
					CSB_TS_BUFF    = mTIME; 
					CSB_PULS_BUFF  = 1;

					CSB_Freq_FF=1;				//�ò��Ե�Ƶ�ʱ�־

					CSB_T01_HL=0;
					CSB_SJTime_HL=0;

					CSB_TB_FF=0;		//����TB��־

					CSB_TS_CC = CSB_PULS_N=0;
				}
			}
		}        
	}
	else
	{
		if(OLD_PULSE1F)
		{
			//1--->0
			OLD_PULSE1F=0;  
			CSB_T10_HL = CSB_SJTime_HL;

			if(CSB_PUZUO_FF)			//��׽����?,no
				goto  INT_CSB_END;

			if(CSB_T01_FF)				//T01����ֵ?,YES
			{
				if( (CSB_T10_HL-CSB_T01_HL) < 8 )
					goto  INT_CSB_END;	

				T1IMEB_CUNT = 0;		//�峬ʱ��ʱ��

				CSB_PUZUO_FF = 1;		//����׽���ر�־ 

				if(CSB_TB_FF)			//��TBֵ?,YES
				{
					//��TBֵ
					CSB_PULS_N++;

					CSB_TS_CC=CSB_TS_CC+CSB_T01_HL-CSB_TB_HL;

					CSB_TB_HL=CSB_T01_HL;

					CSB_SJTime_HL=CSB_SJTime_HL-CSB_TB_HL;

					CSB_T10_HL=CSB_SJTime_HL;

					CSB_TB_HL=0; 

					//---------------------------------
					if((((INT8U)CSB_PULS_N)&((4)-1))==0)//CSB_PULS_NN��4��8��������?,YES
					{
						CSB_TS_BUFF=CSB_TS_CC;
						CSB_PULS_BUFF=CSB_PULS_N;

						if(CSB_TS_CC>=2344) //2500(0.15s)    1667(0.1S)       2000*0.05MS=0.1S
						{
							CSB_TS_CC=CSB_PULS_N=0;
							CSB_Freq_FF=1;				//�ò��Ե�Ƶ�ʱ�־
						}
					}
					else
					{
						if(CSB_TS_CC>=2344) //2500(0.15s)    1667(0.1S)       2000*0.05MS=0.1S
						{
							if(CSB_PULS_N< 4)
							{
								CSB_TS_BUFF=CSB_TS_CC;
								CSB_PULS_BUFF=CSB_PULS_N;

								CSB_TS_CC=CSB_PULS_N=0;

								CSB_Freq_FF=1;				//�ò��Ե�Ƶ�ʱ�־
							}
							else
							{
								CSB_TS_CC=CSB_PULS_N=0;
								CSB_Freq_FF=1;				//�ò��Ե�Ƶ�ʱ�־
							}
						}
					}
				}
				else
				{ 
					//��TBֵ
					CSB_TB_FF=1;
					CSB_TB_HL=CSB_T01_HL;
				}
			}
		}
	}
INT_CSB_END :	
	  mTIME = 0 ; 
}

INT16U  Hyq_mPULS ;
INT16U  Hyq_mTIME ;

INT16U GJ_T_JSCCSBF(INT8U mTYPE)
{              
	INT16U mPULS;
	INT16U mTIME;

	if(mTYPE)
	{
		cli();                      //��ֹȫ���ж�
		mPULS=CSB_PULS_BUFF;
		mTIME=CSB_TS_BUFF;
		sei();                      //��ȫ���ж�      

	}
	//else
	//{
	//	cli();                      //��ֹȫ���ж�
	//	mPULS=ZSB_PULS_BUFF;
	//	mTIME=ZSB_TS_BUFF;
	//	sei();                      //��ȫ���ж�      
	//      
	//}
  Hyq_mPULS =  mPULS;
  Hyq_mTIME =  mTIME;
  
	return  (((INT32U)199897)*mPULS)/(mTIME);       //64us-156170    50us-199897       
} 
//==================================================
//�������㳵�ٱ����ж��е�����Ƶ�ʵ�10��ֵ     2015-12-30
//
//����:����1��ʾ������Ч����,��������CSB_SS_FrHL��
//==================================================                
INT8U ReadCSBPULESP(void)
{       
	T1IMEB_CUNT++;
	if(T1IMEB_CUNT==202)	//300MS?    152*1.98=300.96MS
	{ 
		T1IMEB_CUNT=0;

		cli();                      //��ֹȫ���ж�
		CSB_PUZUO_FF=0;
		CSB_T01_FF=0;
		CSB_SJTime_HL=0;
		sei();                      //��ȫ���ж�      

		CSB_TB_FF=0;
		CSB_TS_CC=CSB_PULS_N=0;
		CSB_Freq_FF=0;				

		CSB_SS_FrHL=0;  	//��Ƶ��Ϊ0

		return 1;
	}

	if(CSB_Freq_FF)                 //������CAR_N_CCC�����ٱ���������?
	{
		CSB_Freq_FF=0;
		CSB_SS_FrHL = GJ_T_JSCCSBF(1);   //���ݳ�ת�ٱ����ж��е����ݼ���10��Ƶ��
		if( CSB_SS_FrHL<=15 )      //30
			CSB_SS_FrHL=0;
		return 1;
	}
	else
	{
		return 0;	
	}	
}