A great exercise when first starting with a new microcontroller is to get LEDs to turn-on, flash, or dim. Depending upon the configuration of your circuit, a LED (light-emitting diode) is accessed by toggling a GPIO or 'General Purpose Input Output pin either high or low. GPIO pins can be configured either as an input (read) or output (write). A high signal is often referred to as "Asserted" or a logic "1" and a low signal designated as Negated or logic "0". The input and output voltage range for GPIO pins is typically limited to the supply voltage of the evaluation board.
To optimize functionality in small packages, physical microcontroller pins have several functions available via signal multiplexing. Internally, a pin will have several wires connected to it via a multiplexer (wiki) or MUX. A multiplexer selects between several inputs and sends the selected signal to its output pin. The Signal Multiplexing chapter of your reference manual illustrates which device signals are multiplexed on which external pin. The Port Control block controls which signal is present on the external pin. The configuration registers within a microcontroller require proper configuration to select the GPIO as an input or output. The same GPIO pins utilized to blink a LED can be wired to read a signal coming from an external device such as the input from a hall effect sensor. Freescale Cup participants will configure GPIO pins as outputs to control the line-scan-camera via timed pulses and clock type signals.
In write mode, the GPIO pin can be set, cleared, or toggled via software initiated register settings.
To determine which pin on the microcontroller is connected to a LED and how to access it from software, refer to the schematic of the microcontroller board. This pin will have numeric or alfanumeric value as well as an descriptive designation such as PTC7.
Microcontroller Reference Manual: GPIO Information
You will find high level information about GPIO usage in several different areas of a reference manual. See thereference-manual article for more general information.
- Relevant Chapters:
- Introduction: Human-machine interfaces - lists the memory map and register definitions for the GPIO
- System Modules: System Integration Modules (SIM) - provides system control and chip configuration registers
- Chip Configuration: Human-Machine interfaces (HMI).
- Signal Multiplexing: Port control and interrupts
- Human-Machine Interfaces: General purpose input/output
As stated before, internal registers control whether a pin is high or low. Determining the polarity or orientation of your LED is important because this will let you know whether to set the associated pin in the HIGH or LOW state. The evaluation boards from Freescale all provide LED circuits like the one shown below.
The circuit in figure (1) demonstrates a simple way to to power a LED. The circuit consists of connecting in a LED, resistor (which limits the current) and voltage source in series. LED's are semiconductors which convert current to light. When they are forward biased (turned on), electron and holes will recombine with no change in momentum, emitting a photon or light wave.
Choosing the resistor is simple if you know the operating current requirements for your LED which are determined by reading the LED datasheet or specification document.
R = (Vs - VL)/ IL
Where V s is the power supply voltage, and V L is the Voltage Drop across the LED, and I L is the desired current through the LED.