• No results found

Low Performance Degradation or Short Execution Time?

9.3 Performance Testing

9.3.3 Low Performance Degradation or Short Execution Time?

La USART, es un módulo de comunicación serial estándar, de forma asíncrona, está característica lo hace muy apetecido dado que requiere un solo medio de transmisión para enviar información, y no requiere un medio para el reloj. La señal de reloj, o sincronismo lo deben asumir, independiente mente cada uno de los elementos, el transmisor y el receptor. Otra ventaja de este módulo es que cuenta con comunicación full-duplex, es decir que puede transmitir y recibir información al mismo tiempo. Para este propósito se usan dos medios de transmisión dedicados, uno solo para transmitir y uno solo para recibir.

La comunicación síncrona cuenta con las siguientes características: un bit de inicio o de start, que siempre es un 0 lógico, 8 o 9 bits de datos para el caso puntual de los PIC, y 1, 1.5 o 2 bits de fin o stop. Por último la velocidad de transmisión que debe estár definida con el mismo valor en los dos dispositivos que se comunican, está por defecto en casi toda comunicación es de 9600 bps, sin embargo esto no es una regla puede ser mayor o menor.

En la siguiente gráfica se puede apreciar el comportamiento de la transmisión de un dato con este protocolo:

Figura 7-3

Este protocolo es utilizado por los ordenadores personales y otros dispositivos, y se conoce como RS232, para el caso puntual de este los niveles de tensión eléctrica son diferentes al microcontrolador. El protocolo RS232, representa el valor de un 0 lógico con una tensión de +12 voltios, y el valor de un 1 lógico con -12 voltios. Los ordenadores personales y los demás dispositivos que implementan el puerto RS232, usan un conector DB9, que tiene 9 pines, los cuales se identifican en la siguiente figura:

Figura 7-4 Pin Uso 1 DCD 2 RXD 3 TXD 4 DTR 5 GND 6 DSR 7 RTS 8 CTS 9 No usado Tabla 7-1

Para fines de comunicación asíncrona se debe configurar las conexiones de la siguiente forma:

Para estáblecer y acoplar la comunicación de un PIC, con un dispositivo RS232, se debe usar un convertidor conocido como MAX232. La implementación de este, se debe hacer como se aprecia en la siguiente figura:

Circuito 7-2

Para el uso de este protocolo de comunicación el compilador MikroC PRO, cuenta con la librería: UART, está disponible en la paleta de librerías y cuenta con las siguientes funciones para su uso:

UART1_Init(const unsigned long baud_rate);, Está función inicializa el módulo USART, y

estáblece la velocidad de comunicación definida en el parámetro: baud_rate.

La función: char UART1_Data_Ready();, está función determina si hay un dato listo para ser leído, en el búfer de llegada del módulo, si la función retorna 1 el dato puede ser leído, de lo contrario no hay datos nuevos en el búfer.

La función: char UART1_Tx_Idle();, está función estáblece si el búfer de transmisión se encuentra ocupado enviando un dato, para esto retorna 1 si el búfer está ocupado, o 0 si el módulo está disponible para enviar un nuevo dato.

La función: char UART1_Read();, está función retorna el valor del búfer de entrada, es decir que sirve para leer un dato de entrada.

La función: UART1_Read_Text(char *Output, char *Delimiter, char Attempts);, está función lee una cadena de caracteres y la guarda en el apuntador Output, el apuntador Delimiter, es un apuntador a una cadena de caracteres que contiene el texto definido como fin de la cadena de texto de entrada, el parámetro Attempts, define la longitud de la cadena de caracteres del delimitador de fin de cadena Delimiter.

La función: UART1_Write(char _data);, transmite el dato _data ingresado en el parámetro de entrada, por la USART.

La función: UART1_Write_Text(char * UART_text);, Transmite una cadena de texto finalizada con el carácter nulo o 0. Está cadena de texto es entregada por medio del parámetro UART_text. Para realizar el siguiente ejemplo se debe implementar en ISIS, el circuito con los siguientes dispositivos: PIC 16F877A, y el instrumento virtual: VIRTUAL TERMINAL. Con estos dos elementos se construye el siguiente circuito:

Circuito 7-3

El instrumento VIRTUAL TERMINAL, es un simulador de comunicación serial y tiene un comportamiento similar a la herramienta HiperTerminal de Windows. Este instrumento permite editar las características de la comunicación como: el número de bits de datos, la velocidad de transmisión, el número de bits de parada, entre otros. Sin embargo el instrumento está configurado por defecto con una velocidad de 9600 bps, y características listas para usar con la USART del PIC.

Para comprobar el funcionamiento de este módulo se puede compilar y simular el siguiente ejemplo:

void main( void ) {

//Declaración de variables. char DATO;

UART1_Init(9600); //Inicio del módulo USART. //Se transmite el texto: de bienvenida.

UART1_Write_Text("Bienvenido al simulador:"); UART1_Write(13); //Se transmite el ASCII del ENTER.

UART1_Write(10); //Se transmite el ASCII del retroceso del carro. //Se trasmite el texto de pulsar tecla.

UART1_Write(13); //Se transmite el ASCII del ENTER.

UART1_Write(10); //Se transmite el ASCII del retroceso del carro. while(1)//Bucle infinito.

{

//La sentencia if evalúa si un dato está listo para leer. if(UART1_Data_Ready()==1)

{

//Se lee el DATO del bufer. DATO = UART1_Read();

//Se imprime el texto de realimentación. UART1_Write_Text("Usted pulso la tecla: ");

UART1_Write(DATO); //Se transmite el DATO recibido. UART1_Write(13); //Se transmite el ASCII del ENTER.

UART1_Write(10); //Se transmite el ASCII del retroceso del carro. }

} }

Durante la simulación el usuario puede enviar datos por el terminal virtual y ver la realimentación que el PIC, emite.