⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 af_alg_1.c

📁 dm270 source code
💻 C
字号:
/* Hardware auto-focus control algorithm 1 - global search */

#include <system/uart270.h>

#include <user/af_ctrl.h>

#include <h3a/af_alg_externs.h>

STATUS AFAlg1_FocusCtrlReset();
STATUS AFAlg1_FocusCtrl(int focus_value, int *motor_value);

extern AF_CTRL af_ctrl_2;

AF_CTRL af_ctrl_1;
AF_ALG af_alg_1;

STATUS AFAlg1Init() {

	AFAlg2Init();

	memcpy(&af_ctrl_1, &af_ctrl_2, sizeof(af_ctrl_1));
					
	af_ctrl_1.af_alg			= &af_alg_1;				

	af_alg_1.sharp_calc.reset	= AFAlgSharpCalcReset;
	af_alg_1.sharp_calc.execute = AFAlgSharpCalc;

	af_alg_1.focus_ctrl.reset	= AFAlg1_FocusCtrlReset;
	af_alg_1.focus_ctrl.execute = AFAlg1_FocusCtrl;

	af_alg_1.motor_ctrl.reset	= CCDM_MotorCtrlReset;
	af_alg_1.motor_ctrl.execute = CCDM_MotorCtrl;

	return E_PASS;
}

extern int fmax, count, motor_value_max;

STATUS AFAlg1_FocusCtrlReset() {
	fmax=0;
	count=0;
	motor_value_max=0;
	return E_PASS;
}

STATUS AFAlg1_FocusCtrl(int focus_value, int *motor_value) {
	if(count==0) {
		fmax=focus_value;
		motor_value_max=cur_motor_value;
	}

	count++;
	if(focus_value>fmax) {
		fmax=focus_value;
		motor_value_max=cur_motor_value;
	}

	if(cur_motor_value<MIN_MOTOR_VALUE) {
		*motor_value=0;
		if( (motor_value_max-cur_motor_value) > 0) {
			CCDM_MotorCtrl((motor_value_max-cur_motor_value+16));
			CCDM_MotorCtrl(-16);
			cur_motor_value=motor_value_max;
		}
		#if AF_DEBUG
		sprintf( out_buff, "\r\n Max FV Motor Value = %ld, (FV calc = %ld)\r\n", motor_value_max, fmax);
		UART_sendString( UART0, out_buff);
		#endif
		#if AF_OUT_DATA
		if(dump_data)
			DumpDataToFile();
		#endif
		return E_PASS;
	} else {
		cur_motor_value-=fine_step_size;
		*motor_value=-fine_step_size;
		return E_DEVICE;
	}
}







⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -