Motors not WOrking After FLashing Microdriver

Hello all, I am having issues with getting the motors working. I have flashed the microdriver according to the guide and also ensure I use the ‘flash’ option and not the ‘release’ and I try to get the motors working but no response. What could be the issue? and how can I resolve this?
HOw do I even verify that the microdriver was successfully flashed? According to the COde COmposer software it looked successful and went into debug mode.

Thanks

@felixwidmaier please I need your help. When I tried to debug the driver code running, after few lines it enters ‘pie_illegalIsr’ mode. THe line that tries to run before entering this mode is:
estHandle[HAL_MTR1] = EST_init((void *)USER_EST_HANDLE_ADDRESS, 0x200);

The illegalIsr is not returning. How can I fix this. Thank you.

Hello,

sorry for not responding earlier!

I’m afraid I can’t help with the PIE_illegalIsr, I don’t think I ever ran into this.

From the motorware documentation (which comes together with the code, see “…/motorware/sw/drivers/docs/api/f2802x/html/index.html” in your workspace):

Defines an illegal interrupt service routine - if the program pointer references this function, there is an incorrect mapping in the PIE interrupt table.

I don’t know what might be causing this, though. Did you make any modifications in the firmware code?

Since this seems to be an issue with MotorWare, you may also try asking the Texas Instruments support.


Regarding your initial question testing about testing if flashing worked: Are you connecting to the board directly via CAN or are you using a master board?

  • For the master board: The master_board_sdk includes an example executable master_board_example_pd which can be used to test if the boards are okay. It simply moves all motors back and forth on a sine wave and prints data received from the boards.
  • For the CAN version: The package blmc_driver contains some demo applications but at least on first glance none of them is really nice for a quick test. I may add a nicer test application if I find some time but for now, you could use the can_encoder_index_test executable. It expects as arguments the CAN interface, the motor index (0 or 1, depending on which slot of the board it is connected to) and a torque that will be applied. Example:
    ros2 run blmc_driver can_encoder_index_test can0 0 0.05
    
    If all is good, this should result in the motor spinning (you may adjust the torque) and a line with the current position should be printed every time the encoder index tick is observed (i.e. once per revolution).

I hope this helps.

1 Like