智能车制作

标题: 摄像头采集,中断问题 [打印本页]

作者: Mydream    时间: 2014-7-10 15:50
标题: 摄像头采集,中断问题
我用的ov7620摄像头,KL26芯片,只能进入行中断,场中断一直进不去结果图像一直全黑,怎么回事呢???代码如下:
void main()
{


DisableInterrupts;         //禁止总中断
uart_init (UART_PORT, 115200);
dma_portx2buff_init(DMA_CH0, (void *)&PTE_B2_IN, (void *)ImageBuf[rowCnt], PTA7,
DMA_BYTE1, );
DMA_DIS(DMA_CH0);
DMA_IRQ_DIS(DMA_CH0);
disable_irq(PORTA_IRQn);                       
port_init(PTA7, ALT1 | DMA_FALLING | PULLDOWN );        
port_init(PTA6, ALT1 | IRQ_RISING  | PULLDOWN | PF);     
port_init(PTA5, ALT1 | IRQ_RISING  | PULLDOWN | PF);
set_vector_handler(PORTA_VECTORn ,PORTA_IRQHandler);   
set_vector_handler(DMA0_VECTORn ,DMA0_IRQHandler);   
enable_irq(PORTA_IRQn);  
EnableInterrupts;//中断允许
while(1)
   {
     
      
   }
}
  
void PORTA_IRQHandler()
{
   if( PORTA_ISFR& (1 << 5))         //PTB23触发中断
    {

        PORTA_ISFR  =~0;// (1 << 23);        //写1清中断标志位      
        dma_repeat(DMA_CH0, (void *)&PTE_B2_IN, (void *)ImageBuf[rowCnt],320);
        DMA_IRQ_EN(DMA_CH0);
        rowCnt++;
        if(rowCnt==ROW)
        {  
          rowCnt = 0;
          DMA_DIS(DMA_CH0);
          z=0;
          send=1;

        }

    }
     //---VSYN场中断处理
if(PORTA_ISFR& (1 << 6))         
    {

        PORTA_ISFR =~0;              
owCnt = 0;
        SampleFlag = 1;
        z=0;

}

void DMA0_IRQHandler()
{
    DMA_IRQ_CLEAN(DMA_CH0);                           
    DMA_IRQ_DIS(DMA_CH0);
}

是哪里出现问题了呢???


作者: 尕玍紿    时间: 2014-7-10 16:07
KL26是MCU吗??
没用过这个MCU,只用过K60。
给个K60的参考,不知道一不一样。
你查下你的程序,进中断后清除中断标志位有没有错。
K60中是一个引脚对应一个标志位的,不知道你的KL26是不是这样。
作者: Mydream    时间: 2014-7-10 16:20
尕玍紿 发表于 2014-7-10 16:07
KL26是MCU吗??
没用过这个MCU,只用过K60。
给个K60的参考,不知道一不一样。

kl26的端口A是共用一个中断向量号的,是不是就是因为只有一个标志位所以只能进入一个中断啊???

作者: 尕玍紿    时间: 2014-7-10 16:33
Mydream 发表于 2014-7-10 16:20
kl26的端口A是共用一个中断向量号的,是不是就是因为只有一个标志位所以只能进入一个中断啊???

向量号是向量号,中断标志是中断标志;K60也是一个端口一个向量号,但是K60的端口的每一个引脚都有一个中断标志位;
响应对应向量号的中断时,即响应一个端口的外部中断时,
需要查询具体是由该端口的哪个引脚产生的中断,然后把这个具体引脚的所对应的中断标志位清除。
看你的中断服务函数,有对中断具体是由哪个引脚产生的进行查询,但是清除中断时,清除的却都是同一个标志位。
我不知道是你的MCU本来就是这样,还是你弄错了。
如果可以,把中断分到不同端口中,这样相对来说,响应速度也会提高,毕竟查询具体中断源也是需要时间的。

作者: Mydream    时间: 2014-7-10 16:50
尕玍紿 发表于 2014-7-10 16:33
向量号是向量号,中断标志是中断标志;K60也是一个端口一个向量号,但是K60的端口的每一个引脚都有一个中 ...

嗯嗯,谢谢啦,刚接触这个很多不懂,受教啦!!!





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2