I ran the exact same code on the CLA and the CPU:
Uint16 CtrStart = EPwm7Regs.TBCTR;
// Sensor is reverse-connected, positive voltage = negative current
CurrentMeasurement[1][0] = PhaseCurrentOffset[0] - (((int32)AdcResult.ADCRESULT2)*MotorParameters.CurrentSensRange >> 12);
CurrentMeasurement[1][1] = PhaseCurrentOffset[1] - (((int32)AdcResult.ADCRESULT3)*MotorParameters.CurrentSensRange >> 12);
CurrentMeasurement[1][2] = PhaseCurrentOffset[2] - (((int32)AdcResult.ADCRESULT4)*MotorParameters.CurrentSensRange >> 12);
Uint16 CtrEnd = EPwm7Regs.TBCTR;
MotorOutputsCla.TempDebug = CtrEnd - CtrStart;
On the CPU, number of cycles in MotorOutputsCla.TempDebug is 37, while on the CLA it is 1100 (!?!).
CurrentMeasurement, PhaseCurrentOffset and MotorParameters.CurrentSensRange are all int32.
Im not very well versed in assembler, this is the listing for the CLA:
130 CurrentMeasurement[1][0] = PhaseCurrentOffset[0] - (((int32)AdcResult.ADCRESULT2)*MotorParameters.CurrentSensRange >> 12);
00009062: 78430000 MMOVIZ MR3, #0x0
00009064: 78420000 MMOVIZ MR2, #0x0
128 Uint16 CtrStart = EPwm7Regs.TBCTR;
00009066: 75806984 MMOVZ16 MR0, @0x6984
00009068: 75C08800 MMOV16 @0x8800, MR0
130 CurrentMeasurement[1][0] = PhaseCurrentOffset[0] - (((int32)AdcResult.ADCRESULT2)*MotorParameters.CurrentSensRange >> 12);
0000906a: 75800B02 MMOVZ16 MR0, @0xb02
0000906c: 7BC0003C MLSL32 MR0, 16
0000906e: 7B80003C MLSR32 MR0, 16
00009070: 73D0152C MMOV32 MR1, @0x152c, UNCF
C$L3:
00009072: 78830001 MMOVXI MR3, #0x1
00009074: 7C60001F MAND32 MR3, MR3, MR1
00009076: 7FA00000 MNOP
00009078: 7FA00000 MNOP
0000907a: 7FA00000 MNOP
0000907c: 7981000A MBCNDD 0xa, EQ
0000907e: 7FA00000 MNOP
00009080: 7FA00000 MNOP
00009082: 7FA00000 MNOP
00009084: 7CC0000A MADD32 MR2, MR2, MR0
C$L4:
00009086: 7BC00000 MLSL32 MR0, 1
00009088: 7B800001 MLSR32 MR1, 1
0000908a: 7FA00000 MNOP
0000908c: 7FA00000 MNOP
0000908e: 7FA00000 MNOP
00009090: 7980FFE2 MBCNDD 0xffe2, NEQ
00009092: 7FA00000 MNOP
00009094: 7FA00000 MNOP
00009096: 7FA00000 MNOP
00009098: 7B40002E MASR32 MR2, 12
0000909a: 73C01542 MMOV32 MR0, @0x1542, UNCF
0000909c: 7CE00020 MSUB32 MR0, MR0, MR2
0000909e: 74C01494 MMOV32 @0x1494, MR0
000090a0: 7FA00000 MNOP
131 CurrentMeasurement[1][1] = PhaseCurrentOffset[1] - (((int32)AdcResult.ADCRESULT3)*MotorParameters.CurrentSensRange >> 12);
000090a2: 78430000 MMOVIZ MR3, #0x0
000090a4: 78420000 MMOVIZ MR2, #0x0
000090a6: 75800B03 MMOVZ16 MR0, @0xb03
000090a8: 7BC0003C MLSL32 MR0, 16
000090aa: 7B80003C MLSR32 MR0, 16
000090ac: 73D0152C MMOV32 MR1, @0x152c, UNCF
C$L5:
000090ae: 78830001 MMOVXI MR3, #0x1
000090b0: 7C60001F MAND32 MR3, MR3, MR1
000090b2: 7FA00000 MNOP
000090b4: 7FA00000 MNOP
000090b6: 7FA00000 MNOP
000090b8: 7981000A MBCNDD 0xa, EQ
000090ba: 7FA00000 MNOP
000090bc: 7FA00000 MNOP
000090be: 7FA00000 MNOP
000090c0: 7CC0000A MADD32 MR2, MR2, MR0
C$L6:
000090c2: 7BC00000 MLSL32 MR0, 1
000090c4: 7B800001 MLSR32 MR1, 1
000090c6: 7FA00000 MNOP
000090c8: 7FA00000 MNOP
000090ca: 7FA00000 MNOP
000090cc: 7980FFE2 MBCNDD 0xffe2, NEQ
000090ce: 7FA00000 MNOP
000090d0: 7FA00000 MNOP
000090d2: 7FA00000 MNOP
000090d4: 7B40002E MASR32 MR2, 12
000090d6: 73C01544 MMOV32 MR0, @0x1544, UNCF
000090d8: 7CE00020 MSUB32 MR0, MR0, MR2
000090da: 74C01496 MMOV32 @0x1496, MR0
000090dc: 7FA00000 MNOP
132 CurrentMeasurement[1][2] = PhaseCurrentOffset[2] - (((int32)AdcResult.ADCRESULT4)*MotorParameters.CurrentSensRange >> 12);
000090de: 78430000 MMOVIZ MR3, #0x0
000090e0: 78420000 MMOVIZ MR2, #0x0
000090e2: 75800B04 MMOVZ16 MR0, @0xb04
000090e4: 7BC0003C MLSL32 MR0, 16
000090e6: 7B80003C MLSR32 MR0, 16
000090e8: 73D0152C MMOV32 MR1, @0x152c, UNCF
C$L7:
000090ea: 78830001 MMOVXI MR3, #0x1
000090ec: 7C60001F MAND32 MR3, MR3, MR1
000090ee: 7FA00000 MNOP
000090f0: 7FA00000 MNOP
000090f2: 7FA00000 MNOP
000090f4: 7981000A MBCNDD 0xa, EQ
000090f6: 7FA00000 MNOP
000090f8: 7FA00000 MNOP
000090fa: 7FA00000 MNOP
000090fc: 7CC0000A MADD32 MR2, MR2, MR0
C$L8:
000090fe: 7BC00000 MLSL32 MR0, 1
00009100: 7B800001 MLSR32 MR1, 1
00009102: 7FA00000 MNOP
00009104: 7FA00000 MNOP
00009106: 7FA00000 MNOP
00009108: 7980FFE2 MBCNDD 0xffe2, NEQ
0000910a: 7FA00000 MNOP
0000910c: 7FA00000 MNOP
0000910e: 7FA00000 MNOP
00009110: 7B40002E MASR32 MR2, 12
00009112: 73C01546 MMOV32 MR0, @0x1546, UNCF
00009114: 7CE00020 MSUB32 MR0, MR0, MR2
00009116: 74C01498 MMOV32 @0x1498, MR0
133 Uint16 CtrEnd = EPwm7Regs.TBCTR;
00009118: 73D08800 MMOV32 MR1, @0x8800, UNCF
134 MotorOutputsCla.TempDebug = CtrEnd - CtrStart;
0000911a: 7BC0003D MLSL32 MR1, 16
0000911c: 7B80003D MLSR32 MR1, 16
133 Uint16 CtrEnd = EPwm7Regs.TBCTR;
0000911e: 75806984 MMOVZ16 MR0, @0x6984
134 MotorOutputsCla.TempDebug = CtrEnd - CtrStart;
00009120: 7BC0003C MLSL32 MR0, 16
00009122: 7B80003C MLSR32 MR0, 16
00009124: 7CE00010 MSUB32 MR0, MR0, MR1
00009126: 7D800000 MI32TOF32 MR0, MR0
00009128: 74C014A4 MMOV32 @0x14a4, MR0
Does anyone has a clue as to what's going on here?