智能车制作
标题:
摄像头图像采集问题
[打印本页]
作者:
zjt
时间:
2011-3-9 22:49
标题:
摄像头图像采集问题
我们加入了控制算法以后,摄像头采集的图像质量下降严重。不管怎么改行消隐信号等待时间,总是无法减弱行消隐信号产生黑块的宽度,以至于将干扰当成了跑道,谁知道该怎么办?我们的总线时钟是48M,要采一个70乘80的矩阵。是哪个时间设置的不合适?还是摄像头焦距没调好?还是AD的频率没调好?
这是AD模块的初始化代码:
ATD0CTL0=0x00; //单通道转换
ATD0CTL1=0x0F; //7:1-外部触发,65:00-8位精度,4:放电,3210:通道15
ATD0CTL2=0x40; //禁止外部触发, 中断禁止
ATD0CTL3=0x08; //左对齐无符号,每次转换1个序列, No FIFO, Freeze模式下继续转
ATD0CTL4=0x00; //765:采样时间为4个AD时钟周期,ATDClock=[BusClock*0.5]/[PRS+1]
ATD0CTL5=0x0F; //通道15
ATD0DIEN=0x00; //禁止数字输入
复制代码
附主函数代码:
void main(void)
{
LAST_PWMDTY01=6300;
PRE1_PWMDTY01=6300;
PRE2_PWMDTY01=6300;
k=0;
PORTB=0xFF;
for(;;)
{
// PWMDTY01=6200;
PORTB=0xf0;
PWMDTY23=0;
PWMDTY45=0;
row=0;
gpline=0; //一场中行计数清零
gpflag=0; //清除场采集结束标志
while((PTH&0x02)!=0) ; //等待场同步信号到来
PORTB=0xff;
EnableInterrupts; //开中断
TC0=TCNT+0x0CCC; //等待场消隐结束
TFLG1=0xFF; //清楚计数完成标志
TIE=0x01; //开启TC0中断(interrupt 8)
while(gpflag==0);
DisableInterrupts;
//此处可添加信息处理、舵机和电机控制程序
draw_blackline_1();//提取有效的首行
draw_blackline_2();//对剩余的图像,提取黑线;
//////////////////////////////////////////////////
get_steer(end_hang,start_hang);
duoji_control(steer);
PathIdentifier();
startline_detect();
if(startline==1) {
stopline++;
}
motor_control();
}
//////////////////////////
}
// Vector 6 Interrupt:start get a line
interrupt 6 void line_start(void)
//interrupt 2054 void line_start(void)
{
IRQCR=0; //关闭行中断
if(gpline==70) {
gpflag=1; //场结束标志位
//DisableInterrupts;
}
else {
gppoint=0; //一行中点计数清零
TC1=TCNT+0x004E; //等待行消隐结束
TFLG1=0xFF; //清除计数完成标志
TIE=0x02; //开启TC1局部中断(interrupt 9)
}
}
// Vector 8 Interrupt:Timer0
interrupt 8 void timer0(void)
//interrupt 2056 void timer0(void)
{
TIE=0; //关闭定时器局部中断
IRQCR=0x40; //开启行同步中断(interrupt 6)
}
// Vector 9 Interrupt:Timer1
//interrupt 2057 void timer1(void)
interrupt 9 void timer1(void)
{
unsigned char *p;
TIE=0; //关闭定时器局部中断
p=&(pic[gpline][0]);
ATD0CTL2=0x40;
ATD0CTL5=0x2F;
while(gppoint!=80)
{
while(!ATD0STAT2_CCF0); //等待通道15转换结束
*p=ATD0DR0H;
p++;
gppoint++;
}
row=gpline;
TC2=TCNT+0x009c; //隔数行采一次 ,已改
TFLG1=0xFF; //清除计时完成标志
TIE=0x04; //开启TC2局部中断(interrupt 10)
gpline++;
}
// Vector 10 Interrupt:Timer2
interrupt 10 void timer2(void)
//interrupt 2058 void timer2(void)
{
TIE=0; //关闭定时器局部中断
IRQCR=0x40; //开启行同步中断(interrupt 6)
}
复制代码
作者:
悲疏轻风
时间:
2011-3-10 13:12
我知道怎么办,底下私聊!
作者:
as1093368889
时间:
2011-3-16 00:10
求经验啊,急!!
作者:
zzdzdq
时间:
2011-3-16 13:31
你试着不接电机,用手推推看。。
作者:
zzdzdq
时间:
2011-3-16 13:32
我的车只要不接电机,用手推就是跑得很好。。一但接上了。就over了图像采集出来看到的就是很多行无语的黑线
作者:
梦逍遥
时间:
2011-3-16 20:50
电机干扰?
作者:
iven
时间:
2011-3-17 10:43
回复
1#
zjt
楼主解决了没有?什么问题?不接电机看看推车跑看看
作者:
wenziheni
时间:
2011-10-30 21:42
怎么用BDM看ov7620呀
作者:
黑夜,香烟
时间:
2012-7-5 20:44
二楼能和我私聊吗?623770364
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2