ODrive Pro CAN bus cyclic messages too fast

I’ve got an ODrive Pro (v0.6.7 firmware) connected via CAN to a microcontroller / CAN transceiver. I’ve got a nice clean signal with correct data (monitoring via a scope), but the cyclic heartbeat messages are being sent as fast as possible (faster than every 0.1 ms). This is with the heartbeat_msg_rate_ms set to 100.

If I set the message rate to 1000, there is no change. If I set the message rate to 10000, messages are sent intermittently after powerup for a few seconds, then the messages start spamming again.

If I set the rate to 0, the cyclic encoder messages are then sent as fast as possible (again, faster than every 0.1 ms).

Verifying that I have:

  • star grounding according to CAN guide
  • 60 Ohm resistance between CAN H and CAN L

Any ideas what’s going on here?

That kinda sounds like there’s no device on the bus to ACK the message, so it’s just re-trying?

If you set it to 0, then save_configuration(), does it still send that message?

Hey thanks for the quick response! You’re right, the microcontroller was hanging so it was not ACKing the ODrive messages . I’ve got The ODrive sending cyclic encoder data at the expected frequency and the pos/vel data looks good.

Now it seems the ODrive is not ACKing the microcontroller’s “Set_” messages. I’m initially trying to use “Set_Limits”. The address, command ID, and data all look good on the scope, but there’s no ACK, resulting in a bunch of repeated messages from the microcontroller.

For reference, I’m porting over some code that worked with the ODrive 3.6, so maybe I missed some configuration step with the Pro.