This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28379D: Position manager library and EnDat 2.2 position_clocks

Part Number: TMS320F28379D

Hello of everybody,


I've used the TI position manager libraries as "starting point" for an EnDat 2.1/2.2/01/02 decoding routine in a MCU control board based on a f28379D microcontroller.
In case of an EnDat encoder with endat22Data.position_clocks = 31, the PM_endat22_getCrcPos() returns a wrong CRC value.
For a double check, I've compared che CRC calculation obtained with the MakeCrcPos EnDat CRC routine (i.e. the C-implementation  from Heidenhain specs, which generates the CRC code for EnDat 2.1/2.2 send position values), and everything goes fine, i.e. the CRC is calculated correclty and the encoder position continuosly readed.
It is important to underline that, with every other endat22Data.position_clocks value, the PM_endat22_getCrcPos returns the correct CRC.
The PM_endat22_getCrcPos implementation of the CRC calc. is obviously more faster than the C-original implementation of the CRC, so, it could be there an optimizatio in the library implementation that has leaded to this issue with clk=31? 


PS: the optimization level has been forced at "off" during these test.

Thanks in advance.