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
↧