智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 7085|回复: 18
打印 上一主题 下一主题

为什么摄像头7620采集的数据串口调试后全为零呢?ov7620的摄像头采集回来的数据0和1组

  [复制链接]

15

主题

83

帖子

0

精华

高级会员

Rank: 4

积分
594
威望
390
贡献
88
兑换币
37
注册时间
2012-7-28
在线时间
58 小时
跳转到指定楼层
1#
发表于 2012-11-6 17:24:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为什么摄像头7620采集的数据串口调试后全为零呢?ov7620的摄像头采集回来的数据0和1组成的图像有时都是0有时都是1,请问有没有人知道为什么呀?是时序不对嘛?

#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
#include"mc9s12g128.h"
#include"INIT.h"
#define ROW 40 //数字摄像头所采集的二维数组行数
#define COLUMN 120 //数字摄像头所采集的二维数组列数
#define ROW_START 17 //数字摄像头二维数组行开始行值
#define ROW_MAX 200 //数字摄像头所采集的二维数组行最大值
#define THRESHOLD 0x20
unsigned char SampleFlag=0; //奇偶场标记
unsigned int Line; //行中断计数变量
unsigned int hang;
unsigned int m=0; //换行变量
unsigned char Buffer[ROW][COLUMN]={0}; //所采集的图像二维数组

unsigned int Get_Image[]={
17,19,21,23,25,28,31,34,37,40,43,46,49,53,57,
61,65,69,73,77,81,85,89,94,99,105,111,117,123,
129,135,141,147,153,159,166,173,180,187
}; //定每场采哪几行。
//////-------------延时函数------------------------------------------------
void delays(long m){
while(m--);
}
void delay1ms(unsigned z) {
static int x,y;
for(x=z; x>0;x--)
for(y=8010;y>0; y--);
}
void delay1us(unsigned z) {
static int x,y;
for(x=z; x>0; x--)
for(y=8; y>0; y--);
}
//-------------------------------------------------------------------------
void SCI0_Tranmit(void) {
byte i, temp;
temp = SCI0SR1;
SCI0DRH = 0; //清零
for(i=0; i<COLUMN; i++)
{
if(Buffer[m]>0x20 && Buffer[m][i+1]>0x20 && Buffer[m][i-1]>0x20)
// SCI_Tx(255);
SCI_Tx('0');
else
SCI_Tx('1'); //黑线
// SCI_Tx(0x31);
}

SCI_Tx(0x0D); //回车符
SCI_Tx(0X0A);//换行符
}


void main(void) {
GPIO_Init();
SetBusCLK_nM(48);
IOC_Init();
SCI_Init();
EnableInterrupts;
for(;;) {
// SCI0_Tranmit();
_FEED_COP();
}

}
/*************************************************************/
/* 行中断处理函数 */
/*************************************************************/
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 8 PT0_Interrupt(){
unsigned char i = 0;
TFLG1_C0F=1; //行中断标志位清除,以便于下次行中断进行
Line++; //行中断计数变量

if ( SampleFlag == 0 || Line<ROW_START || Line>ROW_MAX )
{
return; //不是要采集图像的有效行,返回
}
if( Line == Get_Image[hang]) {
delays(1);//通常行消隐在每一场的钱4.2us内
for(i=0; i<120; i++) {
Buffer[m]=PORTA;_asm();

}
SCI0_Tranmit();
hang++;
m++;
}

}
/*************************************************************/
/* 场中断处理函数 */
/*************************************************************/
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 9 PT1_Interrupt()
{
TFLG1_C1F = 1; //场中断清楚,以便于下次的场中断的正常进行
TFLG1_C0F = 1; //行中断清除,以便于开始采集图像数据
m = 0; //行中间变量清零,以便于开始从把采集的图像放到数组的第一行
Line = 0; //行中断临时变量清零
hang = 0; //行临时变量清除
SampleFlag =~ SampleFlag; //场中断标记取反,这样只采集奇数场的图像
}



53

主题

641

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5159

优秀会员奖章活跃会员奖章论坛骨干奖章论坛元老奖章在线王奖章

威望
2314
贡献
1085
兑换币
996
注册时间
2012-8-8
在线时间
880 小时
毕业学校
dfzx
2#
发表于 2012-11-6 22:55:42 | 只看该作者
我的是全部0,偶尔F,
回复 支持 反对

使用道具 举报

23

主题

207

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2762
QQ
威望
980
贡献
344
兑换币
29
注册时间
2011-8-27
在线时间
719 小时
3#
发表于 2012-11-7 11:03:51 | 只看该作者
采集到消隐区了
回复 支持 反对

使用道具 举报

53

主题

641

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5159

优秀会员奖章活跃会员奖章论坛骨干奖章论坛元老奖章在线王奖章

威望
2314
贡献
1085
兑换币
996
注册时间
2012-8-8
在线时间
880 小时
毕业学校
dfzx
4#
发表于 2012-11-13 22:21:03 | 只看该作者
楼主问题解决了没
回复 支持 反对

使用道具 举报

53

主题

641

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5159

优秀会员奖章活跃会员奖章论坛骨干奖章论坛元老奖章在线王奖章

威望
2314
贡献
1085
兑换币
996
注册时间
2012-8-8
在线时间
880 小时
毕业学校
dfzx
5#
发表于 2012-11-13 22:22:30 | 只看该作者
zhangwenqiang 发表于 2012-11-7 11:03
采集到消隐区了

大侠,这个该怎么解决呢??我也遇到同样的问题,纠结了好久!!!
回复 支持 反对

使用道具 举报

11

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
758
威望
396
贡献
142
兑换币
202
注册时间
2012-11-14
在线时间
110 小时
6#
发表于 2012-12-4 16:04:22 | 只看该作者
zhangwenqiang 发表于 2012-11-7 11:03
采集到消隐区了

我想问下采集到消隐区是什么意思 怎么解决 谢谢了
回复 支持 反对

使用道具 举报

29

主题

637

帖子

0

精华

常驻嘉宾

我是孤独的赛车手 车手是不需要女人的

Rank: 8Rank: 8

积分
3136
威望
1664
贡献
630
兑换币
621
注册时间
2011-4-16
在线时间
421 小时
7#
发表于 2012-12-5 01:12:29 | 只看该作者
早安,徐威 发表于 2012-12-4 16:04
我想问下采集到消隐区是什么意思 怎么解决 谢谢了

看到你在摄像头帖子里很活跃啊
假如有一个320x240的摄像头,所谓消隐区,就是在两个行中断信号之间,这一行320个点并没有填充满所有时间,而是在行中断开始后有一个小延迟,才开始输出第一个像素信号,最后一个像素信号完毕后,又过一会才到下一个行中断,这一前一后就是消隐区
回复 支持 反对

使用道具 举报

11

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
758
威望
396
贡献
142
兑换币
202
注册时间
2012-11-14
在线时间
110 小时
8#
发表于 2012-12-6 16:53:51 | 只看该作者
melon_1 发表于 2012-11-6 22:55
我的是全部0,偶尔F,

他们都说是波特率的问题 我还在挣扎
回复 支持 反对

使用道具 举报

11

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
758
威望
396
贡献
142
兑换币
202
注册时间
2012-11-14
在线时间
110 小时
9#
发表于 2012-12-6 16:54:34 | 只看该作者
zhangwenqiang 发表于 2012-11-7 11:03
采集到消隐区了

那怎么避免采集到消隐区?
回复 支持 反对

使用道具 举报

11

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
758
威望
396
贡献
142
兑换币
202
注册时间
2012-11-14
在线时间
110 小时
10#
发表于 2012-12-6 16:55:35 | 只看该作者
fmadot 发表于 2012-12-5 01:12
看到你在摄像头帖子里很活跃啊
假如有一个320x240的摄像头,所谓消隐区,就是在两个行中断信号之间,这一 ...

了然 谢谢啦 这跟硬件有木有关系?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 17:55 , Processed in 0.068252 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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