5
5
6
6
#include " da217.h"
7
7
8
-
9
- #define FLOAT_TO_INT (x ) ((x) >= 0 ? (int )((x) + 0.5 ) : (int )((x)-0.5 ))
10
-
11
-
12
8
void DA217::da217_write_single_reg (uint8_t reg,uint8_t data)
13
9
{
14
10
da217_write_multiple_reg (reg,&data,1 );
@@ -77,70 +73,24 @@ void DA217::da217_init(int sda,int scl ,uint32_t freq)
77
73
void DA217::da217_poweron (void )
78
74
{
79
75
uint8_t temp;
80
- temp = DA217_PWR_ON |DA217_BANDWIDTH_500HZ |DA217_AUTOSLEEP_EN;
81
- da217_write_single_reg (DA217_REG_MODE_BW,temp);
76
+ temp = DA217_PWR_ON |DA217_BANDWIDTH_500HZ |DA217_AUTOSLEEP_EN;
77
+ da217_write_single_reg (DA217_REG_MODE_BW,temp);
82
78
}
83
79
84
80
void DA217::da217_poweroff (void )
85
81
{
86
82
uint8_t temp;
87
- temp = ~DA217_PWR_ON & (~DA217_AUTOSLEEP_EN);
88
- da217_write_single_reg (DA217_REG_MODE_BW,temp);
83
+ temp = ~DA217_PWR_ON & (~DA217_AUTOSLEEP_EN);
84
+ da217_write_single_reg (DA217_REG_MODE_BW,temp);
89
85
}
90
86
91
- void DA217::da217_start_up_step_detect (bool step_int_en, bool sm_int_en, uint8_t sm_threshold )
87
+ void DA217::da217_start_up_step_detect (void )
92
88
{
93
89
uint8_t temp;
94
90
da217_write_single_reg (DA217_REG_STEP_FILTER,DA217_STEP_FILTER_EN);
95
91
da217_write_single_reg (DA217_REG_RESET_STEP,DA217_RESET_STEP);
96
92
delay (100 );
97
93
da217_write_single_reg (DA217_REG_RESET_STEP,~DA217_RESET_STEP);
98
-
99
- if (step_int_en)
100
- {
101
- temp = da217_read_single_reg (DA217_REG_INT_SET0);
102
- temp |= DA217_STEP_INT_EN;
103
- da217_write_single_reg (DA217_REG_INT_SET0,temp);
104
-
105
- temp = da217_read_single_reg (DA217_REG_INTERRUPT_MAPPING3);
106
- temp |= DA217_INT2_STEP;
107
- da217_write_single_reg (DA217_REG_INTERRUPT_MAPPING3,temp);
108
-
109
- temp = da217_read_single_reg (DA217_REG_INTERRUPT_MAPPING1);
110
- temp &= ~DA217_INT1_STEP;
111
- da217_write_single_reg (DA217_REG_INTERRUPT_MAPPING1,temp);
112
-
113
- }
114
- temp = da217_read_single_reg (DA217_REG_INTERRUPT_MAPPING3);
115
- Serial.printf (" DA217_REG_INTERRUPT_MAPPING3 = %d \r\n " ,temp);
116
- if (sm_int_en)
117
- {
118
- temp = da217_read_single_reg (DA217_REG_INT_SET0);
119
- temp |= DA217_SM_INT_EN;
120
- da217_write_single_reg (DA217_REG_INT_SET0,temp);
121
- da217_write_single_reg (DA217_REG_SM_THRESHOLD, sm_threshold);
122
-
123
-
124
-
125
- temp = da217_read_single_reg (DA217_REG_INTERRUPT_MAPPING1);
126
- temp |= DA217_INT1_SM;
127
- da217_write_single_reg (DA217_REG_INTERRUPT_MAPPING1,temp);
128
-
129
- temp = da217_read_single_reg (DA217_REG_INTERRUPT_MAPPING3);
130
- temp &= ~DA217_INT2_SM;
131
- Serial.printf (" DA217_INT2_SM = %u \r\n " ,temp);
132
-
133
- da217_write_single_reg (DA217_REG_INTERRUPT_MAPPING3,temp);
134
- }
135
- da217_write_single_reg (DA217_REG_INT_LATCH,DA217_INT_LATCH_VALUE);
136
-
137
-
138
- temp = da217_read_single_reg (DA217_REG_INTERRUPT_MAPPING3);
139
- Serial.printf (" DA217_REG_INTERRUPT_MAPPING3 = %d \r\n " ,temp);
140
- temp = da217_read_single_reg (DA217_REG_INTERRUPT_MAPPING1);
141
- Serial.printf (" DA217_REG_INTERRUPT_MAPPING1 = %d \r\n " ,temp);
142
- temp = da217_read_single_reg (DA217_REG_INT_SET0);
143
- Serial.printf (" DA217_REG_INT_SET0 = %d \r\n " ,temp);
144
94
}
145
95
146
96
@@ -159,41 +109,39 @@ void DA217::da217_stop_step_detect(void)
159
109
uint16_t DA217::da217_read_steps (void )
160
110
{
161
111
uint16_t step_num = 0 ;
162
- step_num = da217_read_single_reg (DA217_REG_STEPS_MSB) << 8 ; // Step Counter
163
- step_num += da217_read_single_reg (DA217_REG_STEPS_LSB); // Step Counter
164
- return step_num;
112
+ step_num = da217_read_single_reg (DA217_REG_STEPS_MSB) << 8 ; // Step Counter
113
+ step_num += da217_read_single_reg (DA217_REG_STEPS_LSB); // Step Counter
114
+ return step_num;
165
115
}
166
116
167
117
da217_step_status_t DA217::da217_read_step_status (void )
168
118
{
169
119
uint8_t step_status,temp;
170
- temp = da217_read_single_reg (DA217_ORIENT_STATUS) ; // Step Counter
171
- step_status = temp & DA217_STEP_STATUS;
172
- return (da217_step_status_t )step_status;
120
+ temp = da217_read_single_reg (DA217_ORIENT_STATUS) ; // Step Counter
121
+ step_status = temp & DA217_STEP_STATUS;
122
+ return (da217_step_status_t )step_status;
173
123
}
174
124
175
125
176
126
177
127
void DA217::da217_enable_watchdog (void )
178
128
{
179
129
uint8_t temp;
180
- temp = da217_read_single_reg (DA217_REG_RESOLUTION_RANGE);
130
+ temp = da217_read_single_reg (DA217_REG_RESOLUTION_RANGE);
181
131
temp |= WATCHDOG_EN;
182
132
temp |= WATCHDOG_TIME_50MS;
183
133
da217_write_single_reg (DA217_REG_RESOLUTION_RANGE,temp);
184
- temp = da217_read_single_reg (DA217_REG_RESOLUTION_RANGE);
134
+ temp = da217_read_single_reg (DA217_REG_RESOLUTION_RANGE);
185
135
}
186
136
187
137
void DA217::da217_disable_watchdog (void )
188
138
{
189
139
uint8_t temp;
190
- temp = da217_read_single_reg (DA217_REG_RESOLUTION_RANGE);
140
+ temp = da217_read_single_reg (DA217_REG_RESOLUTION_RANGE);
191
141
temp &= ~WATCHDOG_EN;
192
142
da217_write_single_reg (DA217_REG_RESOLUTION_RANGE,temp);
193
143
}
194
144
195
-
196
-
197
145
void DA217::da217_start_xyz_axis (bool x_en,bool y_en,bool z_en)
198
146
{
199
147
uint8_t temp;
@@ -231,24 +179,24 @@ void DA217::da217_start_xyz_axis(bool x_en,bool y_en,bool z_en)
231
179
void DA217::da217_set_odr_rate (da217_odr_rate_t odr_rate)
232
180
{
233
181
uint8_t temp;
234
- temp = da217_read_single_reg (DA217_REG_ODR_AXIS)&0xF0 ;
182
+ temp = da217_read_single_reg (DA217_REG_ODR_AXIS)&0xF0 ;
235
183
temp |= odr_rate;
236
184
da217_write_single_reg (DA217_REG_ODR_AXIS,temp);
237
185
}
238
186
239
187
void DA217::da217_set_fifo_mode (da217_fifo_mode_t mode)
240
188
{
241
189
uint8_t temp;
242
- temp = da217_read_single_reg (DA217_REG_FIFO_CTRL) &0x3F ;
243
- temp |= mode;
190
+ temp = da217_read_single_reg (DA217_REG_FIFO_CTRL) &0x3F ;
191
+ temp |= mode;
244
192
da217_write_single_reg (DA217_REG_FIFO_CTRL,temp);
245
193
}
246
194
247
195
void DA217::da217_set_full_scale (da217_full_scale_t fs)
248
196
{
249
197
uint8_t temp;
250
- temp = da217_read_single_reg (DA217_REG_RESOLUTION_RANGE) &0xFC ;
251
- temp |= fs;
198
+ temp = da217_read_single_reg (DA217_REG_RESOLUTION_RANGE) &0xFC ;
199
+ temp |= fs;
252
200
da217_write_single_reg (DA217_REG_RESOLUTION_RANGE,temp);
253
201
}
254
202
@@ -268,7 +216,7 @@ void DA217::da217_read_xyz_data(uint16_t *x_data,uint16_t *y_data,uint16_t *z_da
268
216
return ;
269
217
}
270
218
da217_read_multiple_reg (DA217_REG_ACC_X_LSB,data,6 );
271
- *x_data = data[0 ]+ (data[1 ]<< 8 );
272
- *y_data = data[2 ]+ (data[3 ]<< 8 );
273
- *z_data = data[4 ]+ (data[5 ]<< 8 );
219
+ *x_data = (( data[0 ]& 0xFC ) >> 2 ) + (data[1 ]<< 6 );
220
+ *y_data = (( data[2 ]& 0xFC ) >> 2 ) + (data[3 ]<< 6 );
221
+ *z_data = (( data[4 ]& 0xFC ) >> 2 ) + (data[5 ]<< 6 );
274
222
}
0 commit comments