智能车制作

标题: 龙邱CCD移植蓝宙程序 [打印本页]

作者: 飘渺孤鸿~    时间: 2015-4-12 12:26
标题: 龙邱CCD移植蓝宙程序
程序移植后,中断总是只进一次,但标志位有清除过,我不知道是什么原因,请求移植成功的同学帮看看
作者: 飘渺孤鸿~    时间: 2015-4-12 12:27
这是主程序
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);
            
          }
        }

    }

}
作者: 飘渺孤鸿~    时间: 2015-4-12 12:28
中断程序
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);   
   
}   

作者: 泰庆电子    时间: 2015-4-13 08:37
贴这样的代码 别人不好分析的。CCD都是差不多的 最多是带运放 不带 运放。内部都是TSL1401,只要这个例程适合一款CCD,那么引脚只要没设置错误,其他CCD也可以的。




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