Post on 14-Oct-2014
description
MICROCONTROLADORES
M.Sc. César Augusto Peña C.
Profesor de planta – Ingeniería mecatrónicaUniversidad de Pamplona
GENERADOR DE BAUDIOS
FrecuenciaBaudios = Fosc/ ( K * ( X + 1 ) )
X = Valor cargado en el registro SPBRG
K = 64 si el Bit BRGH = 0 (Baja velocidad)
K = 16 si el Bit BRGH = 1 (Alta velocidad)
GENERADOR DE BAUDIOSDespejando X:
X = ( Fosc/ (FrecuenciaBaudios* K) ) - 1
Con BRGH = 1 tendremos K = 16, obtener una frecuencia de 9600 Bps
X = ( 4 Mhz / (9600 * 16) ) – 1
X = 25.042 Aproximando 25
GENERADOR DE BAUDIOSReemplazando X por 25:
FrecuenciaBaudios = 4Mhz/ ( 16 * ( 25 + 1 ) )
FrecuenciaBaudios = 9615.38 Bps
Error = (9615.38 – 9600)/9600
Error = 0.16025 %
REGISTRO TXSTA
CSRC TX9 TXEN SYNC - BRGH TRMT TX9D
CSRC: Bit de selección de reloj, en modo asincrono no influye
TX9: Habilita el bit 9 de transmisión1 – Selecciona transmisión de 9 bits.0 – Selecciona transmisión de 8 bits.
TXEN: Activa la transmisión1 – Transmisión activada0 – Transmisión desactivada
SYNC: Bit de selección del modo del USART1 – Modo síncrono0 – Modo asíncrono
REGISTRO TXSTA
CSRC TX9 TXEN SYNC - BRGH TRMT TX9D
BRGH: Bit de selección de la velocidad en baudios1 – Alta velocidad0 – Baja velocidad
TRMT: Bit de estado del registro de desplazamiento de transmisión1 – TSR vacio0 – TSR NO vacio
TX9D: Bit 9 del dato a transmitir
REGISTRO RCSTA
SPEN RX9 SREN CREN ADDEN FERR OERR RX9D
SPEN: Habilitación del puerto serie1 – Puerto serie habilitado0 – Puerto serie No habilitado
RX9: Habilita el bit 9 de recepción1 – Selecciona recepción de 9 Bits0 – Selecciona recepción de 8 Bits
SREN: No influye en modo asíncrono
CREN: Configura recepción continua1 – Habilita modo de recepción continua0 – Deshabilita modo de recepción continua
PROGRAMA PARA RECIBIR Y TRANSMITIR DATOS AL PC
• Si utiliza el PIC16f628 no olvide apagar los comparadores con el registro CMCON, Si utiliza el puerto A como E/S digitales.
• Configure los pines RX (RB1) como entrada y TX (RB2) como salida.
• Configurar modo asíncrono SYNC = 0 (TXSTA)• Especificar la velocidad a través del registro SPBRG y el Bit BRGH
de TXSTA• Se habilita el puerto serie (SPEN = 1) y se selecciona el modo de
recepción continua (CREN = 1)• Activar Transmisión (TXEN = 1)• Habilitar Interrupciones correspondidentes si se quiere, en el
registro PIE1: bit RCIE(Recepción) y TXIE(transmisión)
PROGRAMA PARA RECIBIR Y TRANSMITIR DATOS AL PC
Para el programa que se propone solamente la recepción se configura para interrupción.
Por lo tanto cuando el PIC termina de recibir un dato del computador se produce una interrupción donde se debe tratar bajando la bandera RCIF para volver a recibir y a la vez se lee el dato enviado por el PC del registro RCREG
Para la transmisión basta con bajar la bandera TXIF e insertar el dato a transmitir en el registro TXREG y esperar a que el bit TMRT del registro TXSTA vuelva a 1
REGISTRO DE CONTROL DE INTERRUPCIONES INTCON (PIC16F628)
GIE PEIE T0IE INTE RBIE T0IF INTF RBIF
PEIE: Permiso de interrupciones de periféricos1 – Permite interrupciones de periféricos0 – Prohíbe interrupciones de periféricos
REGISTRO PIE1 (PIC16F628)
EEIE CMIE RCIE TXIE - CCP1IE TMR2IE TMR1IE
RCIE: Bit de activación de la interrupción por recepción USART1 – interrupción activa0 – interrupción inactiva
TXIE: Bit de activación de la interrupción por transmisión USART1 – interrupción activa 0 – interrupción inactiva
REGISTRO PIR1 (PIC16F628)
EEIF CMIF RCIF TXIF - CCP1IF TMR2IF TMR1IF
RCIF: Bandera de activación de la interrupción por recepción USART1 – El buffer de recepción esta lleno0 – El buffer de recepción esta vacio
TXIF: Bandera de activación de la interrupción por transmisión USART1 – El buffer de recepción esta vacio0 – El buffer de recepción esta lleno
PROGRAMA PARA RECIBIR Y TRANSMITIR DATOS AL PC
;AUTOR: CÉSAR AUGUSTO PEÑA C;PIC: 16F268;FUNCION: PROGRAMA QUE RECIBE DATOS DEL COMPUTADOR, LOS MUESTRA POR EL PUERTO A ;Y LOS VUELVE A ENVIAR AL COMPUTADOR;CARACTERISTICAS: ;OSCILLATOR: INTRC I/O;WATCHDOG TIMER: OFF;POWER UP TIMER: ON;BROWN OUT DETECT: DISABLE;MASTER CLEAR ENABLE: DISABLE;LOW VOLTAGE PROGRAM: DISABLE;DATA EE READ PROTECT: DISABLE;CODE PROTECT: OFF
list p=16f628 ;Tipo de procesadorINCLUDE "P16F628.Inc" ;Librerias de Registros del PIC
;**************************** DEFINICION DE REGISTROS ***********************************CBLOCK .32
LEIDO_COMPendc
RX equ 1 ;PORTB<1>: Pin RX PIC 16F628TX equ 2 ;PORTB<2>: Pin TX PIC 16F628;****************************************************************************************
org 00goto INICIO
PROGRAMA PARA RECIBIR Y TRANSMITIR DATOS AL PC
org 04bcf STATUS, RP1 bcf STATUS, RP0 ;Banco 0
INTER_RX btfss PIR1,RCIF ;Interrupcion producida por recepcion?goto REGRESAR ;No. Otro tipo de interrupciónbcf PIR1,RCIF ;Si. Bajar bandera movf RCREG,W ;Lectura dato recibidomovwf LEIDO_COMP ;carga valor leido del computador a este registromovwf PORTA ;Mostrar el valor por el puerto Acall TX_REG ;llama subrutina para enviar el dato
REGRESAR retfie ;retorna de la interrupcion.
;Rutina de transmisión del dato contenido en W al PCTX_REG bcf PIR1,TXIF ;baja Bandera de transmisión
movwf TXREG ;Carga el valor al registro a transmitirbsf STATUS, RP0 ;Banco 1bcf STATUS, RP1
TX_ON btfss TXSTA,TRMT ;Registro transmitidogoto TX_ON ;No.bcf STATUS, RP0 ;Banco 0return
PROGRAMA PARA RECIBIR Y TRANSMITIR DATOS AL PC
INICIO clrf PORTA ;Inicializa el puerto Amovlw 0X07 ;Apaga los comparadores ymovwf CMCON ;Activa los pines como I/Obsf STATUS,RP0 ;Banco 1clrf TRISA ;Puerto A como salidaclrf TRISB ;Puerto B como salidabsf TRISB,RX ;Configura pin de RXbcf TRISB,TX ;Configura pin de TXmovlw b'00100100' ;Configuracion USARTmovwf TXSTA ;y activacion de transmisionmovlw .25 ;9600 baudiosmovwf SPBRGbsf PIE1,RCIE ;Habilitacion interrupcion RXbcf STATUS,RP0 ;Banco 0clrf PORTAclrf PORTB
PROGRAMA PARA RECIBIR Y TRANSMITIR DATOS AL PC
movlw b'10010000' ;Configuracion de la usartmovwf RCSTA ;Habilitacion del puerto serie SPEN<7>
;Modor de recepcion continua CREN<4>movlw b'11000000'movwf INTCON ;Permiso Interrupciones generales GIE<7>
;Permiso perifericos que NO se controlan con INTCON
bsf PORTA,0bsf PORTA,2movlw .7 ;Carga Valor decimaladdlw 30h ;Transformacion ASCIIcall TX_REG ;Envia dato al computador
ciclo nopgoto cicloEND
PROGRAMA MATLAB
% NOMBRE: uC_PC.m% AUTOR: M.Sc. Cesar Augusto Peña C% FUNCION: Envia un caracter (ASCII) por el puerto serial 1 del computador% y recibe un byte binario
clc % Borra pantallaPUERTO1 = serial('COM1'); % Especifica que se trabaja con el puerto serial 1set(PUERTO1,'BaudRate',1200); % 1200 Baudiosfopen(PUERTO1) % Abre el puertofprintf(PUERTO1,'7') % Envia el caracter ASCII en este caso '7'X = fread(PUERTO1,1); % X = dato binario recibido por el computadorfclose(PUERTO1) % Cierra el puerto