首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

一个CCD视屏信号采集行中断的问题

一个CCD视屏信号采集行中断的问题

在下十分困惑啊 希望大家帮下忙

是这样的 我用AD1,PORTA,PORTJ来做CMOS信号的采集和控制 其中 PORTA0通过检测的方法检测场信号 PORTJ7通过中断的方法来控制行采集。CMOS的视屏信号是通过LM1881分离行,场信号分别接入PORTJ,PORTA的。各位如果做过视频采集应该知道,CMOS的场消隐大概有22行,所以我想通过行中断来将场消隐信号滤除。这样的话,我只要设置前22次行中断不采集AD即可。具体程序如下,t为要消隐的行数为22 nh为行与行之间的消隐为18

//////////////////ccd
void ccd1(void)
{
byte old;
i=0;
IR=5;
//t=f=0;

ATD0CTL5 =0XA0; //通道0采样

while(1){
//PORTA=PORTA&0X80;
old=PORTA_BIT7;
if(PORTA_BIT7^old&ORTA_BIT7==1) {
PIEJ=0X80;
}
if(i==ccd_line) {
PIEJ =0X00;
return;
}
}
}

//中断程序
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 24 PIJ_CCD1(void){
unchar fade,j=0;
fade=nh;
if(t>0) {
t--;
return;
}
if(IR==5){

for(;j<ccd_point;){

while(fade>0) fade--;

while(!ATD0STAT0_SCF);

PORTB=ccd_1[j++]=ATD0DR0;

ATD0STAT0_SCF=1;
}
IR=0;i++;
}
else IR++;
PIFJ=0XFF;
}

#pragma CODE_SEG DEFAULT_ROM

///////////////////////////////////////////////

但这样设置之后 场效应依然存在


后来我把t设为50 采到的数据如下

t=180 它居然在高电平的时候也中断了

直至我将t设为1800 场消隐信号采基本消除

也就是说 在短短的场消隐的时间内 PORTJ进行了接近两千次中断 而且J不管是用上升沿中断 还是下降沿 结果都差不多

希望各位DX帮我看下 到底问题出在哪里?

没人回答吗?
返回列表