📄 rotation_sense.c
字号:
/*********************************************************************
(c) copyright Freescale Semiconductor Ltd. 2006
ALL RIGHTS RESERVED
*********************************************************************
*********************************************************************
File: Rotation_sense.c
Description: Photo rotation Algorithm
Date: July 2007
Author: Vincent Ko
Condition:
1.5g selection
CPU Bus = no specific requirement
Interrupt period = no specific requirement
********************************************************************/
#include "rotation_sense.h"
#include <stdlib.h>
typedef unsigned char UINT8; //!<unsigned 8 bit definition
typedef unsigned int UINT16; //!<unsigned 16 bit definition
typedef unsigned long UINT32; //!<unsigned 32 bit definition
typedef signed char INT8; //!<signed 8 bit definition
typedef int INT16; //!<signed 16 bit definition
typedef long int INT32; //!<signed 32 bit definition
#define ONE_G 63
#define SIN30 30 // 30 degree
#define NEG_SIN30 -30 // -30 degree
#define TRACKINGDELAY 12
typedef struct {
ORIENTATION gReportOri,gPendingOri;
UINT8 gTime;
} RotVar;
RotVar *__far gRotPtr;
#define ReportOri gRotPtr->gReportOri
#define PendingOri gRotPtr->gPendingOri
#define Time gRotPtr->gTime
void rotation_init(void *__far ptr) {
gRotPtr = ptr;
ReportOri = FLAT;
PendingOri = FLAT;
Time = TRACKINGDELAY;
}
ORIENTATION rotation_sense (signed char x, signed char y, signed char z) {
ORIENTATION ThisOri;
if ((x>SIN30)&&((UINT8)abs(y)<SIN30)) ThisOri = XUP;
else if ((x<NEG_SIN30)&&((UINT8)abs(y)<SIN30)) ThisOri = XDOWN;
else if (((UINT8)abs(x)<SIN30)&&(y>SIN30)) ThisOri = YUP;
else if (((UINT8)abs(x)<SIN30)&&(y<NEG_SIN30)) ThisOri = YDOWN;
else ThisOri = FLAT;
if ((ThisOri!=ReportOri)&&(Time==TRACKINGDELAY)) PendingOri = ThisOri;
if (ThisOri==PendingOri) {
Time--;
} else {
Time = TRACKINGDELAY;
}
if (!Time) {
ReportOri = PendingOri;
Time = TRACKINGDELAY;
}
return ReportOri;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -