To access the Result registers you need at least one cycle if using indirect addressing modes as per datasheet section 11.2.4. I think I understand but I'm not certain
I am using the MACS as the last in a series of calcs. Xsquared + Y squared + Z squared. (There are instructions between the A squared and B squared calcs but not after the Z squared as below.
No other multiply calculations (hardware or software) are used in the code and this is not in an ISR
The following assembler is generated. (from CCS disassembler view)
db04: 4F82 0136 MOV.W R15,&Multiplier_MACS
1223 OP2 = temp_Z_vector_int; // Z Squared
db08: 4F82 0138 MOV.W R15,&Multiplier_OP2
1226 vector_result_temp = RESHI; // get the MSB result
db0c: 421F 013C MOV.W &Multiplier_RESHI,R15
1228 vector_result_temp |= RESLO; // Add in the LSB
In this case do I need to add a nop before I read the MSB result.
I am chasing an obscure bug that only happens occasionally so it is difficult to just add in the nop and check if the bug has gone away.
It is possible multiply accumulator latency is my issue?
Is there any extra latency to what the datasheet states if the accumulator/adder is used rather than the straight multiply ?
regards john c