martes, 17 de diciembre de 2013

CLAVE MORSE


DESCRIPCIÓN

Se programará el microcontrolador FRDM-KL25Z para que al ingresar una letra en el teclado de la computadora, se emita luz y sonido durante un cierto tiempo, basado en el Código Morse para cada letra.


OBJETIVO

Emplear la base de tiempos y notas musicales, creada por catedrático de la asignatura, para implementar el abecedario en clave Morse.


REQUERIMIENTOS

HARDWARE

Para esta práctica se requiere el microcontrolador FRDM-KL25Z, que incluye un LED tricolor RGB (Rojo-Verde-Azul), así como una bocina.



ARQUITECTURA DEL SOFTWARE.

Tabla de funciones



Funciones en main
void f_inicio(void);
// Función de inicialización


               
Tabla 1 Funciones empleadas en el programa principal


Diagramas de flujo

Fig. 1 Diagrama de flujo de la función main.





Fig. 2 Diagrama de flujo de la función f_inicio, empleada en main.





Fig. 3 Diagrama de flujo de la función “TI1_OnInterrupt”, en Events.c.





Fig. 4 Diagrama de flujo de la función “AS1_OnRxChar”, en Events.





Fig. 5 Diagrama de flujo de la función “AS1_OnTxChar”, en Events.c.





Fig. 6 Diagrama de flujo de la función “gen_per_notasTicks”, en notas.c.





Fig. 7 Diagrama de flujo de la función “toca_nota”, en notas.c.



Descripción de variables y constantes


Processor Expert
#include "notas.h"

#include "Alfabeto_Morse.h"



extern AS1_TComData Letra_ing;
// Variable externa que guarda la letra ingresada
extern int Enter_ing;
// Variable externa para saber si se oprimió la tecla de Enter


byte Entrada[]="\n\r Introduce una letra y presiona Enter \n\r";
// Mensaje de entrada
byte *ap_men;
// Apuntador para enviar el mensaje de entrada


Letra_Morse *ap_letra_sele,*ap_reset;
// Estructura de tono y tiempo de las letras en código Morse



Tabla 2 Tabla de variables empleadas en el programa principal






Events.c
#include "Events.h"

#include "notas.h"



#define RANGO 41
//Numero de notas, contando el "SILENCIO"
#define TIEMPO 5



extern uint32_t escalas[RANGO];

extern Letra_Morse *ap_letra_sele, *ap_reset;
// Estructura externa de tono y tiempo de las letras en código Morse
byte tempo;
// Variable de tiempo


AS1_TComData Letra_ing;
// Variable que guarda la letra ingresada
int Enter_ing;
// Variable para saber si se oprimió la tecla Enter
extern byte*ap_men;
// Apuntador externo para enviar el mensaje de entrada


void AS1_OnRxChar(void)
AS1_TComData ch;
// Variable local que guarda un carácter


               

Tabla 3 Tabla de variables empleadas en Events.c






notas.c
#include "notas.h"

#include "TU1.h"

#include "TI1.h"

#include "TU2.h"



extern byte tempo;
// Variable externa de tiempo
uint32_t escalas[RANGO];



void gen_per_notasTicks(void) 
unsigned char i;
// Variable local empleada como contador
uint32_t Ticks;

uint32_t factores[]={3444,3649,3866,4096,4340,4598,4871,5161,5468,5793,6137,6502,6889,7298,7732,8192,8679,9195,9742,10321,10935,11585,12274,13004,13777,14596,15464,16384,17358,18390,19484,20643,21870,23171,24548,26008,27555,29193,30929,32768,1};




Tabla 4 Tabla de variables empleadas en notas.c





notas.h
#define RANGO 41
//Numero de notas, contando el "SILENCIO"
#define TEMPO 1

#define FREC_BASE 261.626
//Frecuencia equivalente a la nota mas baja deseada (DO3)
#define NUM_GEN 1.059465
//Factor de multiplicación


typedef enum

{ REs6,  RE6,  DOs6,  DO6,  SI5,  LAs5,  LA5,  SOLs5,  SOL5,  FAs5,  FA5,  MI5,  REs5,  RE5,  DOs5,  DO5,  SI4,  LAs4,  LA4,  SOLs4,  SOL4,  FAs4,  FA4,  MI4,  REs4,  RE4,  DOs4,  DO4,  SI3, LAs3,  LA3,  SOLs3,  SOL3,  FAs3, FA3,  MI3,  REs3,  RE3,  DOs3,  DO3,  SILENCIO } notas;
//Son 41 (RANGO) notas, contando el "SILENCIO"


typedef   struct {byte nota; byte tempo;} Letra_Morse;
// Definición de la estructura "Letra_Morse", con una nota y un tiempo.


typedef   enum

{ SFUSA      =1, FUSA       =2, SCORCHEA   =4, CORCHEA    =8, NEGRA      =16, BLANCA  =32, REDONDA =64,  PUNTO  =8, RAYA  =3*PUNTO }dura;
// Definición de los posibles tiempos que pueden tomar las notas, en duracion de multiplos de 25ms


              

Tabla 5 Tabla de variables empleadas en notas.h


Componentes

Se requiere incluir lo siguiente:
             Un componente TimerUnit_LDD, TU1
             Un componente TimerInt_LDD, TI1
             Un componente BitIO, LED_ROJO
             Un componente AsynchroSerial, AS1
 (Nota: Para detalles sobre cómo incluir componentes, revisar la práctica “Encender-apagar un LED”).


Configuración del componente TU1

Seleccionando el componente que será editado, en el inspector de componentes se deben hacer los cambios señalados en la Fig. 3.8.

Fig. 8 Configuración del componente TU1.


Configuración del componente TI1

Seleccionando el componente que será editado, en el inspector de componentes se deben hacer los cambios señalados en la Fig. 9.

Fig. 9 Configuración del componente TI1.


Configuración del componente BitIO

Seleccionando el componente que será editado, en el inspector de componentes se deben hacer los cambios señalados en la Fig. 10.

Fig. 10 Configuración del componente BitIO.


Configuración del componente AS1

Seleccionando el componente que será editado, en el inspector de componentes se deben hacer los cambios señalados en la Fig. 11.

Fig. 11 Configuración del componente AS1.


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. 12)

Fig. 12 Generación de código para el Processor Expert.

PROGRAMA FINAL

Código
EVIDENCIAS.

  (FOTOS)


REFERENCIAS
1.            “FRDM-KL25Z User's Manual”. Freescale.
2.            http://www.taringa.net/posts/info/1875087/Como-aprender-codigo-Morse.html
3.            http://www.asifunciona.com/tablas/codigo_morse/codigo_morse_1.htm
4.            http://colegiodepilotos.org.mx/cabina/bolet35/05.pdf

No hay comentarios:

Publicar un comentario