You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

180 lines
4.2 KiB

1 year ago
////////////////////////////////////////////////////////////////////////////
///@copyright Copyright (c) 2018, 传控科技 All rights reserved.
///-------------------------------------------------------------------------
/// @file bsp_gc6133.c.c
/// @brief bsp @ driver config
///-------------------------------------------------------------------------
/// @version 1.0
/// @author CC
/// @date 20180331
/// @note cc_AS_stc02
///-------------------------------------------------------------------------
/// @version 1.2
/// @author CC
/// @date 20180703
/// @note cc_AS_stc02
//////////////////////////////////////////////////////////////////////////////
#include "bsp_cam_isr.h"
#ifdef doc_98989
vs /```24.8ms````\_______________________________..1.16s..._____________________________________________/```````````\__________
hs /\/\_2.14MS_/\____/\____/\____ ...... __/\____/\____/\__480个__/\____/\____/\____/\/\
hs /``\________________________hs______________________/``\
pclk |||||||||||||||||||||||||||||||||||||||||||||||640
#endif ///doc_98989
void L0_VSYNCS_Isr(void) D_SERVE_VS
{////找到一帧数据的开头:第一行
ts_task_GC032a.HS_max = ts_clk.hs_n;
if(ts_task_GC032a.m > D_480_div )
{
ts_task_GC032a.m = 0;
ts_task_GC032a.vs_ok = 1;
}else
{
ts_task_GC032a.m ++;
}
ts_task_GC032a.VS_max ++;
ts_clk.hs_n = 0;
D_HSYNCS_open();
}
void L0_HSYNCS_Isr(void) D_SERVE_HS/// using 1
{///hs 下沿有效
//// hs信号的计数在vs有效的时候清零,这样usHs_count=D_row_get就代表
ET0 = 0;
ts_clk.hs_n ++;
ts_task_GC032a.hs_ok = 1;
ts_task_GC032a.pclk_max = ts_clk.pclk_n;
D_LED1_REV();//////// if(0)////
D_PCLK_open();
ts_clk.pclk_n = 0;
ET0 = 1;
}
//// 读取不为0x80的数据
//// 放入s_task_GC032A.buf
////D_pclk_per_hs 数量满足后 s_task_GC032A.status = 1;
void l0_PCLK_Isr(void) D_SERVE_CLK /// using 1
{///PCLK
//D_LED2_REV();
D_LED2_ON();
/// DR_Dat = P2;
/// if(DR_Dat != 0X80)//////////
{
///ts_task_GC032a.buf[0][ts_task_GC032a.pclk_n] = DR_Dat;///
ts_task_GC032a.buf[0][ts_clk.pclk_n] = P2;
ts_clk.pclk_n++;//!
if(P37)
{
D_PCLK_close();
}
}
D_LED2_OFF();
/// ts_task_GC032a.pclk_n ++;
}
void L0_cam_INT_init(void)
{
///D_VSYNCS_open();
/// D_HSYNCS_open();//BITN_1(INT_CLKO, INT_EX2);//使能INT2中断
D_HSYNCS_close();
D_PCLK_init();
}
#if 0
void L0_HSYNCS_Isr(void) D_SERVE_HS/// using 1
{///hs 下沿有效
//// hs信号的计数在vs有效的时候清零,这样usHs_count=D_row_get就代表
///EA = 0;
ET0 = 0;
/// ts_task_GC032a.HS[DR_Hs_count] = ts_task_GC032a.pclk_n;
/// ts_task_GC032a.HS[DR_Hs_count] = DR_Hs_count;//
/// ts_task_GC032a.pclk_n = 0;
DR_Hs_count ++;
ts_task_GC032a.vs_ok = 1;
ts_task_GC032a.pclk_max = ts_task_GC032a.pclk_n;
D_LED1_REV();//////// if(0)////
D_PCLK_open();
/// DR_pclk_n = 0;
ET0 = 1;
/// EA = 1;
}
//// 读取不为0x80的数据
//// 放入s_task_GC032A.buf
////D_pclk_per_hs 数量满足后 s_task_GC032A.status = 1;
void l0_PCLK_Isr(void) D_SERVE_CLK /// using 1
{///PCLK
D_LED2_REV();
///DR_Dat = P2;
/////if(DR_Dat != 0X80)
{
///ts_task_GC032a.buf[0][DR_pclk_n] = DR_Dat;
/// ts_task_GC032a.buf[0][DR_pclk_n] = P2;
ts_task_GC032a.buf[0][ts_task_GC032a.pclk_n] = P2;
//// DR_pclk_n++;//
}
ts_task_GC032a.pclk_n ++;
}
void L0_HSYNCS_Isr(void) D_SERVE_HS/// using 1
{///hs 下沿有效
//// hs信号的计数在vs有效的时候清零,这样usHs_count=D_row_get就代表
///EA = 0;
ET0 = 0;
/// ts_task_GC032a.HS[DR_Hs_count] = ts_task_GC032a.pclk_n;
/// ts_task_GC032a.HS[DR_Hs_count] = DR_Hs_count;//
/// ts_task_GC032a.pclk_n = 0;
//
DR_Hs_count ++;
ts_task_GC032a.vs_ok = 1;
D_LED1_REV();//////// if(0)////
//// 当前一帧画面里面的第D_row_get个hs,也就是一个画面中的第几行数据
if(DR_Hs_count == D_row_get)
{///D_P33_REV();
DR_pclk_n = 0;
D_PCLK_open();
ET0 = 0; //add by cc
}else if(DR_Hs_count == (1+D_row_get))
{
D_PCLK_close();
ET0 = 1;
ts_task_GC032a.status = 1;
ts_task_GC032a.pclk_max = DR_pclk_n;
}else
{
ET0 = 1;
}
/// EA = 1;
}
#endif