金牌会员
- 积分
- 1204
- 威望
- 705
- 贡献
- 241
- 兑换币
- 146
- 注册时间
- 2011-7-21
- 在线时间
- 129 小时
|
void FTM0_IRQHandler()
{
u32 s = FTM0_STATUS; //读取捕捉和比较状态
if( s & (1 << 5) )
{
PPC[0].x_right[PPC[0].white_n] = FTM0_CNT;
FTM_IRQ_EN(FTM0, CH6);
FTM_IRQ_DIS(FTM0, CH5);
}
else if( s & (1 << 6) )
{
PPC[0].x_left[PPC[0].white_n] = FTM0_CNT;
PPC[0].white_n++;
FTM_IRQ_DIS(FTM0, CH6);
if(PPC[0].white_n==Pulse_Max_Num)
{
FTM_IRQ_DIS(FTM0, CH5);
}
FTM_IRQ_EN(FTM0, CH5);
/*********************/
}
FTM0_STATUS = 0x00; //清中断标志位
}
void PORTD_IRQHandler()
{
u32 a = PORTD_ISFR;
if(a & (1 << 3)) //PTD3触发场中断
{
Field_CNT++;
Line_CNT=0;
Field_over=0;
}
else if((a & (1 << 4))&&(!Field_over)) //PTD4触发行中断
{
FTM0_CNT=0;
if(Line_CNT==15)
{
PPC[0].white_n = 0;
FTM_IRQ_DIS(FTM0, CH6);
enable_irq(62);
FTM_IRQ_EN(FTM0, CH5);
}
if(Line_CNT==(First_Capture_Line_N+Line_Max_Num)&&Mode==Video_Get)
{
Mode=Cache;
disable_irq(90);
}
Line_CNT++;
}
PORTD_ISFR |= 0xFFFFFFFF; //写1清中断标志位
}
求大神看一下这段程序有什么错误没,主要是利用ftm的计数器(靠捕捉上升沿和下降沿的时间)来采集15行中断的图像数据,按理说对于相同的图像应该得到相同的数据,但得到的数据不一样,同时感觉采到的数据不对,行中断用的是PTD4,場中断用的是PTD3,捕捉上升沿用的是PTD5,下降沿用的是PTD6,搞好长时间总是不对,中断都能进去。求帮忙啊!!!
|
|