Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Txusart

3,297 views

Published on

Published in: Education
  • Be the first to comment

  • Be the first to like this

Txusart

  1. 1. CONTROL DE BRAZO ROBOT POR TX USART <ul><li>Modulo USART: Universal Synchronous/Asynchronous Receiver/Transmitter </li></ul><ul><li>Características Generales </li></ul><ul><ul><li>Los datos se envían bit a bit por una misma línea durante un tiempo fijo. </li></ul></ul><ul><ul><li>La velocidad de transmisión se indica en baudios (número de bits enviados por segundo). </li></ul></ul><ul><ul><li>La transferencia puede ser síncrona o asíncrona. </li></ul></ul><ul><ul><ul><li>Síncrona: Se envía la señal de reloj para sincronizar cada bit. </li></ul></ul></ul><ul><ul><ul><li>Asíncrona: Se necesitan “relojes” en el emisor y el receptor de la misma frecuencia y en fase. </li></ul></ul></ul>
  2. 2. PICmicro GAMA MEDIA: PIC16F87X <ul><li>Modulo USART: Universal Synchronous/Asynchronous Receiver/Transmitter </li></ul><ul><li>Características Generales </li></ul><ul><ul><li>Se emplean dos registros de desplazamiento (uno en el emisor y otro en el receptor) encadenados para la conversión paralelo/serie en la emisión y serie/paralelo en la recepción. </li></ul></ul><ul><ul><li>Se puede llevar a cabo varios tipos de sincronización: </li></ul></ul><ul><ul><ul><li>De los sucesivos bits. </li></ul></ul></ul><ul><ul><ul><li>De cada paquete de bits (8 ó 9 bits) </li></ul></ul></ul><ul><ul><li>Se envía la señal de reloj si la distancia entre Emisor y Receptor es corta. </li></ul></ul><ul><ul><ul><li>Así se consiguen menores retardos en las transiciones y mejores flancos en la señal de reloj recibida. </li></ul></ul></ul><ul><ul><li>Posibles codificaciones de cada bit. </li></ul></ul><ul><ul><ul><li>NRZ: Nivel alto: 1 / Nivel bajo: 0 </li></ul></ul></ul><ul><ul><ul><li>NRZI: Cambio de nivel: 1 / Sin cambio de nivel: 0 </li></ul></ul></ul><ul><ul><ul><li>RZ: Impulso: 1 / Sin impulso: 0 </li></ul></ul></ul>
  3. 3. PICmicro GAMA MEDIA: PIC16F87X <ul><li>Modulo USART: Universal Synchronous/Asynchronous Receiver/Transmitter </li></ul><ul><li>Transferencia Asíncrona </li></ul><ul><ul><li>Se emplean relojes de igual frecuencia (se acuerda y se configura la velocidad de transmisión) pero también es necesario que estén en fase (sincronizados). </li></ul></ul><ul><ul><li>Cada paquete de bits de tamaño fijo se “enmarca” con bits de arranque y de parada que sirven para sincronizar los relojes del emisor y del receptor. </li></ul></ul><ul><ul><li>La línea de datos está inactiva a “1”. Si se desea enviar un dato se manda un bit de arranque, que sitúa a “0” la línea durante el tiempo correspondiente a un bit (START). </li></ul></ul><ul><ul><li>Al finalizar el envío de un dato, la línea se sitúa a “1” al menos durante el tiempo de un bit: bit de parada (STOP). </li></ul></ul>
  4. 4. PICmicro GAMA MEDIA: PIC16F87X <ul><li>Modulo USART: Universal Synchronous/Asynchronous Receiver/Transmitter </li></ul><ul><li>Comunicación serie asíncrona en microcontroladores PIC </li></ul><ul><ul><li>Se va a implementar haciendo uso del módulo USART ( Universal Synchronous/Asynchronous Receiver/Transmitter ). También se conoce como Serial Communications Interface (SCI). Es uno de los dos módulos de E/S serie del PIC. </li></ul></ul><ul><ul><li>El módulo USART puede actuar como sistema asíncrono full duplex . </li></ul></ul><ul><ul><ul><li>Permite comunicarse con periféricos como CRTs y PCs. También puede configurarse como sistema síncrono half duplex. Para comunicación con circuitos A/D o D/A, memorias serie EEPROM, etc. </li></ul></ul></ul><ul><ul><li>Terminales asociados: RC6/TX/CK y RC7/RX/DT. </li></ul></ul><ul><ul><li>El módulo USART también permite localizar direcciones de 9 bits. </li></ul></ul>
  5. 5. PICmicro GAMA MEDIA: PIC16F87X Modulo USART: Universal Synchronous/Asynchronous Receiver/Transmitter <ul><li>Registros Asociados: </li></ul><ul><ul><li>SPBRG : Generador de Baud rate </li></ul></ul><ul><ul><li>TXSTA : Estado de transmisión y control. </li></ul></ul><ul><ul><li>RCSTA : Estado de recepción y control. </li></ul></ul><ul><ul><li>TXREG : Registro de datos de transmisión </li></ul></ul><ul><ul><li>RCREG : Registro de datos de recepción. </li></ul></ul><ul><ul><li>PIR1 : Flag de interrupción. </li></ul></ul><ul><ul><li>PIE1 :Habilitación interrupción. </li></ul></ul>
  6. 6. PICmicro GAMA MEDIA: PIC16F87X <ul><li>Modulo USART: Universal Synchronous/Asynchronous Receiver/Transmitter </li></ul><ul><li>Registro TXSTA (98h) </li></ul><ul><li>Bit 7 En modo asíncrono no interviene. </li></ul><ul><li>bit 6 TX9 : Bit de habilitación de la transmisión de 9 bits </li></ul><ul><li>0: Transmisión de 8 bits 1: Transmisión de 9 bits </li></ul><ul><li>bit 5 TXEN : Bit de habilitación de la transmisión </li></ul><ul><li>0: Transmisión deshabilitada 1: Transmisión habilitada </li></ul><ul><li>bit 4 SYNC : Bit de selección del modo de funcionamiento </li></ul><ul><li>0: Transmisión asíncrona 1: Transmisión síncrona </li></ul><ul><li>bit 2 BRGH : Bit de selección de alto valor de baudios </li></ul><ul><li>0: Baja velocidad 1: Alta velocidad </li></ul><ul><li>bit 1 TRMT : Bit de estado del registro TSR </li></ul><ul><li>0: TSR lleno 1: TSR vacío </li></ul><ul><li>bit 0 TX9D : 9 bit de datos transmitido. </li></ul><ul><li>Puede ser el bit de paridad, por ejemplo </li></ul>
  7. 7. PICmicro GAMA MEDIA: PIC16F87X Modulo USART: Universal Synchronous/Asynchronous Receiver/Transmitter
  8. 8. PICmicro GAMA MEDIA: PIC16F87X <ul><li>Modulo USART: Universal Synchronous/Asynchronous Receiver/Transmitter </li></ul><ul><li>Registro RCSTA (18h) </li></ul><ul><li>bit 7 SPEN : Bit de habilitación del puerto serie (RC6:RC7 como puerto serie) </li></ul><ul><li>0:Deshabilitado 1:Habilitado </li></ul><ul><li>bit 6 RX9 : Bit de habilitación de la recepción de 9 bits </li></ul><ul><li>0:Recepción de 8 bits 1:Recepción de 9 bits </li></ul><ul><li>bit 4 CREN : Bit de habilitación de recepción continua </li></ul><ul><li>0:Deshabilitada 1:Habilitada </li></ul><ul><li>bit 3 ADDEN : Bit de habilitación de detección de dirección </li></ul><ul><li>0:Deshabilitada 1:Habilitada ( Sólo si RX9=1) </li></ul><ul><li>bit 2 FERR : Bit de error de </li></ul><ul><li>0:No hubo error 1:Sí hubo error ( Se actualiza al leer RCREG) </li></ul><ul><li>bit 1 OERR : Bit de error de </li></ul><ul><li>0:No hubo error 1:Sí hubo error ( Se pone a 0 si CREN ← 0) </li></ul><ul><li>bit 0 RX9D : 9 bit de datos transmitido. </li></ul>
  9. 9. PICmicro GAMA MEDIA: PIC16F87X <ul><li>Modulo USART: Universal Synchronous/Asynchronous Receiver/Transmitter </li></ul><ul><li>Comunicación serie asíncrona con la USART </li></ul><ul><ul><li>La información se transmite en formato NRZ: Se transmite primero el bit menos significativo. </li></ul></ul><ul><ul><li>El emisor y el receptor son funcionalmente independientes: Aunque comparten el mismo formato de datos y la misma velocidad de la comunicación (baudios). </li></ul></ul><ul><ul><li>El receptor incorpora un circuito de muestreo de la línea de datos que lee el valor del bit en la mitad del periodo de muestreo. Así se eliminan posibles errores debidos a las diferencias en los relojes del emisor y el receptor. </li></ul></ul><ul><ul><li>No se genera paridad mediante hardware. Si se quiere enviar como 9º bit el bit de paridad, el usuario debe calcularlo e interpretarlo en el software. </li></ul></ul>
  10. 10. EJEMPLOS 1 <ul><li>; PRUEBA DEL BUFFER TRANSMISOR </li></ul><ul><li>LIST P=16F877 </li></ul><ul><li>INCLUDE <P16F877.INC> </li></ul><ul><li>INCLUDE <MACROS.INC> </li></ul><ul><li>ORG 0000H </li></ul><ul><li>banco 1 </li></ul><ul><li>bcf TRISC,6 ; RC6 como salida </li></ul><ul><li>mov SPBRG,.129 ; Vtx = 9600bps </li></ul><ul><li>mov TXSTA,B'00100100' ; TX-ON / 8 bits /BRGH=1 </li></ul><ul><li>banco 0 </li></ul><ul><li>bsf RCSTA,SPEN ; SPEN = 1 </li></ul><ul><li>;============================================ </li></ul><ul><li>REPITE </li></ul><ul><li>movlw 'A' </li></ul><ul><li>call TX_DATO </li></ul><ul><li>goto REPITE </li></ul><ul><li>;============================================ </li></ul><ul><li>TX_DATO </li></ul><ul><li>banco 1 </li></ul><ul><li>btfss TXSTA,TRMT </li></ul><ul><li>goto $-1 </li></ul><ul><li>banco 0 </li></ul><ul><li>movwf TXREG </li></ul><ul><li>return </li></ul><ul><li>END </li></ul>
  11. 11. <ul><li>;retransmite todo lo que el pc le envia </li></ul><ul><li>LIST P=16F877 </li></ul><ul><li>INCLUDE<P16F877.INC> </li></ul><ul><li>INCLUDE<MACROPIC.INC> </li></ul><ul><li>CBLOCK 0X20 </li></ul><ul><li>ENDC </li></ul><ul><li>ORG 0000H </li></ul><ul><li>call inicio_TX </li></ul><ul><li>call inicio_RX </li></ul><ul><li>INFINITO </li></ul><ul><li>call WAIT_RX ;espera un dato y lo almacena en W </li></ul><ul><li>call TX_DATO ;TRANSMITE EL DATO DE W </li></ul><ul><li>goto INFINITO </li></ul><ul><li>INCLUDE<UART.ASM> </li></ul><ul><li>INCLUDE<ARITH.ASM> </li></ul><ul><li>INCLUDE<LCD.ASM> </li></ul><ul><li>INCLUDE<RETARDO.ASM> </li></ul><ul><li>END </li></ul>
  12. 12. USO DE SENSORES ANALOGO DIGITAL <ul><li>;muestra en el LCD el voltaje aplicado al CH-5 </li></ul><ul><li>;EL MACRO PARA AD DEVUELVE EN W EL RESULTADO DE ;MUESTREO A 8 BITS </li></ul><ul><li>LIST P=16F877 </li></ul><ul><li>INCLUDE<P16F877.INC> </li></ul><ul><li>INCLUDE<MACROPIC.INC> </li></ul><ul><li>INCLUDE<MACRO_LCD.INC> </li></ul><ul><li>INCLUDE<CONV_AD.INC> </li></ul><ul><li>CBLOCK 0X20 </li></ul><ul><li>ENDC </li></ul><ul><li>ORG 0000H </li></ul><ul><li>INIT_AD XTAL_20MHZ,CH5 </li></ul><ul><li>REPITE </li></ul><ul><li>CLS </li></ul><ul><li>PUT 'V' </li></ul><ul><li>PUT '=' </li></ul><ul><li>call muestra_AD_8 </li></ul><ul><li>movwf AARGB0 </li></ul><ul><li>mov BARGB0,.196 </li></ul><ul><li>call MUL8X8_U </li></ul><ul><li>movr DATOC_H,AARGB0 </li></ul><ul><li>movr DATOC_L,AARGB1 </li></ul><ul><li>call BITS16_BCD </li></ul><ul><li>call ENVIA_VOLTAJE_8 </li></ul><ul><li>call ret50ms </li></ul><ul><li>goto REPITE </li></ul><ul><li>INCLUDE <LCD.ASM> </li></ul><ul><li>INCLUDE <RETARDO.ASM> </li></ul><ul><li>INCLUDE <CONV_AD.ASM> </li></ul><ul><li>INCLUDE <MATH_877.INC> </li></ul><ul><li>INCLUDE <ARITH.ASM> </li></ul><ul><li>END </li></ul>
  13. 13. EJEMPLO2 <ul><li>;retransmite todo lo que el pc le envia </li></ul><ul><li>LIST P=16F877 </li></ul><ul><li>__CONFIG 3F32 </li></ul><ul><li>INCLUDE<P16F877.INC> </li></ul><ul><li>INCLUDE<MACROPIC.INC> </li></ul><ul><li>CBLOCK 0X20 </li></ul><ul><li>ENDC </li></ul><ul><li>ORG 0000H </li></ul><ul><li>call inicio_TX </li></ul><ul><li>call inicio_RX </li></ul><ul><li>CALL inicio_LCD </li></ul><ul><li>INFINITO </li></ul><ul><li>call WAIT_RX ;espera un dato y lo almacena en W </li></ul><ul><li>call EnviaCarLCD </li></ul><ul><li>call TX_DATO ;TRANSMITE EL DATO DE W </li></ul><ul><li>goto INFINITO </li></ul><ul><li>INCLUDE<UART.ASM> </li></ul><ul><li>INCLUDE<ARITH.ASM> </li></ul><ul><li>INCLUDE<LCD.ASM> </li></ul><ul><li>INCLUDE<RETARDO.ASM> </li></ul><ul><li>END </li></ul>
  14. 14. ENVIO Y RECEPCION DE PULSOS DE CONTROL

×