Must always exit-safe-start to move motor

I cannot get my 36v4 stepper controller to move the motor without first issuing the exit-safe-start command.
My understanding is that should not be required.
I also notice that I cannot clear the ‘errors occurred’ status when reading it with the 0xA2 ‘get variables and clear’ command.
Even if I perform the ‘get and clear’ read multiple times in a row, without doing anything else, it still does not clear.
The status mostly indicates ‘command timeout’ and ‘safe start violation’.
I guess something is continually causing those errors to occur, but I can’t figure out what that is.
I’m using I2C to access the controller.
If I instead use USB and ticgui, then everything looks OK - no errors reported on the GUI.
And if I leave the GUI running, but then drive the motor via I2C, then I do not get any errors reported. I also do not need to issue the exit-safe-start command.
I’m setting target position (0xE) to move the motor. I also issue a reset_timeout (0x8c) before each target position command. And while the motor is moving, I issue a reset_timeout command every 1/2 second.

Any idea what I’m missing here ? I’m believe the ticgui is continually issuing reset_timeout commands. Is it also doing something else as it idles ? What would it be doing that enables my I2C commands to work without the exit-safe-starts ?

Any insight would be appreciated.

Hello, Tom.

In the “Serial / I²C / USB” control mode, the Tic will generally set the “Safe start violation” error whenever the Tic is not in a normal operation state. It sounds like you are already aware of and trying to avoid command timeout errors, but that seems like the most probable cause since it works fine when you connect to the Tic Control Center (which constantly resets the command timeout like you mentioned). As a test, could you try disabling the command timeout feature by unchecking the box in the “Input and motor settings” tab of the Tic Control Center to see if that fixes the problem?


Thanks Brandon,

I think I’ve got it working now. It always works if I have ticgui running, whether the timeout is enabled or not.

But then I just started doing only an initial exit-safe-start with just my code, but then would also issue a reset timeout before doing any movement commands. Seems like as long as I issue enough of those, I can avoid the need for the safe-start-exits.

So I think it’s all good.

Thanks for the help

More specifically, seems I only have to do an exit-safe-start after I energize the motor. Then the reset_timeouts are all that is needed between movement commands. And if the movement will take longer than one second, I make sure I issue additional reset timeouts so I always get at least one per second.


1 Like