<< 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’s performance when it performs multiply operations without the hardware multiplier. The execution time is 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 a software routine.
The default configuration of the FLL+ is used. All the clock signals required for the operation of the components of this device take their default values.
- The application starts by stopping the Watchdog Timer;
- Port P2.1 is configured as an output with the pin at a low level;
- The variables a and b to be multiplied are initialized;
- The multiplication of the two variables is performed between toggle P2.1 instructions;
- 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 None at the Link in hardware version of RTS mpy routine . With this linker option, the application ( Lab1_HM.c ) will be built without the hardware multiplier and all multiplication operations will be performed by the software routine.
Rebuild the project and download it to the target.
- Connect the oscilloscope probe to port P2.1 available on Header 4 pin 2;
- Put the cursor at line of code 51 {c = a*b} and Run to line ;
- Go to Disassembly view and switch to mixed disassembly view in order to show both C and Assembly code;
- Observe that the variables
a and
b are passed by registers and the
#__mpyi
routine is called;
- Run the code step-by-step with the Disassembly view active. This action will lead to the software multiply routine;
- As the software multiply routine source code is not available, switch to Assembly view only;
- Run the application step-by-step until the
RETA
instruction;
- This multiplication is a time-consuming CPU operation.
- Restart the application. It will run from the beginning;
- Put the cursor on line of code 56
{_BIS_SR(LPM4)
} and
Run to line ;
- Measure the time pulse time width using the oscilloscope;
- This software multiply operation takes around 54 μsec.
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?