<< Chapter < Page | Chapter >> Page > |
This laboratory explores the hardware multiplier peripheral. It is composed of three different tasks, each of which evaluates a different characteristic of the hardware multiplier peripheral:
- Multiplication operation execution time, with and without the hardware multiplier.
-Differences between the use of the operator “*” and direct write to the hardware multiplier registers.
- Task operational analysis, in which the active power and the RMS value of an electrical system are calculated.
This laboratory explores and analyses the MSP430 performance when it makes multiply operations using the hardware multiplier peripheral. In this laboratory, the active power and the RMS value of an electrical signal are calculated.
The execution times are measured using an oscilloscope.
This laboratory only uses Port P2.1 connected to LED2, in order to measure the execution time of the multiply operation when it is performed by the hardware multiplier.
The application uses the default configuration of the FLL+. All the clock signals required for the operation of the components of the device take their default values.
- The application starts by stopping the Watchdog Timer;
- Two
_NOP()
instructions are provided to associate breakpoints, in order to read current and voltage samples (
N = 200
) from files;
- Power is computed by applying the following formula:
- A signed multiply operation is performed by writing the first sample of current to MPYS and the first sample of voltage to OP2 ;
- The result of the multiplication is stored in the RESHI and RESLO registers;
- A loop is performed with a signed multiply and accumulate ( MACS ) operation;
- The final result is transferred from the RESHI and RESLO registers to the long variable result ;
- The power is computed by dividing the variable result by the number of samples (N);
- Port P2.1 is active between MACS operations;
- The RMS current and voltage values are calculated from the following expressions:
- The two procedures are similar, with the exception of the square root (
sqrt
) operations;
- P2.1 is active during for all the RMS current calculation;
- The computation times of the sqrt and division operations are determined when the RMS voltage value is calculated;
- This application ends by putting the device into low power mode LPM4.
Go to Properties>TI Debug Settings and select the Target tab. Uncheck the automatically step over functions without debug information when source stepping in order to allow stepping into the multiply routine;
Go to Properties>C/C++ Build>Linker MSP430 Linker v3.0>General options and choose the option 16 (default) at the Link in hardware version of RTS mpy routine . With this linker option, the application ( Lab3_HM.c ) will be built with the 16-bit hardware multiplier peripheral contained in the Experimenter’s board.
Rebuild the project and download to the target.
- Insert a breakpoint at line of code 61 (first
_NOP()
operation);
- Edit Breakpoint Properties and choose the Read Data from file action;
- Configure the following data fields:
File: i.txt
Wrap around:
True
Start address:
&i
Length:
200
- Include a breakpoint at line of code 63 (second
_NOP()
operation);
- Edit Breakpoint Properties and choose the Read Data from file action;
- Configure the following data fields:
File: u.txt
Wrap around: True
Start address: &u
Length: 200
- Connect the oscilloscope probe to port P2.1, which is available at Header 4 pin 2;
- Put the cursor at the line of code 88 and Run to line ;
- In the Variables view, add the global variable P and format it to decimal;
- The active power is in the region of 1204 W;
- The pulse width, as viewed on the oscilloscope, corresponds to the time to perform the 200 signed multiply and accumulate operations and is 5.4 msec.
- Starting at the last step of the previous task, put the cursor at line of code 105 {
MPYS = u[0]
} and Run to line;
- Add the global variable I (RMS voltage);
- Set the value to 10;
- The pulse width, as viewed on the oscilloscope, corresponds to the time required to perform the 200 signed multiply and accumulate operations, 1 division operation and 1 square root operation, and is 12.6 msec;
- Starting at the last step of the previous task, put the cursor at line of code 121 {
_BIS_SR(LPM4)
} and
Run to line ;
- Add the global variable U (RMS voltage);
- Set the value to 240;
- The pulse width, as viewed on the oscilloscope, corresponds to the time to perform the 200 signed multiply and accumulate operations, and is 6.8 msec;
This example and many others are available on the MSP430 Teaching ROM.
Request this ROM, and our other Teaching Materials here (External Link)
Notification Switch
Would you like to follow the 'Teaching and classroom laboratories based on the “ez430” and "experimenter's board" msp430 microcontroller platforms and code composer essentials' conversation and receive update notifications?