microcontroladores 6ta parte

21
MICROCONTROLADORES M.Sc. César Augusto Peña C. Profesor de planta – Ingeniería mecatrónica Universidad de Pamplona

Upload: jair-eviel-barrios-deluquez

Post on 14-Oct-2014

2.162 views

Category:

Documents


2 download

DESCRIPTION

TUTORIAL MICROCONTROLADORES!Bueno!, hola a todos...a continuacion un pequeño tutorial que me ha facilitado un profesor de mi universidad...esta pero BUENO. MIRENLO Y ME CUENTANGRACIAS ing. Leonardo mejia y Cesar augusto Peña

TRANSCRIPT

MICROCONTROLADORES

M.Sc. César Augusto Peña C.

Profesor de planta – Ingeniería mecatrónicaUniversidad de Pamplona

TRANSMISIÓN Y RECEPCIÓN ASÍNCRONA SERIAL

TRANSMISIÓN Y RECEPCIÓN ASÍNCRONA SERIAL

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 %

BAUDIOS (BRGH = 1)

BAUDIOS (BRGH = 0)

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