智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 6109|回复: 4
打印 上一主题 下一主题

摄像头采集,中断问题

[复制链接]

2

主题

11

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
297
威望
152
贡献
81
兑换币
85
注册时间
2014-4-9
在线时间
32 小时
毕业学校
111
跳转到指定楼层
1#
发表于 2014-7-10 15:50:36 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我用的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);
}

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

回复

使用道具 举报

2

主题

11

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
297
威望
152
贡献
81
兑换币
85
注册时间
2014-4-9
在线时间
32 小时
毕业学校
111
5#
 楼主| 发表于 2014-7-10 16:50:59 | 只看该作者
尕玍紿 发表于 2014-7-10 16:33
向量号是向量号,中断标志是中断标志;K60也是一个端口一个向量号,但是K60的端口的每一个引脚都有一个中 ...

嗯嗯,谢谢啦,刚接触这个很多不懂,受教啦!!!
回复 支持 反对

使用道具 举报

50

主题

198

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1393
威望
690
贡献
439
兑换币
386
注册时间
2013-3-6
在线时间
132 小时
毕业学校
北京师范大学珠海分校
4#
发表于 2014-7-10 16:33:03 | 只看该作者
Mydream 发表于 2014-7-10 16:20
kl26的端口A是共用一个中断向量号的,是不是就是因为只有一个标志位所以只能进入一个中断啊???

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

使用道具 举报

2

主题

11

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
297
威望
152
贡献
81
兑换币
85
注册时间
2014-4-9
在线时间
32 小时
毕业学校
111
3#
 楼主| 发表于 2014-7-10 16:20:02 | 只看该作者
尕玍紿 发表于 2014-7-10 16:07
KL26是MCU吗??
没用过这个MCU,只用过K60。
给个K60的参考,不知道一不一样。

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

使用道具 举报

50

主题

198

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1393
威望
690
贡献
439
兑换币
386
注册时间
2013-3-6
在线时间
132 小时
毕业学校
北京师范大学珠海分校
2#
发表于 2014-7-10 16:07:10 | 只看该作者
KL26是MCU吗??
没用过这个MCU,只用过K60。
给个K60的参考,不知道一不一样。
你查下你的程序,进中断后清除中断标志位有没有错。
K60中是一个引脚对应一个标志位的,不知道你的KL26是不是这样。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-30 13:25 , Processed in 0.083266 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表