-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsensor-interface.h
More file actions
99 lines (70 loc) · 2.88 KB
/
Copy pathsensor-interface.h
File metadata and controls
99 lines (70 loc) · 2.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#ifndef __SENSOR_INTERFACE_H
#define __SENSOR_INTERFACE_H
//Defines for set reset pin
#define MAG_SR_PIN BIT4
#define MAG_SR_OUT P8OUT
#define MAG_SR_DIR P8DIR
#define MAG_SR_SEL P8SEL
#define MAG_SR_REN P8REN
//sensor read event
#define SENS_EV_READ 0x0001
#define MAG_A_CH LTC24xx_CH_1
#define MAG_B_CH LTC24xx_CH_0
//#define MAG_ADC_GAIN LTC24xx_GAIN64
//#define MAG_ADC_GAIN LTC24xx_GAIN128
//gain of magnetomitor amplifier
//#define AMP_GAIN (2.49e6/5.1e3) // V/V0
#define AMP_GAIN (64) // V/V
//#define AMP_GAIN (128) // V/V
//#define AMP_GAIN (5.11e6/5.1e3) // V/V
//sensitivity of magnetomitor
#define MAG_SENS (1e-3) // mV/V/Gauss
//error codes for sensor functions
enum{SENS_ERR_SETUP,SENS_ERR_CONV_READ,SENS_ERR_BAD_GAIN,SENS_ERR_INSUFFICIENT_DATA} ;
//index: 0 1 2 3 4 5
//board: X+ X- Y+ Y- Z+ Z-
//a-axis: Y+ Y- X- X+ Y- Y+
//b-axis: Z+ Z+ Z+ Z+ X- X+
//flags for magFLags
#define MAG_FLAGS_X0 (1<<(2*2+0)) //Y+ board a-axis
#define MAG_FLAGS_X1 (1<<(2*3+0)) //Y- board a-axis
#define MAG_FLAGS_X2 (1<<(2*4+1)) //Z+ board b-axis
#define MAG_FLAGS_X3 (1<<(2*5+1)) //Z- board b-axis
#define MAG_FLAGS_X (MAG_FLAGS_X0|MAG_FLAGS_X1|MAG_FLAGS_X2|MAG_FLAGS_X3)
#define MAG_FLAGS_Y0 (1<<(2*0+0)) //X+ board a-axis
#define MAG_FLAGS_Y1 (1<<(2*1+0)) //X- board a-axis
#define MAG_FLAGS_Y2 (1<<(2*4+0)) //Z+ board a-axis
#define MAG_FLAGS_Y3 (1<<(2*5+0)) //Z- board a-axis
#define MAG_FLAGS_Y (MAG_FLAGS_Y0|MAG_FLAGS_Y1|MAG_FLAGS_Y2|MAG_FLAGS_Y3)
#define MAG_FLAGS_Z0 (1<<(2*0+1)) //X+ board b-axis
#define MAG_FLAGS_Z1 (1<<(2*1+1)) //X- board b-axis
#define MAG_FLAGS_Z2 (1<<(2*2+1)) //Y+ board b-axis
#define MAG_FLAGS_Z3 (1<<(2*3+1)) //Y- board b-axis
#define MAG_FLAGS_Z (MAG_FLAGS_Z0|MAG_FLAGS_Z1|MAG_FLAGS_Z2|MAG_FLAGS_Z3)
//magnetometer point
typedef union{
struct {
short a,b;
}c;
short elm[2];
} MAG_POINT;
//Interrupt timing for magnetometer
typedef struct{
unsigned short T; //period
unsigned short n; //count
}MAG_TIME;
//TESTING: trigger a sensor read
void trigger_read(void);
void ACDS_sensor_interface(void *p);
void mag_init(void);
float ADCtoGauss(long adc);
short do_conversion(void);
extern MAG_POINT magMem[6];
extern unsigned short magFlags;
void run_sensors(unsigned short time,short count);
void stop_sensors(void);
void sensors_single_sample(void);
short single_sample(unsigned short addr,short *dest);
extern unsigned short mag_ADC_gain;
extern unsigned char mag_tx_addr;
#endif