智能车制作

标题: 为什么摄像头7620采集的数据串口调试后全为零呢?ov7620的摄像头采集回来的数据0和1组 [打印本页]

作者: Roy罗先森    时间: 2012-11-6 17:24
标题: 为什么摄像头7620采集的数据串口调试后全为零呢?ov7620的摄像头采集回来的数据0和1组
为什么摄像头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; //场中断标记取反,这样只采集奇数场的图像
}




作者: melon_1    时间: 2012-11-6 22:55
我的是全部0,偶尔F,
作者: zhangwenqiang    时间: 2012-11-7 11:03
采集到消隐区了
作者: melon_1    时间: 2012-11-13 22:21
楼主问题解决了没
作者: melon_1    时间: 2012-11-13 22:22
zhangwenqiang 发表于 2012-11-7 11:03
采集到消隐区了

大侠,这个该怎么解决呢??我也遇到同样的问题,纠结了好久!!!
作者: 早安,徐威    时间: 2012-12-4 16:04
zhangwenqiang 发表于 2012-11-7 11:03
采集到消隐区了

我想问下采集到消隐区是什么意思 怎么解决 谢谢了

作者: fmadot    时间: 2012-12-5 01:12
早安,徐威 发表于 2012-12-4 16:04
我想问下采集到消隐区是什么意思 怎么解决 谢谢了

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

作者: 早安,徐威    时间: 2012-12-6 16:53
melon_1 发表于 2012-11-6 22:55
我的是全部0,偶尔F,

他们都说是波特率的问题 我还在挣扎

作者: 早安,徐威    时间: 2012-12-6 16:54
zhangwenqiang 发表于 2012-11-7 11:03
采集到消隐区了

那怎么避免采集到消隐区?
作者: 早安,徐威    时间: 2012-12-6 16:55
fmadot 发表于 2012-12-5 01:12
看到你在摄像头帖子里很活跃啊
假如有一个320x240的摄像头,所谓消隐区,就是在两个行中断信号之间,这一 ...

了然 谢谢啦 这跟硬件有木有关系?
作者: jianghao9028    时间: 2013-4-9 19:02
同样问题啊楼主,解决没有呀?求交流。。
作者: jianghao9028    时间: 2013-4-10 22:24
melon_1 发表于 2012-11-6 22:55
我的是全部0,偶尔F,

大神,你的是怎么解决的啊。跪求交流。

作者: melon_1    时间: 2013-4-11 11:12
jianghao9028 发表于 2013-4-10 22:24
大神,你的是怎么解决的啊。跪求交流。

你用的是7620?我发一个淘宝的采集程序给你把,XS128的,

作者: jianghao9028    时间: 2013-4-11 14:22
melon_1 发表于 2013-4-11 11:12
你用的是7620?我发一个淘宝的采集程序给你把,XS128的,

我用的是k60,谢谢啊。

作者: melon_1    时间: 2013-4-11 16:46
jianghao9028 发表于 2013-4-11 14:22
我用的是k60,谢谢啊。

呵呵,我也在学着用K60

作者: jianghao9028    时间: 2013-4-11 19:15
:handshake
作者: 3009    时间: 2013-4-13 08:24
我的程序和你差不多,但是我这连1和0都不显,让他写0他却写06  ,让他写1,他却写67,真心崩溃啊!不知道楼主的问题解决了吗,我的问题楼主遇到过吗,求教
作者: 一心一境14    时间: 2015-1-26 17:28
OV7620怎么二值化啊,,求教
作者: firelvw    时间: 2015-1-30 22:21
给你一个K60的DMA 采集程序吧 希望能帮到你 我还在挣扎128




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2