void TIM1_TRG_COM_TIM17_IRQHandler(void)//21.6ms
{
//u16 Temp;
//DEBUG_Signal();//jimmy20110630 for test
// Check for the source of TIMx int - Capture or Update Event -
if ( TIM_GetFlagStatus(TIM17, TIM_FLAG_CC1) )
{
TIM_ClearITPendingBit(TIM17, TIM_FLAG_CC1);//jimmy20110628
Delay5us();
if(!GPIO_ReadInputDataBit(INFRARED_REC_PORT, INFRARED_REC_BIT))
{
Delay5us();
if(!GPIO_ReadInputDataBit(INFRARED_REC_PORT, INFRARED_REC_BIT))
{
Delay5us();
if(!GPIO_ReadInputDataBit(INFRARED_REC_PORT, INFRARED_REC_BIT))
{
Infrared_Signal = TIM_GetCapture1(TIM17);
Temp = Infrared_Signal - Infrared_Signal_Old;
//Infrared_Signal = Infrared_Signal_Old;
//if(Temp > 3000 && Temp < 3750)//0 信号 1.125ms(3375) 1pcs 1ms----1.25ms
if(Temp > 2750 && Temp < 4000)//0 信号 1.125ms(3375) 1pcs 1ms----1.25ms
{
Temp = 0;
Infrared_Signal_Old=Infrared_Signal;//jimmy20110704
}
//else if(Temp > 6000 && Temp < 7500)//1 信号 2.25ms(6750) 2pcs 2ms----2.5ms
else if(Temp > 5750 && Temp < 7750)//1 信号 2.25ms(6750) 2pcs 2ms----2.5ms
{
Temp = 1;
Infrared_Signal_Old=Infrared_Signal;//jimmy20110704
}
else if(Temp > 36000 && Temp < 45000)//同步码 13.5ms(40500) 12pcs 12ms----15ms
{
BitCnt = 0;
Infrared_Code = 0;
Infrared_Signal_Old=Infrared_Signal;//jimmy20110704
return;
}
else
{
return;
}
BitCnt++;
if(BitCnt < 32)
{
Infrared_Code = Infrared_Code | (u16)Temp;
Infrared_Code = Infrared_Code << 1;
}
else if(BitCnt == 32)
{
Infrared_Code = Infrared_Code | (u16)Temp;
BitCnt = 0;
Csr1 = (u8)(Infrared_Code >>8);
Csr0 = (u8)(Infrared_Code);
Csr0 = ~Csr0;
if(Csr1 == Csr0)
{
KeyCode = Csr0;
KeyCode = KeyCode;
}
}
}
}
}
}
if(TIM_GetFlagStatus(TIM17, TIM_FLAG_Update) )
{
TIM_ClearITPendingBit(TIM17, TIM_IT_Update);//jimmy20110628
}
}
|