DESCRIPCIÓN
Se programará el microcontrolador FRDM-KL25Z para mostrar,
durante tiempos diversos, distintos colores, empleando combinaciones del LED
tricolor incluido.
OBJETIVO
Aprender a declarar y utilizar estructuras.
REQUERIMIENTOS.
HARDWARE
Para esta práctica se requiere solamente el microcontrolador
FRDM-KL25Z, que incluye un LED tricolor RGB (Rojo-Verde-Azul).
ARQUITECTURA
DEL SOFTWARE.
Tabla de
funciones
Funciones en main
|
|
void f_LED(int);
|
// Función
para combinar el encendido del LED tircolor y obtener un color específico
|
void
inicio(void);
|
// Función
para inicializar la variable "timmer"
|
void LED_Func(Color_tiempo *ap);
|
// Función
que usará los datos en el apuntador.
|
Tabla 1 Funciones empleadas en el programa principal
Diagramas de
flujo
Fig. 1 Diagrama de flujo de la función main.
a) b).
Fig. 2 Diagramas de flujo de las funciones: a). inicio ;
b). LED_Func , empleadas en main.
Fig. 3 Diagrama de flujo de la función f_LED, empleada en
main.
Fig. 4 Diagrama de flujo de la función TI1_OnInterrupt,
empleada en Events.c.
Descripción
de variables y constantes
Processor Expert
|
|
typedef
struct {int color; int tiempo;} Color_tiempo;
|
// Define la estructura llamada
Color_tiempo
|
enum colores{negro, azul, verde,
cyan, rojo, magenta, amarillo, blanco};
|
// Enumera las posibles combinaciones
de colores: negro=0, azul=1, verde=2 ...etc.
|
enum
bit_color{b_azul=1,b_verde=2,b_rojo=4};
|
// Enumera los bits de los LEDs
disponibles en el Microcontrolador
|
extern int timmer;
|
// Variable externa
"timmer", radicada en Events.c
|
int color_led;
|
//Variable utilizada para decidir el
color deseado
|
Color_tiempo arr_color_tiempo[]= {{negro,30},{azul,20},{verde,10},{cyan,30},{magenta,20},
{amarillo,10},{blanco,30},{0,0}};
|
// Carga los valores deseados en la
estructura "Color_tiempo"
|
Color_tiempo
*apu_color_tiempo=arr_color_tiempo;
|
// Pone el apuntador en la estructura
"Color_tiempo"
|
Tabla 2 Tabla de variables empleadas en el programa
principal
Events.c
|
|
int timmer;
|
// Variable empleada para llevar
control del tiempo de encendido
|
Tabla 3 Tabla de variables empleadas en Events.c
Componentes
Se requiere incluir lo siguiente:
- Tres componentes BitIO
- Un componente TimerInt
(Nota: Para detalles sobre cómo incluir componentes, revisar
la práctica “Encender-apagar un LED”).
Configuración
de los componentes BitIO
Seleccionando el componente que será editado, en el inspector
de componentes se deben hacer los cambios señalados en la Fig. 5.
De acuerdo con el manual de usuario del microcontrolador,
los puertos del LED tricolor son:
Cátodo rojo PTB18
Cátodo verde PTB19
Cátodo azul PTD1
En la figura se muestra el ejemplo para utilizar el cátodo
azul, por lo tanto se selecciona el puerto PTD1, para un mejor manejo dentro
del programa, se asigna al componente un nombre acorde, por ejemplo: LED_Azul.
Se selecciona al componente como salida (Output).
Para utilizar los cátodos rojo y verde, se debe seguir un
procedimiento similar al descrito, empleando los puertos y nombres
correspondientes.
Fig. 5 Configuración del componente BitIO
Configuración
del componente TimerInt
Seleccionando el componente que será editado, en el
inspector de componentes se deben hacer los cambios señalados en la Fig. 6.
Se escoge la fuente: LPTMR0_CMR y se designa un tiempo de
interrupción de 100 ms.
Fig. 6 Configuración del componente de TimerInt
Prueba de
componentes
Una vez concluida la configuración de los componentes, en la
ventana Components, se da click en el ícono de la esquina superior derecha,
para generar e incluir en el Processor Expert el código de los componentes
añadidos al proyecto. (Ver Fig. 7)
Fig. 7 Generación de código para el Processor Expert.
PROGRAMA FINAL
EVIDENCIAS.
(FOTOS)
REFERENCIAS.
“FRDM-KL25Z User's Manual”.
Freescale.
No hay comentarios:
Publicar un comentario