DESCRIPCION
Se
usará el led RGB propio de la tarjeta, para simular la secuencia de encendido
de luces de un semáforo.
OBJETIVO
Esta práctica tiene la finalidad de
mostrar el uso de apuntadores para ejecutar secuencias programadas.
REQUERIMIENTOS:
Hardware:
1 – Tarjeta
Freescale FRDM-KL25Z128 (48 Mhz).
2 – Conector
USB de la tarjeta Freedom.
Software:
- CodeWarrior
for MCU
- Version:
10.5
- Build
Id:130916
- Arquitectura
Eclipse.
- OpenSDA
DIAGRAMAS DE FLUJO
extern int timmer;
|
Variable de tiempo para la
interrupción.
|
int sig_task;
|
Variable que ejecuta las
tareas de cambio de color.
|
int color_led;
|
Variable para el color de led.
|
LED_ROJO:BitIO
|
LED ROJO, PTC18.
|
LED_VERDE:BitIO
|
LED VERDE, PTC19.
|
LED_AZUL:BitIO
|
LED AZUL, PTD1.
|
TI1:TimerInt
|
Interrupción 100ms.
|
Tabla de funciones
Apuntador para cambio de colores.
|
void (*ap_func[3])(void)={f_task_rojo,
f_task_verde, f_task_amarillo};
|
Función de inicio.
|
void inicio(void)
{
sig_task=task_rojo;
timmer=0;
}
|
Función prende rojo.
|
void f_task_rojo(void)
{
timmer=T_ROJO;
f_LED(rojo);
sig_task=task_verde;
}
|
Función prende verde.
|
void f_task_verde(void)
{
timmer=T_VERDE;
f_LED(verde);
sig_task=task_amarillo;
}
|
Función prende amarillo.
|
void f_task_amarillo(void)
{
timmer=T_AMARILLO;
f_LED(amarillo);
sig_task=task_rojo;
}
|
Función combinación de colores.
|
void f_LED(int color_led)
{
if (color_led&b_rojo)
LED_ROJO_ClrVal();
else
LED_ROJO_SetVal();
if (color_led&b_verde)
LED_VERDE_ClrVal();
else
LED_VERDE_SetVal();
if (color_led&azul)
LED_AZUL_ClrVal();
else
LED_AZUL_SetVal();
}
|
Código
Evidencia Fotografica
Referencias
-
KL25
Sub-Family Reference Manual.
-
http://www.freescale.com/
No hay comentarios:
Publicar un comentario