Skip to content

Known issues

The faults in the Spectral Micro firmware that are known and not yet fixed, and what to do until they are. The pages that describe each part say the same where it matters; this page collects them in one place. Which releases work together is in Versions and compatibility.

Spectral Micro firmware

Seen in: 107.

What happens What to do More
KI-1 The current limit of Send_Limits over CAN is used as sent, also above the driver's 2800 mA; only #Ilim over UART clamps it. Keep the current limit your host sends within the motor's rating and 2800 mA. Send_Limits
KI-2 Calibration sets the current limit to 1600 mA and leaves it there, whatever it was before; a #Save right after calibration stores the 1600 mA. After every calibration set #Ilim for your motor, then #Save. Calibration: current limit and save
KI-3 The serial number is not read back from the EEPROM at power-up, so #SERNUM, Motor GUI and Send_Respond_Device_Info report 1, and every #Save writes that 1 over the stored number. Tell drivers apart by their CAN node ID. To keep a serial number stored, set it with #SERNUM before every #Save. Saving: what is not saved
KI-4 For anyone reading or changing the source, the start values in common.h are not the factory defaults (the gripper flag starts at 1, the pole pairs at 11, Max_Vbus at 29500 mV). The EEPROM replaces them at power-up, so a running driver does not show them. Take the defaults from the Defaults page, which lists what #Default writes, or from Set_Default_config() in EEPROM.cpp. Defaults
KI-5 While the E-stop bit of the last Send_gripper_data_pack (or #Gripstop 1) is 1, the driver raises the gripper E-stop error again on every control cycle, so Send_Clear_Error or #Clear alone does not clear it. Send a gripper frame with the E-stop bit 0 (or #Gripstop 0) first, then clear the error. Gripper mode: moving
KI-6 The answer to a 5-byte Send_gripper_data_pack goes out before the driver has acted on the command, so its object detection and error bits are those of the moment before, for example 3 (position reached) from the previous move. Judge the new move by the answers to later frames, or poll with an empty Send_gripper_data_pack. Gripper mode: moving
KI-7 A 5-byte Send_gripper_data_pack, Send_Clear_Error or #Clear during the gripper calibration stops it without a message and leaves its counters as they were, so the next calibration starts part way through; it may skip the opening or give up early. Send only empty status polls while the gripper calibrates (up to about 30 s). After an interrupted calibration, switch the driver off and on before you calibrate again. Gripper mode: calibrating
KI-8 The action bit in Respond_Gripper_data_pack is a copy of the last command's action bit; the driver never clears it, so it stays 1 after the move has ended. Tell the end of a move by the object detection, 3 position reached, 1 or 2 stopped on an object. Respond_Gripper_data_pack
KI-9 Open loop (#Openloop) puts the voltage #Openv (5000 mV by default) on the phases without a current limit; #Ilim does not apply, so a low-resistance motor draws far more than its limit. Lower #Openv before you run a low-resistance motor in open loop, and keep the test short. Control modes
KI-10 The velocity error trips only above a fixed 20,000,000 ticks/s, about 1220 revolutions per second and far above the speeds the driver can follow; #Vlimit does not change it, so it does not catch a motor that runs away. Watch the speed in your host and send Send_Idle or Send_ESTOP when it is wrong. Errors and recovery
KI-11 Only motion frames and answered status requests reset the watchdog. Setting frames (gains, limits, Idle, Clear, Save) and UART commands do not, so a host that only configures the driver, or a terminal session with a saved watchdog, ends in a watchdog error. While the watchdog runs, send a status request such as Send_Respond_Encoder_data within every watchdog period. Before you work over UART alone, set the watchdog to 0 over CAN and save. The watchdog
KI-12 The current a turned motor drives through its shorted phases while the driver brakes in idle (#Brake 1) is not limited. Brake only a motor whose resistance keeps that current under 2.8 A at the speeds it is turned at, and do not let a load drive a braking motor fast. Braking in idle
KI-13 #Save does not keep the idle behaviour: after every power-up the driver coasts in idle again, whatever #Brake or Send_Settings set before. Send #Brake 1 (or Send_Settings) after every power-up when the motor must brake in idle. Braking in idle
KI-14 Send_Respond_Device_Info carries the batch date in one byte, its lowest 8 bits, so a host reading it over CAN gets 120 for the 24092024 that #Default stores. Read the batch date with #Info over UART, which prints the whole number. Send_Respond_Device_Info
KI-15 #Error prints FAULT pin is HIGH while the driver stage reports a fault, which is when that pin is low: the text names the wrong level. Read the line as "the driver stage reports a fault"; the Driver row of Errors and recovery says what to do. Errors and recovery

Release 104

Seen in: the image of the GitHub release V104.

What happens What to do More
KI-16 For anyone who builds or reads the source of release 104, the tag V104 is not what its image was built from. The image comes from commit 20765c9 on Bootloader_main, which adds Send_Voltage_Limit; the tag lacks it. Check out 20765c9 to see or rebuild the 104 image's source; better, update the board to the current release. Releases: the two branches

Something that is not here

Check the symptom tables first. If it is still not explained, Report a problem says what to include so it can be reproduced. A fixed issue stays on this page, under "Fixed", with the release that fixes it.

Comments


Found a mistake on this page? Edit it on GitHub · Report it · Get help · This page as Markdown · llms.txt · The whole manual as PDF