@@ -34,7 +34,7 @@ bool SimpleFOCRegisters::registerToComms(RegisterIO& comms, uint8_t reg, FOCMoto
3434 break ;
3535 case SimpleFOCRegister::REG_POSITION:
3636 if (motor->sensor ) {
37- comms << (uint32_t )motor->sensor ->getFullRotations ();
37+ comms << (uint32_t )motor->sensor ->getFullRotations (); // TODO fix me!
3838 comms << motor->sensor ->getMechanicalAngle ();
3939 }
4040 else {
@@ -51,6 +51,24 @@ bool SimpleFOCRegisters::registerToComms(RegisterIO& comms, uint8_t reg, FOCMoto
5151 else
5252 comms << motor->shaft_angle ;
5353 break ;
54+ case SimpleFOCRegister::REG_SENSOR_MECHANICAL_ANGLE:
55+ if (motor->sensor )
56+ comms << motor->sensor ->getMechanicalAngle (); // stored angle
57+ else
58+ comms << motor->shaft_angle ;
59+ break ;
60+ case SimpleFOCRegister::REG_SENSOR_VELOCITY:
61+ if (motor->sensor )
62+ comms << motor->sensor ->getVelocity (); // stored angle
63+ else
64+ comms << motor->shaft_velocity ;
65+ break ;
66+ case SimpleFOCRegister::REG_SENSOR_TIMESTAMP:
67+ if (motor->sensor )
68+ comms << (uint32_t )motor->sensor ->angle_prev_ts ; // stored angle
69+ else
70+ comms << (uint32_t )0 ;
71+ break ;
5472
5573 case SimpleFOCRegister::REG_TELEMETRY_REG:
5674 if (Telemetry::num_telemetry > 0 ){
@@ -405,6 +423,9 @@ bool SimpleFOCRegisters::commsToRegister(RegisterIO& comms, uint8_t reg, FOCMoto
405423 case SimpleFOCRegister::REG_POSITION:
406424 case SimpleFOCRegister::REG_VELOCITY:
407425 case SimpleFOCRegister::REG_SENSOR_ANGLE:
426+ case SimpleFOCRegister::REG_SENSOR_MECHANICAL_ANGLE:
427+ case SimpleFOCRegister::REG_SENSOR_VELOCITY:
428+ case SimpleFOCRegister::REG_SENSOR_TIMESTAMP:
408429 case SimpleFOCRegister::REG_VOLTAGE_Q:
409430 case SimpleFOCRegister::REG_VOLTAGE_D:
410431 case SimpleFOCRegister::REG_CURRENT_Q:
@@ -433,6 +454,9 @@ uint8_t SimpleFOCRegisters::sizeOfRegister(uint8_t reg){
433454 case SimpleFOCRegister::REG_ANGLE:
434455 case SimpleFOCRegister::REG_VELOCITY:
435456 case SimpleFOCRegister::REG_SENSOR_ANGLE:
457+ case SimpleFOCRegister::REG_SENSOR_MECHANICAL_ANGLE:
458+ case SimpleFOCRegister::REG_SENSOR_VELOCITY:
459+ case SimpleFOCRegister::REG_SENSOR_TIMESTAMP:
436460 case SimpleFOCRegister::REG_VOLTAGE_Q:
437461 case SimpleFOCRegister::REG_VOLTAGE_D:
438462 case SimpleFOCRegister::REG_CURRENT_Q:
@@ -494,7 +518,7 @@ uint8_t SimpleFOCRegisters::sizeOfRegister(uint8_t reg){
494518 return 2 *telemetry->numRegisters + 1 ;
495519 }
496520 else
497- return 0 ;
521+ return 1 ;
498522 case SimpleFOCRegister::REG_DRIVER_ENABLE:
499523 case SimpleFOCRegister::REG_REPORT: // size can vary, handled in Commander if used - may discontinue this feature
500524 case SimpleFOCRegister::REG_ENABLE_ALL: // write-only
0 commit comments