Hi! I’m trying to use an ODrive S1 with an AEAT-8800-Q24 (in a REV throughbore encoder). I’m configuring through the GUI, and I’m not getting anything out of the encoder. When I look at the ODrive in the inspector, spi_encoder0’s status is BAD_CONFIG.

The following is the python commands from the GUI:

odrv = odrv0
odrv.config.dc_bus_overvoltage_trip_level = 13
odrv.config.dc_max_positive_current = 10
odrv.config.dc_max_negative_current = -2
odrv.config.brake_resistor0.enable = True
odrv.config.brake_resistor0.resistance = 2
odrv.axis0.config.motor.motor_type = MotorType.HIGH_CURRENT
odrv.axis0.config.motor.torque_constant = 0.009018538713195202
odrv.axis0.config.motor.pole_pairs = 7
odrv.axis0.config.motor.current_soft_max = 10
odrv.axis0.config.motor.current_hard_max = 23
odrv.axis0.config.motor.calibration_current = 10
odrv.axis0.config.motor.resistance_calib_max_voltage = 2
odrv.axis0.config.calibration_lockin.current = 10
odrv.axis0.controller.config.input_mode = InputMode.PASSTHROUGH
odrv.axis0.controller.config.control_mode = ControlMode.VELOCITY_CONTROL
odrv.axis0.controller.config.vel_limit = 100
odrv.axis0.controller.config.vel_limit_tolerance = 1
odrv.axis0.config.torque_soft_min = -0.05
odrv.axis0.config.torque_soft_max = 0.05
odrv.can.config.protocol = Protocol.NONE
odrv.config.enable_uart_a = False
odrv.spi_encoder0.config.mode = SpiEncoderMode.AEAT
odrv.spi_encoder0.config.ncs_gpio = 12
odrv.axis0.config.load_encoder = EncoderId.SPI_ENCODER0
odrv.axis0.config.encoder_bandwidth = 100
odrv.hall_encoder0.config.enabled = True
odrv.axis0.config.commutation_encoder = EncoderId.HALL_ENCODER0

To configure the ODrive I pressed the buttons from top to bottom in order on the GUI. i.e. “Erase & Reboot”, “Apply”, “Save & Reboot”, “Run Calibration Sequence”, “Save & Reboot”

I’m using a NEO 550 motor and using the built in hall effect encoder also, the REV through bore is being use as a load encoder after a reduction.

I’m not sure what causes BAD_CONFIG, and the documentation doesn’t say.

Hi there,

Glitch in our code - uploaded a possible fix here: Can do more digging in the future.

Please try flashing the firmware file odrivetool dfu ODriveFirmware_S1_v0_6_9_AEAT_Fix.elf and then reconfigure. Note that the MOSI pin on the encoder must be hardwired to +3V3.

1 Like

Hi! Thanks for the help! That solved the BAD_CONFIG. Now the encoder says NOMINAL. I’m still having difficulty getting anything out of the encoder however.

In the GUI it shows that the position is 0 always. I have MOSI hardwired to 3v3. I’m fairly confident I have everything wired up correctly, but here it is just in case.

I also tried probing with a scope, and given my limited knowledge of SSI, it looked to be about what I’d expect.

I’m not sure what else to try.

Hi there,

I’ve purchased one of these encoders and will be debugging the ODrive communication once I receive it. It’ll be a few days, if that’s alright.

1 Like

Thank you! I really appreciate your time on this!

Hi @solomondg no pressure, but have you had a chance to look into this?

Hi! Thanks for the follow up. Yes, I’ve looked into this a bit - the encoder protocol is frankly terribly designed and I’m working out some weird bugs. I don’t have time today to investigate further unfortunately, but I’ll try to get it scoped up this week.

1 Like

Hi @solomondg just following up on this. Let me know if there is something I can do to help. I really am just looking for this through bore style of encoder with a wide enough bore to accomodate a 1/2" shaft.

Hi Prem! Sorry, things have been extremely busy. Remind me wednesday or thursday and I’ll take a look!

1 Like

Hi @solomondg! All good. Let me know if you have time today for this!