智能车制作
标题:
OV7620的图像采集问题。。各路大神过来瞧瞧吧!
[打印本页]
作者:
qw837372449
时间:
2016-3-1 22:15
标题:
OV7620的图像采集问题。。各路大神过来瞧瞧吧!
之前我用的岱默的例程调试在上位机上显示出来还是不错的,但今天我用学长的程序改完之后在上位机上显示就变成。
[attach]84084[/attach]就是采集的图像分成了四份(不是一副图像分成了四份,而是同一个图像在显示窗口显示了四份)在网上看说什么可能是场行中断的问题。我也不知道具体出在哪 刚改来改去都不行 只好来求助啦。
这是我的主程序
/***********/
void main(void)
{
uint8 i,j;
DisableInterrupts;
uart_init(UART0,115200);
delay();
CCD_INC();
set_vector_handler(PORTD_VECTORn,PORTD_IRQHandler);
set_vector_handler(DMA4_VECTORn,DMA_CH4_Handler);
//enable_irq (PORTD_IRQn);
disable_irq(PIT0_IRQn);
disable_irq(PIT1_IRQn);
gpio_init (PTE10, GPO,HIGH);
gpio_init (PTE12, GPO,HIGH);
EnableInterrupts;
while(1)
{
uart_putchar(UART0,0xff);
for(i=0;i<DATALINE;i++)
{
for(j=0;j<DATACOUNT;j++)
{
if(j%2==0)
{
if(ADdata
[j]==0xff)
ADdata
[j]--;
uart_putchar(UART0,ADdata
[j]);
}
}
EnableInterrupts;
}
}
这是我的外部中断程序
/***************************/
void PORTD_IRQHandler(){
if(PORTD_ISFR & 0x2000) //PTD13触发中断,采集的行中断
{
PORTD_ISFR |= 0x2000; //写1清中断标志位
if(Sample_Flag==0)
{
return;
}
dma_portx2buff_init(DMA_CH4, (void *)&PTE_B0_IN, ADdata[0], PTD14, DMA_BYTE1, DATACOUNT, DMA_RISING);
if((LinCout%(480/DATALINE)==0)&&(LinADCout<DATALINE))
{
delay() ; //摄像头行中断改为下降沿触发,有效点前面有一段行消隐区,故需要一段延时消除消耗掉,该处的时间,程序里面的需要根据单片机的主频调整。
DMA_DADDR(DMA_CH4) = (uint32_t)ADdata[LinADCout] ; //数据存储地址变化
DMA_EN(DMA_CH4); //使能通道CHn 硬件请求 (这样才能继续触发DMA传输)
DMA_IRQ_EN(DMA_CH4) ; //允许DMA通道传输
//PTA16_OUT = ~PTA16_OUT ;
LinADCout ++ ;
}
LinCout++;
if(LinADCout==DATALINE)
{
LinADCout=0;
// DMA_DIS(DMA_CH4);
//DisableInterrupts;
DMA_Over_Flg = 1 ;
}
}
if(PORTD_ISFR & 0x8000) //PTD15触发中断,采集的场中断。
{
PORTD_ISFR |= 0x8000; //写1清中断标志位
//uart_putchar(UART0,LinCout>>8); //采样行数
//uart_putchar(UART0,LinCout); //采样行数
LinCout = 0 ;
LinADCout=0;
Sample_Flag=1;
port_init (PTD13, IRQ_FALLING | ALT1 | PULLUP );
PORTD_ISFR |= 0x2000; //写1清中断标志位
}
}
有人遇到过这种情况吗
还请大家分享下经验啊
作者:
2862356756
时间:
2016-3-21 23:33
你现在解决了没
作者:
1327010258
时间:
2016-3-26 16:57
行中断不是只能上升沿触发,场中断上升,下降都可以。错了别怪我,看的蓝宙视频。
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2