5.1.2
7/2/2026
Changes made for Pathfinder 5226 controllers.
What it does Adds optional Gray-code ? binary decoding for absolute SSI encoders, selectable per axis through the generic Foldbus 0x0003 setup-parameter mechanism. Default is binary (existing behavior unchanged).
Changes by file File Location Change GlobalVar.h line 486 New field uint8 SSI_Gray; in FeedBack_struct FeedBack.c line 139 Gray_To_Binary() helper — branchless XOR-fold, ISR-safe FeedBack.c lines 169-172 In the absolute path: mask ? if (SSI_Gray) Data = Gray_To_Binary(Data) ? store FeedBack.c line 58 Defaults SSI_Gray = FALSE when an absolute encoder is configured SetupParameterIDTable.h line 513 New attribute AXIS_ATTRIBUTE_ID_SSI_GRAY_CODE = 0x2064 (size-class 1 / 2-byte) CmdSetups.c lines 1668-1670 Handler in Foldbus_0x0003_Change_Setup_Value: Axis.ID[i]->Feedback.SSI_Gray = Swap_Word((uint16)Setup->Value.uint32); Data flow Pathfinder sends attribute 0x2064 for an axis object ? generic setter writes SSI_Gray on that axis's feedback struct ? on each encoder read, Encoder_FeedBack_Update checks the error bit on the raw word, masks to the data field, and if SSI_Gray is set, folds Gray?binary before storing the position. Order is correct (error check and mask happen before the fold).
Changes made for Pathfinder 5226 controllers.
The change: one line, the clock divider.
// Rev F (25 MHz): assign CLK = CNT[1]; // ÷4 ? 6.25 MHz internal
// Rev H (12 MHz): assign CLK = CNT[0]; // ÷2 ? 6.0 MHz internal Why: The SSI clock is CLK25 / 256. At 12 MHz the ÷4 divider gave a 46.9 kHz SSI clock (~21 µs period), which exceeds the encoder's monoflop timeout ? the encoder resets mid-frame ? jumpy low bits + error bit. Switching ÷4 ? ÷2 makes 12 MHz ÷ 2 = 6.0 MHz ˜ the original 25 MHz ÷ 4 = 6.25 MHz, restoring the SSI clock to ~94 kHz (~10.7 µs period), back under the monoflop.
Effect: Everything derived from CLK (SSI clock, monoflop window, update rate, incremental filter) returns to the proven rev-F timing. No other lines change. Rev H bitstream only — recompile/reflash; rev F unchanged.