高级会员
- 积分
- 669
- 威望
- 320
- 贡献
- 183
- 兑换币
- 190
- 注册时间
- 2014-5-11
- 在线时间
- 83 小时
- 毕业学校
- 河北科技大学
|
移植龙邱的ccd采集测试程序,初始化和采集和延时函数都没有改,发现单步执行时一直卡在 while(!ATD0STAT0_SCF)跳不出来。AD初始化如下:
void INIT_AD(void)
{
ATD0CTL1=0x40; //12位AD
ATD0CTL2=0x40; //禁止外部触发, 中断禁止
ATD0CTL3=0xa0; //右对齐无符号,每次转换4个序列, No FIFO, Freeze模式下继续转
ATD0CTL4=0x01; //765:采样时间为4个AD时钟周期,ATDClock=[BusClock*0.5]/[PRS+1]
ATD0CTL5 = 0x30;
ATD0DIEN=0x00; //禁止数字输入
}
采集程序如下:void ReadADresult(void)
{
byte i=0,tslp=0;
TSL_CLK=1;//起始电平高
TSL_SI=0; //起始电平低
delay_us(1); //合理的延时
TSL_SI=1; //上升沿
TSL_CLK=0;//下降沿
delay_us(1); //合理延时
TSL_CLK=1;//上升沿 4
TSL_SI=0; //下降沿
delay_us(1); //合理延时
for(i=0;i<64;i++)
{
TSL_CLK=0;//下降沿
delay_us(8-i/8+1); //合理延时
while(!ATD0STAT0_SCF);//等待转换结束
// ATD0STAT0_SCF=0;
ADV[tslp]=AD_get(0);
++tslp;
TSL_CLK=1;//上升沿
delay_us(8-i/8+1); //合理延时
}
for(i=0;i<64;i++)
{
TSL_CLK=0;//下降沿
delay_us(i/8+1); //合理延时
while(!ATD0STAT0_SCF);//等待转换结束
// ATD0STAT0_SCF=0;
ADV[tslp]=AD_get(0);//AD采集
++tslp;
TSL_CLK=1;//上升沿
delay_us(i/8+1); //合理延时
}
}
延时程序如下:
void Dly_us(byte us)
{
byte ii;
for(ii=0;ii<us;ii++)
{
_asm(nop);_asm(nop);_asm(nop);_asm(nop);
_asm(nop);_asm(nop);_asm(nop);_asm(nop);
_asm(nop);_asm(nop);_asm(nop);_asm(nop);
_asm(nop);_asm(nop);_asm(nop);_asm(nop);
_asm(nop);_asm(nop);_asm(nop);_asm(nop);
_asm(nop);_asm(nop);_asm(nop);_asm(nop);
_asm(nop);_asm(nop);_asm(nop);_asm(nop);
_asm(nop);_asm(nop);_asm(nop);_asm(nop);
}
}
调试的时候就一直卡在while(!ATD0STAT0_SCF)中
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|