TI中文支持网
TI专业的中文技术问题搜集分享网站

上报摄像头数据时单片机进入faultISR

MCU是TM4C123GXL launchpad, 由于速度不够, 采集数据时, 先采集下来存到 img 二维数组里, 然后暂停中断开始上报数据, 再开中断。

但是每次发送到img[25][47]就会出错, 每次都在同一个地方。 SRAM大小应该也是够的。

下面是串口部分。

uint16_t i, j;

while(print){          //数据采集结束print就置位
                        MAP_GPIOIntDisable(GPIO_PORTC_BASE, Pin_PCLK|Pin_HREF|Pin_VSYN);//暂停 interrupt
                        UARTCharPut(UART0_BASE, 0xff);//数据头
                        for(i=0; i<240; i+=2){
                                for(j=0; j<640; j+=4){
                                        if(img[j] == 0xff){
                                                img[j] = 0xfe;//防止误判为数据头
                                        }
                                        if((i%2==0)&&(j%4==0)){
                                                MAP_UARTCharPut(UART0_BASE, img[i/2][j/4]);//img大小是[120][160],隔2行隔4列存储
                                                SysCtlDelay(3);//怕是传太快导致的, 加个延时
                                        }
                                }
                                //UARTCharPut(UART0_BASE, 0xff);
                                SysCtlDelay(3);//打个断点, 看哪里出错了
                        }
                        print = 0;//标志位 打印结束 中断继续
                        Delay_us(1);
                        MAP_GPIOIntEnable(GPIO_PORTC_BASE, Pin_PCLK|Pin_HREF|Pin_VSYN);//开中断
                        break;
                }

现在错误定位在i=50 j=148的地方, 即img[25][47], 每次输出到这里就进入faultISR。

我试过在DEBUG的时候, 把i的值设置为51或者52甚至100, 立刻出错。

请问可能是什么原因导致的呢, 为什么每次都在 [25][47] 这里错误?

Michael Sun:

img[25][47]这个数组是局部变量还是全局变量?

看起来很像是堆栈溢出了。楼主把堆栈设大点试试看。

Zhengguan Duan:

回复 Michael Sun:

123gh6pm的SRAM只有32k, 不敢设置太大。 img 是全局变量, 第一次声明在中断处理文件int.c中, 在main.c有 extern img[123][163], 本来只需要120*160, 就是担心越界多申请了一点, 声明时是123*163

Michael Sun:

回复 Zhengguan Duan:

现在用了多少RAM啊,改一下堆栈大小试试,故障现象是否有改变,

yujie liang:

我最近在用tm4c驱动ov7725摄像头,采集的数据是有的,但是用液晶屏显示不对。原先我是用的stm32驱动它可以正常显示,现在只是把代码移植到ccs改用tm4c驱动,就不对了,不知道问题出在哪,所以也不知道如何去解决。

jiahao he:

回复 yujie liang:

试试上位机显示,M4的速度跟不上

yujie liang:

回复 jiahao he:

试过了,乱的。发表

yujie liang:

回复 yujie liang:

我是利用fifo作为缓存器采集的图像

赞(0)
未经允许不得转载:TI中文支持网 » 上报摄像头数据时单片机进入faultISR
分享到: 更多 (0)