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.

219 lines
7.3 KiB

4 years 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_debug.h"
#include "bsp_func.h"
#include "bsp_cam_isr.h"
#include "bsp_cam.h"
#include "../msp/uart0.h"
#include "cw63xx.h"
#include "../clib/Clib.h"
#include "../clib/bit.h"
#include "../msp/time.h"
#define D_pclk_div_hs 1 ///D_pclk_per_hs*D_pclk_div_hs < 680
///vs p3.7 int3
///hs p3.6 int2
///pclk p3.2 int0
/// row lineȷ���Ա�ʾһ���� һ�е���˼.��column�������ı�ʾһ�������ġ���
#define D_line_get 10
#define D_row_get2 4
#ifdef doc_98989
vs /```24.8ms````\_______________________________..1.16s..._____________________________________________/```````````\__________
hs /\/\_2.14MS_/\____/\____/\____ ...... __/\____/\____/\__480__/\____/\____/\____/\/\
hs /``\________________________hs______________________/``\
pclk |||||||||||||||||||||||||||||||||||||||||||||||640
Line0 L1 L2 L1 L1 L1 L1 L1 L1 L480
----------------------------------------------------------------------
1 1 1 1 1 1 1 1 1 --- --- 1
2 2 2 2 2 2 2 2 2 --- --- 2
3 3 3 3 3 3 3 3 3 --- --- 3
4 4 4 4 4 4 4 4 4 --- --- 4
5 5 5 5 5 5 5 5 5 --- --- 5
6 6 6 6 6 6 6 6 6 --- --- 6
7 7 7 7 7 7 7 7 7 --- --- 7
8 8 8 8 8 8 8 8 8 --- --- 8
9 9 9 9 9 9 9 9 9 --- --- 9
10 10 10 10 10 10 10 10 10 --- --- 10
11 11 11 11 11 11 11 11 11 --- --- 11
12 12 12 12 12 12 12 12 12 --- --- 12
13 13 13 13 13 13 13 13 13 --- --- 13
14 14 14 14 14 14 14 14 14 --- --- 14
. . . . . . . . . --- --- .
. . . . . . . . . --- --- .
. . . . . . . . . --- --- .
. . . . . . . . . --- --- .
640 640 640 640 640 640 640 640 640 --- --- 640
#endif ///doc_98989
void L0_cam_isr_init(void)
{
IT0 = 1;///int0 �½��ش��� = 0 �����ؾ��ɴ���
/// IT0 = 0;////int0 �½��ش��� = 0 �����ؾ��ɴ���
/// L0_INT0_OPEN();
D_HSYNCS_close();
D_VSYNCS_open();
D_PCLK_close();
}
#if(MODE_CAM_LINE == MODE_CAM)
#if 0
//////////
/////һ֡���ݵĿ�ʼ
void L0_VSYNCS_Isr (void) interrupt D_ISR_int3////�½���
{////�ҵ�һ֡���ݵĿ�ͷ����һ��
L0_INT3_CLEAR();
///s_task_GC032A.usHs_count = 0;
DR_line_n = 0;
/// s_task_GC032A.next_line = D_ready;///������һ�� ����ȷ��֡ͷ�ǵ�һ�У�������///
/// s_task_GC032A.one_line_ok = D_clear;
s_task_GC032A.line_get = D_clear;
s_task_GC032A.vs_ok = D_ready;
//s_task_GC032A.frames ++;
//if(s_task_GC032A.frames > 10)
{/// ʱ������
///s_task_GC032A.frames = 0;
}
D_ledb_OFF();
/// D_leda_ON();
D_HSYNCS_open();
}
/////һ��line row���ݵĿ�ʼ
void L0_HSYNCS_Isr(void) interrupt D_ISR_int2/// using 1 /�½���
{///hs ������Ч
L0_INT2_CLEAR();
//// hs�źŵļ�����vs��Ч��ʱ�����㣬����usHs_count=D_row_get�ʹ���
//// ��ǰһ֡���������ĵ�D_row_get��hs��Ҳ����һ�������еĵڼ�������
///if(D_ready == s_task_GC032A.next_line)
{///D_P33_REV();
//D_leda_OFF();
/// s_task_GC032A.next_line = D_clear;///��Ϊ����һ�����ݵ�ʱ��ԶԶС�ڷ��͵�ʱ��
///������������Ϊ�����߿ɿ���
///�������˺��ɡ�gc032a����������
s_task_GC032A.lines = DR_line_n;////���浱ǰ���кŵ�������,��Ϊ�кű仯���ٶȳ���
////���͵��ٶ�,����"gc032A����"��ʹ�õ�ʱ��DR_line_n �Ѿ��仯��
///0 24 58 94 129 165 200 236 271 307 342 378
D_PCLK_open();
//D_P35_REV() ;
DR_pclk_n = 0;
if(DR_line_n >= D_line_get)
{
s_task_GC032A.line_get = D_ready;
D_HSYNCS_close();D_PCLK_close();
}
}
DR_line_n ++;///��ǰ��������
}
////s_task_GC032A.buf ���ŵ���һ�е�����
//// pclk int0 ÿ�����IJ���
void L0_PCLK_Isr(void) interrupt D_ISR_int0 /// using 10///
{///PCLK
// D_P34_REV();
DR_Dat = P1;
s_task_GC032A.buf[DR_pclk_n] = DR_Dat; // s_task_GC032A.buf[DR_pclk_n] = 0xaa;//P1&0xf0; //s_task_GC032A.buf[s_task_GC032A.usN] = s_task_GC032A.usN;
DR_pclk_n++;// D_P34_REV();
if(DR_pclk_n > D_pclk_per_hs)////һ�е���Ч���ݽ������� ������ D_pclk_per_hs���̶�����
{
D_PCLK_close();
//D_ledb_REV() ;
DR_pclk_n = D_pclk_per_hs; ///fixme
DR_pclk_n = 0;
/// s_task_GC032A.one_line_ok = D_ready;////����gc032a���񡱴�����Ϣ ���Կ�ʼ�������߷�����
D_ledb_ON();
}
}
#endif
#elif(MODE_CAM_FRAME == MODE_CAM)
#elif(MODE_CAM_TEST == MODE_CAM)
/////��������
void L0_VSYNCS_Isr (void) interrupt D_ISR_int3////�½���
{////�ҵ�һ֡���ݵĿ�ͷ����һ��
///s_task_GC032A.usHs_count = 0;
DR_line_n = 0;
s_task_GC032A.next_line = 1;///������һ�� ����ȷ��֡ͷ�ǵ�һ�У�������///
s_task_GC032A.vs_ok = D_ready;
}
/////һ��line row���ݵĿ�ʼ
void L0_HSYNCS_Isr(void) interrupt D_ISR_int2/// using 1 /�½���
{///hs ������Ч
//// hs�źŵļ�����vs��Ч��ʱ�����㣬����usHs_count=D_row_get�ʹ���
//// ��ǰһ֡���������ĵ�D_row_get��hs��Ҳ����һ�������еĵڼ�������
if(s_task_GC032A.next_line)
{///D_P33_REV();
s_task_GC032A.next_line = 0;///��Ϊ����һ�����ݵ�ʱ��ԶԶС�ڷ��͵�ʱ��
///������������Ϊ�����߿ɿ���
///�������˺��ɡ�gc032a����������
s_task_GC032A.lines = DR_line_n;////���浱ǰ���кŵ�������,��Ϊ�кű仯���ٶȳ���
////���͵��ٶ�,����"gc032A����"��ʹ�õ�ʱ��DR_line_n �Ѿ��仯��
///0 24 58 94 129 165 200 236 271 307 342 378
/*****
if(D_line_get == DR_line_n)
{
s_task_GC032A.line_get = 1;
}
******/
D_PCLK_open();///������¼��һ������
DR_pclk_n = 0;
}
DR_line_n ++;///��ǰ��������
}
////s_task_GC032A.buf ���ŵ���һ�е�����
//// pclk int0 ÿ�����IJ���
void L0_PCLK_Isr(void) interrupt D_ISR_int0 //// using 10///
{///PCLK
// D_P34_REV();
//// DR_Dat = P1; s_task_GC032A.buf[DR_pclk_n] = DR_Dat;
s_task_GC032A.buf[DR_pclk_n] = P1;
////s_task_GC032A.buf[DR_pclk_n] = 0xcc;
///s_task_GC032A.buf[DR_pclk_n] = DR_pclk_n;
DR_pclk_n++;// D_P34_REV();
if(DR_pclk_n > D_pclk_per_hs) ////һ�е���Ч���ݽ������� ������ D_pclk_per_hs���̶�����
{
D_PCLK_close();
DR_pclk_n = D_pclk_per_hs; ///fixme
s_task_GC032A.line_ok = 1; ////����gc032a���񡱴�����Ϣ ���Կ�ʼ�������߷�����
}
}
////�յ� next_line ��¼��ǰ�ڼ���lines������ pclk���ɼ����ݵ�buf�У�Ȼ��line_ok
///// send buf, set next_line after send buf over
#endif