智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 10812|回复: 28
打印 上一主题 下一主题

[采集类] CCD模拟摄像头可以采集后,加了奇偶场分工就歇菜了,谁来救救啊!!!

  [复制链接]

5

主题

46

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
9159

论坛元老奖章

威望
258
贡献
8837
兑换币
0
注册时间
2009-5-23
在线时间
32 小时
跳转到指定楼层
1#
发表于 2010-3-7 16:59:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1贡献
改的实在头晕了,或者我思维受困了,请帮忙看看哪里出来问题。
注:外部中断E1接行同步,J口中断接场同步,PORTA口0位接奇偶场,AD转化1口接视频信号。
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */#define  VERTICAL         30                    // 垂直分辨率
#define  HORIZONTAL         16                //水平分辨率
int line_now,catch_line;                      // 现在行数及捕捉后存放的行数
int n,m;                                   //普通循环变量
unsigned int r,l;                              //场行循环变量
int field_ready=0;                                //场开始标志
unsigned char ccd[VERTICAL][HORIZONTAL];               // 像素存储数组
char  txtbuf[16]="";                                   //串行通讯时用字符缓存
const unsigned int Line_catch[30]={26,30,34,38,43,
                               48,53,59,65,71,
                               78,85,92,110,118,
                               126,135,144,153,163,
                               173,183,194,205,216,
                               228,238,250,262,273
};                                                                       //要采集行的行号
//******************************************************     毫秒级延时
void delayms(int ms)
{   
   int ii,jj;
   if (ms<1) ms=1;
   for(ii=0;ii<ms;ii++)
     for(jj=0;jj<3338;jj++);    //40MHz--1ms      
}//******************************************************     串行通信初始化
static void SCI_Init(void)
{
    SCI0CR2=0x2c; //enable Receive Full Interrupt,RX enable,Tx enable
    SCI0BDH=0x00; //busclk  8MHz,19200bps,SCI0BDL=0x1a
    SCI0BDL=0x68; //SCI0BDL=busclk/(16*SCI0BDL)                  
                  //busclk 16MHz, 9600bps,SCI0BDL=0x68                  
}            //******************************************************     AD初始化 1void AD_Init1(void)
{
ATD0CTL1=0x00;       //7:1-外部触发,65:00-8位精度,4:放电,3210:ch
ATD0CTL2=0x40;      //禁止外部触发, 中断禁止  
ATD0CTL3=0x88;       //10001000   转换长度为一
ATD0CTL4=0x01;       //  fATDCLK=fBUS/[2 × (PRS + 1)]   
ATD0CTL5=0x20;       //0单通道连续转换
ATD0DIEN=0x00;       //缓冲区禁止~~;
} //******************************************************        PLL设置
void init_PLL()
{
   REFDV=1;
   SYNR=1;
   while(0==CRGFLG_LOCK);
   CLKSEL=0x80;                 //32Mhz
}
//******************************************************       初始化B口灯和A口输入 void INIT_PORT(void)
{
      DDRB=0XFF;
      PORTB=0X00;
      DDRA=0X00;
}
//******************************************************  主函数
void main(void)
{
  DisableInterrupts;
  
  init_PLL() ;
  SCI_Init();
  IRQCR_IRQEN =1; //中断使能
  IRQCR_IRQE=1;    //下降沿触发
  AD_Init1() ;   
  DDRJ=0X00;
  PPSJ=0X00;     //J口作为中断初始化
  PIEJ=0X80;
  PIFJ=0XFF;
  //PUCR_PUPAE=1;
  INIT_PORT();
  //putstr("\ntest.");   
  EnableInterrupts;  for(;;) { } ;
}
//******************************************************
#pragma CODE_SEG __NEAR_SEG NON_BANKED           
//******************************************************  
void interrupt 6 IRQ_interrupt(void)              //外部中断作为行同步处理函数
{
        if(PORTA_PA0&&field_ready){
         
         if(line_now==Line_catch[r]){
                              
                    for(l=0;l<HORIZONTAL;l++){      
                             while(!ATD0STAT0_SCF);
                             ccd[catch_line][l]=ATD0DR0L;
                    }     
                    catch_line++;  r++;   l=0;
         }
                        
                        
         line_now++;
     
        }
   
}
//******************************************************
void interrupt 24  Field_PJ(void)   //PJ口作为场同步中断处理函数
{
   
    DisableInterrupts;
    field_ready=1;            //关中断
    if(PORTA_PA0==0){
    IRQCR_IRQEN =0; //停止行输入   
         for(m=0;m<VERTICAL;m++){
                                
                 for(n=0;n<HORIZONTAL;n++){      
                       while(!(SCI0SR1&0x80)) ;     
                       SCI0DRL=ccd[m][n];  
                 }  while(!(SCI0SR1&0x80)) ;   SCI0DRL=0;  
         }  while(!(SCI0SR1&0x80)) ;   SCI0DRL=0;  while(!(SCI0SR1&0x80)) ;   SCI0DRL=0;  
    }
   
    PORTB++;
    line_now=0 ;  
    PIEJ=0XFF;
    IRQCR_IRQEN =1; //中断使能
    EnableInterrupts;              //开中断
}

5

主题

46

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
9159

论坛元老奖章

威望
258
贡献
8837
兑换币
0
注册时间
2009-5-23
在线时间
32 小时
2#
 楼主| 发表于 2010-3-7 18:20:08 | 只看该作者
看来不冒泡顶上去都没人看到哦……
回复

使用道具 举报

39

主题

593

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1694
威望
989
贡献
401
兑换币
86
注册时间
2008-12-13
在线时间
152 小时
3#
发表于 2010-3-8 15:49:13 | 只看该作者
看不懂

能简练一点否
回复

使用道具 举报

2

主题

118

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1358
威望
306
贡献
1034
兑换币
8
注册时间
2009-10-14
在线时间
9 小时
4#
发表于 2010-3-8 16:22:19 | 只看该作者
来点注释啊,不然很难看懂!
回复

使用道具 举报

13

主题

55

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1881
威望
282
贡献
1583
兑换币
24
注册时间
2009-5-14
在线时间
8 小时
5#
发表于 2010-3-8 16:43:08 | 只看该作者
就是呀   自己写都比看你的快   还是加点注释好
回复

使用道具 举报

6

主题

70

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1644
QQ
威望
257
贡献
1365
兑换币
0
注册时间
2009-9-16
在线时间
11 小时
6#
发表于 2010-3-8 19:22:02 | 只看该作者
没注释...  咋整?
回复

使用道具 举报

5

主题

46

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
9159

论坛元老奖章

威望
258
贡献
8837
兑换币
0
注册时间
2009-5-23
在线时间
32 小时
7#
 楼主| 发表于 2010-3-9 20:01:19 | 只看该作者
额……注释很全了啊。
另外我重新写了算法,这个问题解决了。有兴趣的话我上传上来。
回复

使用道具 举报

5

主题

46

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
9159

论坛元老奖章

威望
258
贡献
8837
兑换币
0
注册时间
2009-5-23
在线时间
32 小时
8#
 楼主| 发表于 2010-3-9 20:02:58 | 只看该作者
此问题已解决,不过还是放在这里,另外大家有需要我可以把改过后的代码给贴上来。
回复

使用道具 举报

0

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
243
威望
190
贡献
23
兑换币
0
注册时间
2010-3-13
在线时间
15 小时
9#
发表于 2010-3-13 12:06:44 | 只看该作者
摄像头用数字的好还是模拟的好啊
回复

使用道具 举报

4

主题

248

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2267
QQ
威望
447
贡献
1700
兑换币
2
注册时间
2009-3-15
在线时间
60 小时
10#
发表于 2010-3-13 12:40:03 | 只看该作者
回复 9# 一灯师太


    硬件做得好的话肯定是数字好了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 07:15 , Processed in 0.091811 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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