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: 110.

What happens What to do More
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-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) 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 and save (#Par 6,0, then #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-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-19 The encoder table holds a field current of 80 % of the current limit for about 20 s, also in the run that follows every #Cal. With a limit above the motor's rating (1000 mA after #Default), the run is above the rating too. Set #Ilim for the motor before #Encal and before every #Cal (calibration puts the limit that was in force back before the runs that follow). Encoder table and anti-cogging: running them

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

Fixed

What happened Fixed in 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. 109: Send_Limits stops the current limit at 2800 mA and ignores a negative value 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. 109: calibration puts back the current limit that was in force when it started Calibration: current limit and save
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. 110: a new gripper calibration starts from its first step, also after one that was stopped (a command during the calibration still stops it) Gripper mode: calibrating
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. 110: #Save keeps the idle behaviour (#Brake, Send_Settings, parameter 18) Braking in idle
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. 109: the line reads FAULT pin is LOW: the gate driver reports a fault Errors and recovery

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