在线时间0 小时
UID104951
注册时间2009-1-14
NXP金币0
该用户从未签到
新手上路

- 积分
- 19
- 最后登录
- 1970-1-1
|
我最近用XS128做视屏采集时遇到了些问题,想请教下:
硬件上IRQ接视屏信号,视频的行信号周期为64us,AD初始化函数如下:
void InitATD(void)
{
//++++++++++++++++ATD转换初始化+++++++++++++++++//
ATD0CTL1=0x00; //7:1-外部触发,65:00-8位精度
ATD0CTL2=0x40; //禁止外部触发, 中断禁止
ATD0CTL3=0xa0; //右对齐无符号,每次转换4个序列, No FIFO, Freeze模式下继续转
ATD0CTL4=0x00; //sample per 4 AD cycle ATDClock=[BusClock*0.5]/[PRS+1]=40M/2=20M
ATD0CTL5=0x20; //只对0通道转换
ATD0DIEN=0x00; // 禁止数字输入
}
总线时钟超频到了40M:
void setbusclock(void)
{
CLKSEL=0X00; //disengage PLL to system
PLLCTL_PLLON=1; //turn on PLL
SYNR=4;
REFDV=1; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=80MHz;
_asm(nop); //BUS CLOCK=40M
_asm(nop);
while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;
CLKSEL_PLLSEL =1; //engage PLL to system;
}
采集函数如下:
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 15 OddEven(void)
{
TFLG1_C7F=1;// 清除中断标志位
testsyn=SynCnt;
g_video=data[0] ;
SynCnt=0;
RowCnt=0;
// hop=1;
// PORTA_PA4=~PORTA_PA4;
IRQCR_IRQEN=1; //允许行信号中断
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 6 RowSyn(void)
{
char j;
if (SynCnt%7==0 && SynCnt>=28 && SynCntrow-1)
}
但是采集到的数据只有14个有效点, 其他的在一遍遍的重复,请教大侠们,这是怎么回事呢?是AD初始化的问题吗?怎么改正呢?小弟先行谢过
|
|