<< Chapter < Page | Chapter >> Page > |
The hands-on laboratory consists of configuring the I/O ports, setting up the input lines to read push buttons and the output lines to feed LEDs. The following exercises have been developed for the three hardware development tools.
The first to be discussed is the MSP-EXP430FG4618 Experimenter’s board. Modifications are later made to suit the other development boards. The main differences between the boards are related to the specific ports in which the buttons and LED are (or can be) connected. For the development of this laboratory, Code Composer Essentials v3 has been used.
By analysis of the schematics, determine to which port pin the push button is connected:
- Consult the MSP430FG4618/F2013 Experimenter’s Board User's Guide<slau213a.pdf>:
- Button S1 is connected to Port 1.0;
- Consult the eZ430-RF2500 Development Tool User's Guide<slau227a.pdf>:
- Button S1 is connected to Port 1.2;
- The eZ430-RF2500 uses a device in 2xx family, so you need to additionally configure the button as pull-up or pull-down, in the P1REN register.
Ports control registers:
- Set push button pin port as an input
- P1DIR: Port 1.0 is set as an input:
P1DIR&= ~0x01 // to force the pin setting to 0. It is uses an AND operation (&) between P1DIR and 0xFE
- Enable interrupts to this pin port;
- P1IE: Enable interrupt to port 1.0:
P1IE |= 0x01; // Interrupt Enable in P1.0
- PIIES: Call the port interrupt on a high-to-low transition:
P1IES |= 0x01; // P1.0 Interrupt flag high-to-low transition
- Configure the watchdog timer to prevent a PUC during the program execution;
WDTCTL = WDTPW | WDTHOLD; //Stop Watchdog Timer
- Enable Global Interrupts and configure low power mode 3;
_BIS_SR (LPM3_bits + GIE); //Low Power Mode with interrupts enabled
- Create a interrupt service routine, that includes:
- Toggle LED1 pin port;
- Delay for button debounce;
- Clear interrupt flag.
#pragma vector=PORT1_VECTOR
__interrupt void Port_1 (void) {volatile unsigned int i;
P2OUT ^= 0x04; // Toggle Port P2.2i=1500; // Delay, button debounce
do (i--);while (i !=0);
while (! (P1IN&0x01)); // Wait for the release of the button
i=1500; // Delay, button debouncedo (i--);
while (i !=0);P1IFG&= ~0x01; // Clean P1.0 Interrupt Flag
}
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?