智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2169|回复: 3
打印 上一主题 下一主题

龙邱CCD移植蓝宙程序

[复制链接]

9

主题

128

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1619
威望
799
贡献
516
兑换币
518
注册时间
2013-1-17
在线时间
152 小时
跳转到指定楼层
1#
发表于 2015-4-12 12:26:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
10贡献
程序移植后,中断总是只进一次,但标志位有清除过,我不知道是什么原因,请求移植成功的同学帮看看

回复

使用道具 举报

9

主题

128

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1619
威望
799
贡献
516
兑换币
518
注册时间
2013-1-17
在线时间
152 小时
2#
 楼主| 发表于 2015-4-12 12:27:25 | 只看该作者
这是主程序
void main()
{
   volatile u8 i;
   u8 send_data_cnt = 0;
   u8 *pixel_pt;  
   WatchdogDisable();  //看门狗
    VECTableInit();
  DisableInterrupts;                             //禁止总中断
   
  /*********************************************************
  初始化程序
  *********************************************************/
   //自行添加代码

   UART_Init(PERIPH_SYS_CLK, 9600, UART1);                   //初始化UART1,输出脚PTC4,输入脚PTC3,串口频率 9600

  //  adc_init(ADC1, AD6a) ;
   
     Timer1_Init() ;                               //初始化PIT1,中断周期为0.2ms
   
    CCD_init() ;

   
    pixel_pt = Pixel;
    for(i=0; i<128+10; i++) {
      *pixel_pt++ = 0;}
  
   EnableInterrupts;                 //开总中断  
   EnableTimer1() ;
   
   /******************************************
    执行程序
    ******************************************/
    while(1)
    {
      
        if(TIME1flag_20ms == 1)//20ms一次中断
        {
         
          TIME1flag_20ms = 0 ;
          /* Sampling CCD data */
          ImageCapture(Pixel);
   
          /* Calculate Integration Time */
          CalculateIntegrationTime();
   
          /* Send data to CCDView every 100ms */
          if(++send_data_cnt >= 5)
          {
            send_data_cnt = 0;
            SendImageData(Pixel);
            
          }
        }

    }

}
回复

使用道具 举报

9

主题

128

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1619
威望
799
贡献
516
兑换币
518
注册时间
2013-1-17
在线时间
152 小时
3#
 楼主| 发表于 2015-4-12 12:28:13 | 只看该作者
中断程序
extern u8 IntegrationTime ;
extern void StartIntegration(void);
extern unsigned char IntegrationTime;
u8 TIME1flag_20ms   = 0 ;

void Timer1_isr(void)
{
  static unsigned char TimerCnt20ms = 0;
  u8 integration_piont;
  int i=0;
  
  TimerCnt20ms++;

   /* 根据曝光时间计算20ms周期内的曝光点*/
  integration_piont = 20 - IntegrationTime;
  if(integration_piont >= 2)
  {      /* 曝光时间小于2则不进行再曝光 */
     if(integration_piont == TimerCnt20ms*0.2)
     StartIntegration();          ///曝光开始
  }

  if(TimerCnt20ms >= 100)
  {
    TimerCnt20ms = 0;
    TIME1flag_20ms = 1;
  }
PIT_TFLG1 |= PIT_TFLG_TIF_MASK;//清中断标志位
PIT_MCR=0;

i=1-i;
Gpio_set(PORT_A, 14, i);   
   
}   
回复

使用道具 举报

10

主题

1514

帖子

0

精华

金牌会员

智能车,首选泰庆

Rank: 6Rank: 6

积分
1715

活跃会员奖章在线王奖章

QQ
威望
427
贡献
400
兑换币
497
注册时间
2014-11-4
在线时间
444 小时
4#
发表于 2015-4-13 08:37:15 | 只看该作者
贴这样的代码 别人不好分析的。CCD都是差不多的 最多是带运放 不带 运放。内部都是TSL1401,只要这个例程适合一款CCD,那么引脚只要没设置错误,其他CCD也可以的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 02:19 , Processed in 0.049573 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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