智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1916|回复: 7
打印 上一主题 下一主题

摄像头时序乱的问题

[复制链接]

2

主题

7

帖子

0

精华

注册会员

Rank: 2

积分
85
QQ
威望
57
贡献
12
兑换币
18
注册时间
2016-7-10
在线时间
8 小时
毕业学校
厦门大学
跳转到指定楼层
1#
发表于 2016-9-25 17:32:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
12贡献
已经确定了行场中断和DMA中断的优先级,DMA是优先级最高,其次是场中断,再是行中断,但是出现的问题就是最远处的一行数据出现在最近一行上了
这是上位机上的一幅每一行所有的数据都用一个特定的值,本来应该是一条直线,而不该有断层的,这应该是错位了,有什么情况容易导致这种情况,求大神帮忙。。。。

附件: 您需要 登录 才可以下载或查看,没有帐号?注册
回复

使用道具 举报

2

主题

7

帖子

0

精华

注册会员

Rank: 2

积分
85
QQ
威望
57
贡献
12
兑换币
18
注册时间
2016-7-10
在线时间
8 小时
毕业学校
厦门大学
2#
 楼主| 发表于 2016-9-25 19:14:35 | 只看该作者
void PORTA_IRQHandler(void)//场中断
{
        GPIO_ClearITPendingBit(CAMERA_VSYNC_PORT,CAMERA_VSYNC_PIN);
               
                 //有效行,总行数清0
                        CAMERADev.HREFCnt = 0;
                        CAMERADev.HREFITCnt = 0;
//           PORTA->ISFR|=PORT_ISFR_ISF_MASK; //清除场中断标志位
          NVIC_EnableIRQ(PORTD_IRQn);//开启行中断
}

void PORTD_IRQHandler(void)//行中断
{       
        uint8_t i = 0;
        GPIO_ClearITPendingBit(CAMERA_HREF_PORT,CAMERA_HREF_PIN);
         //行计数
                if(CAMERADev.HREFITCnt==*(Choose_Hang+count_hang))//需要的行
        {

                 DMA_SetEnableReq (DMA_CH0,ENABLE);//设置DMA模块请求,开启传输
                        for(i=0;i<CCD_IMAGE_W;i++)
                        {
                *(*(Pixels+CAMERADev.HREFCnt)+i)=*(DMABuffer+(*(Choose_Lie+i)));//200         //*4这个参数很重要 决定图像宽度       //数据没有倒回来
                               
                        }
    count_hang++;
                CAMERADev.HREFCnt++;//行计数有效值
               
}       
        //当行数足够时关闭行中断
                                if( CAMERADev.HREFITCnt>=*(Choose_Hang + 69))
{
        count_hang=0;

  TransferFlag = 1;//完成一场的传输的标志
        NVIC_DisableIRQ(PORTD_IRQn);
}
        CAMERADev.HREFITCnt++;//
//        PORTD->ISFR|=PORT_ISFR_ISF_MASK; //清除中断标志位
}
void DMA0_IRQHandler(void)
{
       
        for(E_count_hang = 0;E_count_hang< 200;E_count_hang ++)
        {
                if(*(DMABuffer+(*(Choose_Lie+E_count_hang)))>= 128)
                        {
                        *(DMABuffer+(*(Choose_Lie+E_count_hang)))=1;
                  }
        else
                   {
                        *(DMABuffer+(*(Choose_Lie+E_count_hang)))=0;
             }
                       
        }
        DMA0->TCD[DMA_CH0].DADDR = (uint32_t)DMABuffer;                        //
        DMA_ClearITPendingBit(DMA0,DMA_IT_MAJOR,DMA_CH0);//清除中断标志位
}
回复

使用道具 举报

2

主题

7

帖子

0

精华

注册会员

Rank: 2

积分
85
QQ
威望
57
贡献
12
兑换币
18
注册时间
2016-7-10
在线时间
8 小时
毕业学校
厦门大学
3#
 楼主| 发表于 2016-9-25 19:15:38 | 只看该作者
这是摄像头中断部分
回复

使用道具 举报

6

主题

104

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6120
QQ
威望
3010
贡献
1930
兑换币
2004
注册时间
2014-11-12
在线时间
590 小时
4#
发表于 2016-9-25 20:24:07 | 只看该作者
你用的什么上位机
回复

使用道具 举报

6

主题

104

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6120
QQ
威望
3010
贡献
1930
兑换币
2004
注册时间
2014-11-12
在线时间
590 小时
5#
发表于 2016-9-25 20:26:01 | 只看该作者
有些是因为上位机显示有问题,山外多功能助手显示时,列数有特殊要求,是个bug
回复

使用道具 举报

2

主题

7

帖子

0

精华

注册会员

Rank: 2

积分
85
QQ
威望
57
贡献
12
兑换币
18
注册时间
2016-7-10
在线时间
8 小时
毕业学校
厦门大学
6#
 楼主| 发表于 2016-9-25 20:41:04 | 只看该作者
我们学长自己编的,是可以使用的
回复

使用道具 举报

2

主题

7

帖子

0

精华

注册会员

Rank: 2

积分
85
QQ
威望
57
贡献
12
兑换币
18
注册时间
2016-7-10
在线时间
8 小时
毕业学校
厦门大学
7#
 楼主| 发表于 2016-9-25 21:09:48 | 只看该作者

我们学长自己编的上位机
回复

使用道具 举报

2

主题

7

帖子

0

精华

注册会员

Rank: 2

积分
85
QQ
威望
57
贡献
12
兑换币
18
注册时间
2016-7-10
在线时间
8 小时
毕业学校
厦门大学
8#
 楼主| 发表于 2016-9-26 23:19:11 | 只看该作者
东方斗魂 发表于 2016-9-25 20:26
有些是因为上位机显示有问题,山外多功能助手显示时,列数有特殊要求,是个bug

不是的,同学也在使用,应该是我自己不知道哪里写错了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-6 07:42 , Processed in 0.230983 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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