niosii驱动OV7670

参考原子STM32的程序,成功用niosii驱动OV7670并通过ILI9325显示,效果还不错

 

因为摄像头带FIFO,所以程序比较简单,调试时遇到些问题记录下,

整个程序主要就是通过一个外部中断接收VCLK信号,先在quartus里分配一个上升沿触发的输入引脚,在程序中初始化中断时,写代码如下:

int IRQ_initialize(void)
{
    vclk->INTERRUPT_MASK = 1;                   //中断
    vclk->EDGE_CAPTURE=1;
    printf("finish\n");
    return alt_irq_register(VCLK_IRQ,NULL,ISR_Href);
}

沿中断初始化需要加上vclk->EDGE_CAPTURE=1;这一句

数据手册对边沿捕获介绍时有这样一句话

Writing any value to edgecaptureclears all bits in the register.

刚开始没这句中断怎么都注册不成功,另外就是在中断服务函数里记得要清零中断标志位。

 在中断这块耗时很久,主要是刚调试程序时,为了看清楚程序运行到里停了,就在程序很多地方加了printf函数,结果就造成大问题了,程序在中断里无法跳出,到处找资料,终于在百度里看到这一段:

  【2】不能在ISR中调用C标准库的IO函数,因为这些函数将导致系统死锁。需要特别强调的是,不要在ISR中调用printf()函数,除非系统库属性中的stdout映射到工作于非中断模式的设备驱动上或者系统库使能了中断嵌套功能,否则printf()函数可能由于等待永远不可能发生的中断(因为ISR工作于中断背景下,此时的总中断是关闭的,所以在ISR中不可能相应任何中断),而导致系统死锁。可以通过系统库项目添加预处理器 ALTERA_AVALON_JTAG_UART_SMALL迫使JTAG_UART工作于查询模式,从而允许在ISR中调用printf()函数。但是通常不建议这么做,因为printf()函数的执行要消耗很多时间,这样会严重影响系统的中断相应性能。

附上链接http://wenku.baidu.com/link?url=57GAmMzRjVHY1jwxKAJWEjR0mzbNAL8mCF_GG7LELpJlmT1I2LlSiMOn7wRvT5t7mSCjTvZGpwicPA6RRo2oB3asjZpr6ePpho7F2RgDlRu

  中断正常后还是没图像出来,不断修改程序后发现问题了,在刷新液晶时使用程序如下         

       for(i=0;i<76800;i++)
                {
                rdclk->DATA=0;
                rdclk->DATA=1;
                LCD_data8->DATA=indata->DATA;
                LCD_rw->DATA=0;
                LCD_rw->DATA=1;
               
                rdclk->DATA=0;
                rdclk->DATA=1;
                LCD_data8->DATA=indata->DATA;
                LCD_rw->DATA=0;
                LCD_rw->DATA=1;
               
                }

变量i定义为了unsigned long int ,担心I的长度不够,就将i定义为unsigned long long int ,改正之后终于出图像了,可是用printf("%d",sizeof(int))查看长度就是为4,这是为什么呢????

话说nioii性能确实鸡肋,刷新速度才每秒5、6帧左右,上图吧

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值