1313
1414uint16_t reference_angle_value[NUM_AXIS] = {95 , 1429 , 1998 , 0 };
1515
16- float reference_angle[NUM_AXIS] = {90.0 , 32.4 , 90.6 , 0.0 };
16+ float reference_angle[NUM_AXIS] = {90.0 , 33.154915 , 90.231049 , 0.0 };// {90.0, 32.4, 90.6, 0.0};
17+
18+ float reference_angle_B[NUM_AXIS] = {90.0 , 33.138634 , 88.795792 , 0.0 };
19+
20+ #define USE_REFERENCE_ANGLE_B_FLAG 0xBB
21+
22+ float (*reference_angle_p)[NUM_AXIS] = &reference_angle;
1723
1824
1925void init_reference_angle_value ()
2026{
21- // read value from eeprom
22- reference_angle_value[X_AXIS] = getE2PROMData (EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_ADDR, DATA_TYPE_INTEGER);
23- reference_angle_value[Y_AXIS] = getE2PROMData (EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_ADDR+2 , DATA_TYPE_INTEGER);
24- reference_angle_value[Z_AXIS] = getE2PROMData (EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_ADDR+4 , DATA_TYPE_INTEGER);
27+ uint8_t reference_angle_flag = getE2PROMData (EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_B_FLAG_ADDR, DATA_TYPE_BYTE);
2528
29+ if (reference_angle_flag == USE_REFERENCE_ANGLE_B_FLAG)
30+ {
31+ debugPrint (" reference_angle_b flag set\r\n " );
32+ // read value from eeprom
33+ reference_angle_value[X_AXIS] = getE2PROMData (EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_B_ADDR, DATA_TYPE_INTEGER);
34+ reference_angle_value[Y_AXIS] = getE2PROMData (EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_B_ADDR+2 , DATA_TYPE_INTEGER);
35+ reference_angle_value[Z_AXIS] = getE2PROMData (EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_B_ADDR+4 , DATA_TYPE_INTEGER);
36+ reference_angle_p = &reference_angle_B;
37+ }
38+ else
39+ {
40+ // read value from eeprom
41+ reference_angle_value[X_AXIS] = getE2PROMData (EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_ADDR, DATA_TYPE_INTEGER);
42+ reference_angle_value[Y_AXIS] = getE2PROMData (EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_ADDR+2 , DATA_TYPE_INTEGER);
43+ reference_angle_value[Z_AXIS] = getE2PROMData (EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_ADDR+4 , DATA_TYPE_INTEGER);
44+ reference_angle_p = &reference_angle;
45+ }
46+
2647 debugPrint (" read ref value: %d, %d, %d\r\n " , reference_angle_value[0 ], reference_angle_value[1 ], reference_angle_value[2 ]);
2748}
2849
@@ -41,6 +62,25 @@ void update_reference_angle_value(uint16_t value[NUM_AXIS])
4162 debugPrint (" set ref value: %d, %d, %d\r\n " , reference_angle_value[0 ], reference_angle_value[1 ], reference_angle_value[2 ]);
4263}
4364
65+ void update_reference_angle_value_B (uint16_t value[NUM_AXIS])
66+ {
67+
68+ reference_angle_value[X_AXIS] = value[X_AXIS];
69+ reference_angle_value[Y_AXIS] = value[Y_AXIS];
70+ reference_angle_value[Z_AXIS] = value[Z_AXIS];
71+
72+
73+ setE2PROMData (EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_B_ADDR, DATA_TYPE_INTEGER, reference_angle_value[X_AXIS]);
74+ setE2PROMData (EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_B_ADDR+2 , DATA_TYPE_INTEGER, reference_angle_value[Y_AXIS]);
75+ setE2PROMData (EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_B_ADDR+4 , DATA_TYPE_INTEGER, reference_angle_value[Z_AXIS]);
76+ setE2PROMData (EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_B_FLAG_ADDR, DATA_TYPE_BYTE, USE_REFERENCE_ANGLE_B_FLAG);
77+
78+ reference_angle_p = &reference_angle_B;
79+
80+ debugPrint (" set ref value: %d, %d, %d\r\n " , reference_angle_value[0 ], reference_angle_value[1 ], reference_angle_value[2 ]);
81+ }
82+
83+
4484uint16_t get_current_angle_adc (uint8_t index)
4585{
4686 uint16_t value = 0 ;
@@ -132,16 +172,16 @@ float get_current_angle(uint8_t index)
132172 if (cur_value > reference_angle_value[index])
133173 {
134174 diff = cur_value - reference_angle_value[index];
135- angle = reference_angle [index] + diff * 360.0 / 4096 ;
175+ angle = (*reference_angle_p) [index] + diff * 360.0 / 4096 ;
136176 }
137177 else if (cur_value < reference_angle_value[index])
138178 {
139179 diff = reference_angle_value[index] - cur_value;
140- angle = reference_angle [index] - diff * 360.0 / 4096 ;
180+ angle = (*reference_angle_p) [index] - diff * 360.0 / 4096 ;
141181 }
142182 else
143183 {
144- angle = reference_angle [index];
184+ angle = (*reference_angle_p) [index];
145185 }
146186
147187 // debugPrint("cur_value = %d\r\n", cur_value);
0 commit comments