SlideShare una empresa de Scribd logo
1 de 17
Descargar para leer sin conexión
INSTITUTO POLITÉCNICO NACIONAL
CENTRO DE INVESTIGACIÓN EN COMPUTACIÓN
1° EVALUACIÓN
Microprocesadores
MCIC
Hernández Lara Derlis
Aplicación de los periféricos de un microcontrolador, uso del TMR0, ADC
y USART de un PIC16F.
Profesor:
Dr. Alfonso Gutiérrez Aldana
MÉXICO, D.F. MAYO 2014
Derlis Hernández Lara
2
Conociendo los microcontroladores PIC16F
En este trabajo se describe la práctica realizada para la primera evaluación de la materia
de microprocesadores. Se vio durante el curso correspondiente a este periodo, como
configurar y utilizar algunos de los periféricos más usados de un PIC, como los son el
TMR0, el ADC y el USART.
Introducción:
Se está trabajando con el PIC16F887 en específico, este es un microcontrolador de 8
bits de mediano rango, con 40 terminales y con una arquitectura Harvard lo que indica
que tiene dos memorias, una para datos y una de programa, además utiliza instrucciones
RISC (del inglés Reduced Instruction Set Computer, en español Computador con
Conjunto de Instrucciones Reducidas).
TMR0
El microcontrolador PIC16F887 dispone de tres temporizadores/contadores
independientes, denominados Timer0, Timer1 y Timer2.
El temporizador Timer0 tiene una amplia gama de aplicaciones en la práctica. Sólo unos
pocos programas no lo utilizan de alguna forma. Es muy conveniente y fácil de utilizar
en programas o subrutinas para generar pulsos de duración arbitraria, en medir tiempo o
en contar los pulsos externos (eventos) casi sin limitaciones.
Es un módulo que sirve como contador o como temporizador de 8 bits.
Funcionando como temporizador el TMR0 es un registro donde se puede almacenar un
valor y este se va incrementando de 1 en 1 con los ciclos de instrucción, es decir, con
cada ciclo se incrementa en 1 el TMR0, cuando la cuenta llega a 255 y pasa a 0 (cero) se
produce una interrupción por desborde del TMR0, recordando que en un registro de 8
bits el valor más alto que se puede almacenar es 255 y que si se incrementa estando en
255 pasa a cero, y es a esto a lo que se le denomina desborde.
El TMR0 puede funcionar de dos maneras; como contador de eventos o como
temporizador. Para seleccionar de qué manera queremos que funcione utilizamos el bit
T0CS del registro OPTION_REG.
Cuando se selecciona TMR0 como contador de eventos, mediante el pin T0SE se indica
porque flanco, de subida o bajada, en la señal aplicada en el pin correspondiente, se
desea incrementar el contador.
La señal que lleva al TMR0 se puede preescalar mediante un divisor, este divisor se
puede asignar tanto al WDT como al TMR0 mediante el bit PSA del OPTION_REG. El
valor del rango del divisor viene determinado por los bits PS2:PS0 según la tabla
correspondiente.
El TMR0 es capaz de realizar una interrupción cada vez que pasa de 255 a 0, para
permitirla hay que poner a 1 el bit T0IE del registro INTCON y el flag (bandera) de la
interrupción es el T0IF del registro INTCON.
Derlis Hernández Lara
3
ADC
La conversión analógica-digital (CAD) consiste en la transcripción de señales
analógicas en señales digitales, con el propósito de facilitar su
procesamiento (codificación, compresión, etc.) y hacer la señal resultante (la digital)
más inmune al ruido y otras interferencias a las que son más sensibles las señales
analógicas.
Un ADC en un microcontrolador mide el voltaje V en un pin (que tendrá que estar
declarado como entrada con el correspondiente registro TRISA) y lo convierte en un
número. El voltaje se mide con referencia a un voltaje mínimo, Vref(-) , y a un voltaje
máximo, Vref (+). Normalmente Vref- suele ser Vss=GND=0V y Vref+ = Vcc = 5V,
pero pueden usarse otros voltajes de referencia.
La resolución del ADC es una característica fundamental y nos dice el número de
niveles con los que cubrimos el intervalo [0,1]. Por ejemplo, en los PIC solemos tener
una resolución de 10 bits, que representan 2^10=1024 niveles. El intervalo real [0,1) se
aplicaría al intervalo [0,1023]. Si asumimos un rango de 5V, tendremos que la
resolución de cada nivel es de r=5/1024 V=4.88 mV. Según la documentación de
Microchip (esto puede variar para otros microcontroladores) cualquier voltaje entre [0 y
r] (o por debajo de 0, lo que corresponde a V<Vref-) se cuantificaría en el nivel 0.
Entre r y 2r tendríamos una salida de nivel 1. Así hasta llegar a nivel 1023 que
cuantificaría voltajes por encima de 1023r = 1023x 5/1024 = 4.995V. Como se ve,
voltajes por debajo de Vref- o por encima de Vref+ son posibles y se cuantifican como
nivel mínimo 0 o máximo, 1023. Niveles por debajo de 0V o por encima de la tensión
de alimentación (normalmente 5V) pueden ser dañar el PIC.
Aunque un PIC puede tener del orden de 8-12 posibles canales (pines) de entrada
analógica, solo tiene normalmente un único módulo ADC, lo que significa que no
podemos tomar medidas simultáneas de varios canales. Si es necesario, lo que podemos
hacer es ir conectando (seleccionando) los sucesivos canales al ADC para ir midiendo
sus voltajes.
El proceso de una conversión ADC se divide en un tiempo de adquisición Ta (durante el
cual un condensador interno se carga al voltaje exterior) y un tiempo de conversión Tc
(durante el cual se desconecta el pin exterior y se cuantifica el voltaje del condensador).
Para el PIC16F887 no hay que preocuparse por programar una rutina para el tiempo,
porque ya cuenta con la electrónica necesaria para hacerlo, solo hay que preguntar por
la bandera que indica que ya acabo el proceso de adquisición y utilizar el valor
guardado de la conversión.
El tiempo de conversión Tc depende fundamentalmente del número de bits del
conversor. La unidad básica es el llamado Tad, aproximadamente el tiempo necesario
para ganar un bit adicional. La conversión total tarda entre 11 y 14 Tad (contando con la
descarga final del condensador para estar listo para otra medida. El reloj del ADC se
debe ajustar (como una fracción del oscilador principal) para que dicho Tad no sea
inferior a un valor mínimo especificado en los datasheet. Por ejemplo para la familia
PIC18F252/452 el Tad mínimo es de 1.6 usec y Tc = 14 Tad. En cambio para la familia
PIC18F2520/4520 tenemos un Tad mínimo de 0.75 usec y un Tc = 11 Tad.
Derlis Hernández Lara
4
USART
Cuando se ha logrado implementar cualquier protocolo de comunicación entre una PC y
un microcontrolador se puede decir que una gran cantidad de aplicaciones están a la
puerta, entre las cuales se pueden nombrar monitoreo, control digital, impresión de
datos en papel, impresión en pantalla de datos inmediatos, etc. Los protocolos más
comúnmente implementados en microcontroladores y PC son: RS232, IP, Paralelo, etc.
El microcontrolador PIC16F887 tiene incluido dentro de su estructura interna un
módulo USART (Transmisor receptor universal síncrono asíncrono) que es la
abreviación de “universal syncchronous asynchronous receiver transmitter” en ingles
también es conocido como SCI (“serial comunications interface”) y es uno de los más
comúnmente usados para la implementación de puertos seriales, la configuración
asíncrona full dúplex es una de las más populares de la USART porque es usada para
interfaces con el puerto serie de las PC usando el protocolo RS-232.
La función principal del módulo USART es enviar y recibir datos de forma serial, esta
operación puede ser dividida en dos categorías, transmisión síncrona y transmisión
asíncrona. La operación síncrona usa una línea de datos y una de reloj mientras que la
asíncrona solo usa la línea de datos, para este periodo del curso solo se analizó la
transmisión asíncrona.
Modo asíncrono:
La comunicación asíncrona es la que generalmente se utiliza entre un microcontrolador
y una PC. Para la comunicación serie con la PC se utiliza el estándar “no retorno a cero”
(NRZ) en la forma conocida como 8-N-1 que quiere decir 8 bits de datos, sin paridad y
un bit de parada tal como se muestra en la figura 1.
Figura 1. Cronograma del protocolo RS-232.
Línea libre se define como un estado lógico alto o uno. El inicio de la transmisión de
datos (Bit de inicio) se define como un estado lógico bajo o cero. Los bits son enviados
enseguida del bit de inicio, enviando en primer lugar el bit menos significativo, después
de los bits de datos se envía el bit de parada que es un estado lógico alto o uno. El
periodo T depende de la velocidad de transmisión y es ajustado de acuerdo a las
necesidades de transmisión. En la figura 2 se muestra un conector RS-232 y en la tabla
1 los nombres de cada pin.
Derlis Hernández Lara
5
Figura 2. Conector DB9 estándar.
Tabla 1. Nombres de los pines del conector DB9.
La interface física que ese utiliza comúnmente para conectar un microcontrolador con la
PC se muestra en la figura 3. El circuito MAX232 realiza la tarea de generar de acuerdo
a los valores lógicos entregados por le microcontrolador los niveles necesarios de
voltaje para la comunicación RS-232.
Figura 3. Conexión física para la comunicación RS-232.
Derlis Hernández Lara
6
Para implementar la comunicación serial entre una PC y un microcontrolador en la
etapa experimental se suele utilizar el programa Hyper Terminal como se muestra en la
figura 4.
Figura 4. Configuración y elección del puerto disponible a utilizar.
Una vez que se ha establecido la comunicación entre Hyper Terminal y el
microcontrolador se puede programar la aplicación deseada en cualquier software como
Matlab, Labview, Visual basic, etc.
DESARROLLO:
Realizar un programa y circuito correspondiente que digitalice dos canales analógicos y
los envié a la PC para dibujar lo que se está captando con ayuda de algún software.
Enviar 500 muestras por segundo (mps).
1° Para la parte de la transmisión serial es importante enviar los datos con una
velocidad estándar y exacta por lo que se utiliza un cristal comercial de 3686400 Hz.
2° Por lo que el tiempo de ejecución de una instrucción es:
3° Se envían 4 bytes, luego entonces 500*4=2000 mps y además cada muestra es de 10
bits, luego entonces 2000*10=20000 bps (bits por segundo). Por lo que se puede utilizar
cualquier velocidad de transmisión estándar mayor a 20000 bps, como pueden ser
Derlis Hernández Lara
7
38400 bps, 115200 bps, 230400 bps, etc. Para este caso se utiliza una velocidad de
transmisión estándar de 115200 bps, para poder observar bien la simulación en la
herramienta MPLAB y para asegurar que no haya pérdida de datos.
4° Ahora para saber en cuanto tiempo se envían las 500 muestras:
5° Sabiendo que TMR0 solo puede contar hasta 255, hay que seleccionar el
preescalador que permita contar esta cantidad, si se quiere enviar 2000 bits cada 2 ms:
2000/8=250, por lo que con el preescalador 1:8 es suficiente.
6° Para saber cuántos ciclos hay que contar:
Usando la escala 1:8, 1843/8=230 y como TMR0 cuenta 256, 256-230=26, se debe
inicializar TMR0 en 26, esto se puede ajustar para obtener el menor error posible.
8° Con los valores obtenidos ya se puede configurar el TMR0 encargado de contar que
se envíen los 4 bytes a la PC cada 2 ms. Este temporizador se configura para que
empiece a contar (la primera vez no importa el tiempo que se tarde), y cada 230
instrucciones aumenta en uno su valor, así al cabo de 8 conteos habrá ejecutado las 1843
instrucciones que se necesitan para este caso. Se programa generando una interrupción
cada que se enciende la bandera de fin de conteo. A continuación se muestra su
configuración en lenguaje ensamblador:
Los registros asociados al TMR0 son:
 INTCON y el OPTION_REG.
 El bit T0CS (OPTION 5) a 1 trabaja con un oscilador externo, 0 utiliza la
Fosc/4.
 El bit T0SE (OPTION 4) en modo contador a 1 flanco descendente, 0 flanco
ascendente.
 El bit PSA (OPTION 3) 0 preescaler al temporizador, 1 preescaler al WDT.
 Cuando se desborda el TMR0, se activa el bit 2 de INTCON (T0IF) y si el T0IE
está activado el T0IF generara interrupción y se debe borrar por software cuando
se atienda la interrupción.
Para este caso, OPTION_REG=1101 0010=D2 (hex).
Derlis Hernández Lara
8
Observe que en el programa en lugar de inicializar TMR0 en 26, se hizo en 27, esto se
hizo para obtener el menor error posible, al inicializarlo en 27 y agregar 5 instrucciones
de no operación se obtiene un tiempo de 1.999783 ms que es lo más cercano a los 2ms
que se están buscando (figura 5).
Figura 5. Tiempo del TMR0 y número de instrucciones realizadas.
9° Una vez que ya se tiene el tiempo de envió requerido, es hora de mandar datos a la
PC mediante el periférico USART.
Para la transmisión de datos:
Derlis Hernández Lara
9
 Se inicializa el registro generador de Baud Rate (velocidad de transmisión
deseada) SPBRG con el valor apropiado, si se usa una velocidad alta el bit
BGRH debe estar en 1. Para lo cual se usa la siguiente expresión:
Para este caso:
 Se habilita el puerto serie asíncrono limpiando el bit SYNC y se pone a 1 el bit
SPEN (serial port enable).
 Se carga el dato en el registro TXREG (después de esto se inicializa la
transmisión).
 Habilitar la transmisión poniendo a 1 el bit TXE.
En el código anterior se configura el periférico USART para la transmisión serial de
datos. Después se realiza esta configuración junto con el TMR0, se configura el USART
en la inicialización antes de la interrupción, y ya dentro de la interrupción se envían los
4 bytes cada 2ms aproximadamente como se ve en la figura 6, se realiza una prueba
enviando “U”, que después será remplazada por la adquisición del ADC.
Derlis Hernández Lara
10
Derlis Hernández Lara
11
Figura 6. Envió de datos por el USART cada 2ms.
10° Una vez establecido el TMR0 y el USART, solo falta habilitar el ADC, para enviar
la conversión de dos señales analógicas a la PC, se enviaran 500 mps cada 2ms a una
velocidad de transmisión de 115200 bps.
Para configurar el ADC:
 Configurar pines como entradas analógicas, seleccionar o no voltajes de
referencia (VCFG), etc.
 Una vez configurado, habilitar el ADC (ADON=1).
 Escoger canal (bits CHS) a usar (el pin dado se conecta al condensador).
 Esperar (delay) Ta mientras se carga el condensador.
 Lanzar la conversión (GO=1).
 Esperar a completar a que la conversión concluya (GO=0).
 Extraer el resultado de ADRESH: ADRESL.
 Si hemos terminado con el ADC, apagarlo para reducir consumo.
Derlis Hernández Lara
12
Ahora implementando el ADC dentro del TMR0 para que la conversión y el envió se
haga dentro de los 2 ms establecidos:
Derlis Hernández Lara
13
Derlis Hernández Lara
14
11° Para poder ver las señales enviadas por el microcontrolador a la PC se puede usar
un osciloscopio o capturarlas y graficarlas en Matlab por ejemplo.
Programa ocupado para la adquisición de datos con Matlab:
Derlis Hernández Lara
15
Derlis Hernández Lara
16
Derlis Hernández Lara
17
Como al inicio de la lectura del puerto no se sabe que byte se leerá, se implementó un
algoritmo en el cual pueden existir dos casos, que lea el byte con los bits menos
significativos (caso 2), o el de los bits más significativos (caso 1).
Para determinar en que caso se toma la lectura, primero se obtienen los bytes pares e
impares respecto a su posición y se guardan en su respectivo arreglo, se tomaron los
últimos 5 bits de cada byte y se dividió entre 2, si el residuo de los impares es cero
entonces la lectura se tomó en el caso 2 por que el byte de los bits menos significativos
solo ocupa los 2 primeros bits y por lo tanto los otros 8 bits son ceros, de lo contrario
será el caso 1.
Una vez establecido el inicio de la lectura, se utiliza el arreglo de la lectura del puerto y
se concatenan los pares de bytes, es decir los primeros 2 bytes, luego los siguientes 2 y
así sucesivamente, como el nuevo dato es de 16 bits, se recortan los últimos 6 porque la
resolución del ADC es solo de 10 bits y se crea un nuevo arreglo con datos de 10 bits
cada uno, por último se separan los datos pares e impares respecto a su posición en el
arreglo y se establece que los pares corresponden a un canal y los impares al otro canal
y se mandan a graficar por separado.
Si la lectura callo en el caso 2, es decir empezó la lectura del puerto con el byte menos
significativo, se descarta el primer byte y se realiza el mismo procedimiento pero a
partir del segundo byte de la lectura y hasta el penúltimo.
Conclusiones:
Con la elaboración de la presente práctica se desarrollaron las habilidades necesarias
para poder analizar y configurar aspectos básicos a la hora de usar un microcontrolador
y sus diferentes periféricos, se aplicaron los conceptos de contador, transmisión serial,
convertidor analógico digital, etc., además de cómo poder recibir datos en la PC y
visualizarlos con ayuda de alguna herramienta de software como por ejemplo Matlab.
Referencias:
“PICmicro Mid-Range MCU Family Reference Manual”, Microchip rev/DS33023A,
December 1997.
“PIC16F887 Data sheet” Microchiop rev/30292c, 2001
“MAX232 Data sheet”, Texas Instruments, 2003.

Más contenido relacionado

La actualidad más candente

Presentacion pic 16f887 y 18f4550
Presentacion pic 16f887 y 18f4550 Presentacion pic 16f887 y 18f4550
Presentacion pic 16f887 y 18f4550 Alejandra Ruiz
 
Curso de microcontroladores capitulo 04
Curso de microcontroladores capitulo 04Curso de microcontroladores capitulo 04
Curso de microcontroladores capitulo 04Hamiltonn Casallas
 
Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02Hamiltonn Casallas
 
Curso de microcontroladores capitulo 12
Curso de microcontroladores capitulo 12Curso de microcontroladores capitulo 12
Curso de microcontroladores capitulo 12Hamiltonn Casallas
 
MICROCONTROLADORES II EN C. TEMA 3
MICROCONTROLADORES II EN C. TEMA 3MICROCONTROLADORES II EN C. TEMA 3
MICROCONTROLADORES II EN C. TEMA 3Luis Zurita
 
Curso Micro Tema 1
Curso Micro Tema 1Curso Micro Tema 1
Curso Micro Tema 1Luis Zurita
 
Curso de microcontroladores capitulo 09
Curso de microcontroladores capitulo 09Curso de microcontroladores capitulo 09
Curso de microcontroladores capitulo 09Hamiltonn Casallas
 
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...SANTIAGO PABLO ALBERTO
 
PWM con PIC16F877A: Modulos y Registros Involucrados
PWM con PIC16F877A: Modulos y Registros InvolucradosPWM con PIC16F877A: Modulos y Registros Involucrados
PWM con PIC16F877A: Modulos y Registros InvolucradosEduardo Henriquez
 
Curso Micro Tema 3 2
Curso Micro Tema 3 2Curso Micro Tema 3 2
Curso Micro Tema 3 2Luis Zurita
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84guestf09168b
 
Compare capture pwm mode 5
Compare capture pwm mode 5Compare capture pwm mode 5
Compare capture pwm mode 5georgemanson69
 

La actualidad más candente (20)

Presentacion pic 16f887 y 18f4550
Presentacion pic 16f887 y 18f4550 Presentacion pic 16f887 y 18f4550
Presentacion pic 16f887 y 18f4550
 
PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84
 
Curso de microcontroladores capitulo 04
Curso de microcontroladores capitulo 04Curso de microcontroladores capitulo 04
Curso de microcontroladores capitulo 04
 
Módulo Timer 1 del PIC16F887
Módulo Timer 1 del PIC16F887Módulo Timer 1 del PIC16F887
Módulo Timer 1 del PIC16F887
 
Programación PIC16F84A
Programación PIC16F84AProgramación PIC16F84A
Programación PIC16F84A
 
Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02
 
PicSumador
PicSumadorPicSumador
PicSumador
 
50824079 datasheet-pic18f4550-espanol
50824079 datasheet-pic18f4550-espanol50824079 datasheet-pic18f4550-espanol
50824079 datasheet-pic18f4550-espanol
 
Modulo Timer 0 del PIC16F887
Modulo Timer 0 del PIC16F887Modulo Timer 0 del PIC16F887
Modulo Timer 0 del PIC16F887
 
Curso de microcontroladores capitulo 12
Curso de microcontroladores capitulo 12Curso de microcontroladores capitulo 12
Curso de microcontroladores capitulo 12
 
MICROCONTROLADORES II EN C. TEMA 3
MICROCONTROLADORES II EN C. TEMA 3MICROCONTROLADORES II EN C. TEMA 3
MICROCONTROLADORES II EN C. TEMA 3
 
Curso Micro Tema 1
Curso Micro Tema 1Curso Micro Tema 1
Curso Micro Tema 1
 
Curso de microcontroladores capitulo 09
Curso de microcontroladores capitulo 09Curso de microcontroladores capitulo 09
Curso de microcontroladores capitulo 09
 
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
 
Clase Timer 1
Clase Timer 1Clase Timer 1
Clase Timer 1
 
Proyecto1
Proyecto1Proyecto1
Proyecto1
 
PWM con PIC16F877A: Modulos y Registros Involucrados
PWM con PIC16F877A: Modulos y Registros InvolucradosPWM con PIC16F877A: Modulos y Registros Involucrados
PWM con PIC16F877A: Modulos y Registros Involucrados
 
Curso Micro Tema 3 2
Curso Micro Tema 3 2Curso Micro Tema 3 2
Curso Micro Tema 3 2
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84
 
Compare capture pwm mode 5
Compare capture pwm mode 5Compare capture pwm mode 5
Compare capture pwm mode 5
 

Destacado

Comunicación serial PIC16F877A
Comunicación serial PIC16F877AComunicación serial PIC16F877A
Comunicación serial PIC16F877ALiliana Rodríguez
 
Introduccion a los microcontroladores pic y programacion de una matriz de led's
Introduccion a los microcontroladores pic y programacion de una matriz de led'sIntroduccion a los microcontroladores pic y programacion de una matriz de led's
Introduccion a los microcontroladores pic y programacion de una matriz de led'sRuderocker Billy
 
Matriz de leds
Matriz de ledsMatriz de leds
Matriz de ledsLiz Perez
 
Programación en c (iii parte)
Programación en c (iii parte)Programación en c (iii parte)
Programación en c (iii parte)MarielaCuriel
 
21a clase sistemas de protección para fuentes reguladas
21a clase sistemas de protección para fuentes reguladas21a clase sistemas de protección para fuentes reguladas
21a clase sistemas de protección para fuentes reguladasManuelGmoJaramillo
 
Sistemas de protecion electrica
Sistemas de protecion electricaSistemas de protecion electrica
Sistemas de protecion electricaJosue Molina Ruiz
 
Informe N°1-Microcontroladores
Informe N°1-MicrocontroladoresInforme N°1-Microcontroladores
Informe N°1-MicrocontroladoresOmar Ruiz
 
Informe N°2-Microcontroladores
Informe N°2-MicrocontroladoresInforme N°2-Microcontroladores
Informe N°2-MicrocontroladoresOmar Ruiz
 
Guía de matemáticas El reloj
Guía de matemáticas El relojGuía de matemáticas El reloj
Guía de matemáticas El relojofitoher
 
Guía n° 3 horas y minutos
Guía n° 3 horas y minutosGuía n° 3 horas y minutos
Guía n° 3 horas y minutosMaca1208
 
Conversion analogico digital: muestreo, cuantizacion y codificacion
Conversion analogico digital: muestreo, cuantizacion y codificacionConversion analogico digital: muestreo, cuantizacion y codificacion
Conversion analogico digital: muestreo, cuantizacion y codificacionLucre Castillo Lorenzo
 
Cómo redactar un ensayo
Cómo redactar un ensayoCómo redactar un ensayo
Cómo redactar un ensayoPace University
 

Destacado (20)

Arquitectura Microcontrolador PIC16F887
Arquitectura Microcontrolador PIC16F887Arquitectura Microcontrolador PIC16F887
Arquitectura Microcontrolador PIC16F887
 
Comunicación serial PIC16F877A
Comunicación serial PIC16F877AComunicación serial PIC16F877A
Comunicación serial PIC16F877A
 
Tema 7: Temporizadores y Relojes.
Tema 7: Temporizadores y Relojes.Tema 7: Temporizadores y Relojes.
Tema 7: Temporizadores y Relojes.
 
Módulo EUSART del PIC16F887
Módulo EUSART del PIC16F887Módulo EUSART del PIC16F887
Módulo EUSART del PIC16F887
 
Introduccion a los microcontroladores pic y programacion de una matriz de led's
Introduccion a los microcontroladores pic y programacion de una matriz de led'sIntroduccion a los microcontroladores pic y programacion de una matriz de led's
Introduccion a los microcontroladores pic y programacion de una matriz de led's
 
Matriz de leds
Matriz de ledsMatriz de leds
Matriz de leds
 
Programación en c (iii parte)
Programación en c (iii parte)Programación en c (iii parte)
Programación en c (iii parte)
 
21a clase sistemas de protección para fuentes reguladas
21a clase sistemas de protección para fuentes reguladas21a clase sistemas de protección para fuentes reguladas
21a clase sistemas de protección para fuentes reguladas
 
Clase1 c
Clase1 cClase1 c
Clase1 c
 
Sistemas de protecion electrica
Sistemas de protecion electricaSistemas de protecion electrica
Sistemas de protecion electrica
 
Matriz de led
Matriz de ledMatriz de led
Matriz de led
 
Informe N°1-Microcontroladores
Informe N°1-MicrocontroladoresInforme N°1-Microcontroladores
Informe N°1-Microcontroladores
 
Informe N°2-Microcontroladores
Informe N°2-MicrocontroladoresInforme N°2-Microcontroladores
Informe N°2-Microcontroladores
 
Interrupciones y Temporizadores
Interrupciones y TemporizadoresInterrupciones y Temporizadores
Interrupciones y Temporizadores
 
Guía de matemáticas El reloj
Guía de matemáticas El relojGuía de matemáticas El reloj
Guía de matemáticas El reloj
 
El Reloj
El RelojEl Reloj
El Reloj
 
Guía n° 3 horas y minutos
Guía n° 3 horas y minutosGuía n° 3 horas y minutos
Guía n° 3 horas y minutos
 
UML: CASOS DE USO
UML: CASOS DE USOUML: CASOS DE USO
UML: CASOS DE USO
 
Conversion analogico digital: muestreo, cuantizacion y codificacion
Conversion analogico digital: muestreo, cuantizacion y codificacionConversion analogico digital: muestreo, cuantizacion y codificacion
Conversion analogico digital: muestreo, cuantizacion y codificacion
 
Cómo redactar un ensayo
Cómo redactar un ensayoCómo redactar un ensayo
Cómo redactar un ensayo
 

Similar a Adc y usart pic16 f887 (20)

Comunicación RS-232
Comunicación RS-232Comunicación RS-232
Comunicación RS-232
 
Tutorial micro MSP430
Tutorial micro MSP430Tutorial micro MSP430
Tutorial micro MSP430
 
Micro2 tema 5
Micro2 tema 5Micro2 tema 5
Micro2 tema 5
 
Taller cruce por cero
Taller cruce por ceroTaller cruce por cero
Taller cruce por cero
 
DIAGRAMAS DE UNA ALARMA
DIAGRAMAS DE UNA ALARMADIAGRAMAS DE UNA ALARMA
DIAGRAMAS DE UNA ALARMA
 
Adc 4
Adc 4Adc 4
Adc 4
 
Comunicación Serial entre un microcontrolador y un PC
Comunicación Serial entre un microcontrolador y un PCComunicación Serial entre un microcontrolador y un PC
Comunicación Serial entre un microcontrolador y un PC
 
Semana6
Semana6Semana6
Semana6
 
Conversor ADC
Conversor ADCConversor ADC
Conversor ADC
 
Interrupciones y Temporizadores pucesi
Interrupciones y Temporizadores   pucesiInterrupciones y Temporizadores   pucesi
Interrupciones y Temporizadores pucesi
 
Rs232
Rs232Rs232
Rs232
 
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
 
Hoja de datos USB2TTL
Hoja de datos USB2TTLHoja de datos USB2TTL
Hoja de datos USB2TTL
 
Puertoserial[1]
Puertoserial[1]Puertoserial[1]
Puertoserial[1]
 
Tramas phillips
Tramas phillipsTramas phillips
Tramas phillips
 
Protocolo phillips
Protocolo phillipsProtocolo phillips
Protocolo phillips
 
Protocolo comunicación serial
Protocolo comunicación serialProtocolo comunicación serial
Protocolo comunicación serial
 
Pwm
PwmPwm
Pwm
 
Grabacion de microcontroladores_pic
Grabacion de microcontroladores_picGrabacion de microcontroladores_pic
Grabacion de microcontroladores_pic
 
ARQUITECTURA DE COMPUTADORAS
ARQUITECTURA DE COMPUTADORASARQUITECTURA DE COMPUTADORAS
ARQUITECTURA DE COMPUTADORAS
 

Último

l12_sistemas_de_tiempos_predeterminados.pdf
l12_sistemas_de_tiempos_predeterminados.pdfl12_sistemas_de_tiempos_predeterminados.pdf
l12_sistemas_de_tiempos_predeterminados.pdfdulcemartinezalmenda
 
solucionario chopra 4ta edicion solucionario
solucionario chopra 4ta edicion solucionariosolucionario chopra 4ta edicion solucionario
solucionario chopra 4ta edicion solucionarioMarvin Flores
 
Introducción a la Informática Forensemelissa - copia.pptx
Introducción a la Informática Forensemelissa - copia.pptxIntroducción a la Informática Forensemelissa - copia.pptx
Introducción a la Informática Forensemelissa - copia.pptxKarinaRamirez16146
 
Este método de ensayo cubre la estimación de la capacidad portante del suelo ...
Este método de ensayo cubre la estimación de la capacidad portante del suelo ...Este método de ensayo cubre la estimación de la capacidad portante del suelo ...
Este método de ensayo cubre la estimación de la capacidad portante del suelo ...josetuanama2
 
COMUNICACION ARQUITECTONICA 1 INTRODUCCION A LA COMUNICACION ARQUITECTONICA 1 1
COMUNICACION ARQUITECTONICA 1 INTRODUCCION A LA COMUNICACION ARQUITECTONICA 1 1COMUNICACION ARQUITECTONICA 1 INTRODUCCION A LA COMUNICACION ARQUITECTONICA 1 1
COMUNICACION ARQUITECTONICA 1 INTRODUCCION A LA COMUNICACION ARQUITECTONICA 1 1NatashaSolano5
 
Iniciaciòn y Aprendizaje del idioma cobol
Iniciaciòn y Aprendizaje del  idioma cobolIniciaciòn y Aprendizaje del  idioma cobol
Iniciaciòn y Aprendizaje del idioma cobolRoberto Bellido
 
2.8 Comandos generales de alta y baja del SGBD
2.8 Comandos generales de alta y baja del SGBD2.8 Comandos generales de alta y baja del SGBD
2.8 Comandos generales de alta y baja del SGBDEmanuelMuoz11
 
2.5y 2.6.pptx maquinaria pesada para pavimentación y maquinaria pesada para c...
2.5y 2.6.pptx maquinaria pesada para pavimentación y maquinaria pesada para c...2.5y 2.6.pptx maquinaria pesada para pavimentación y maquinaria pesada para c...
2.5y 2.6.pptx maquinaria pesada para pavimentación y maquinaria pesada para c...PedroSantos958708
 
1.3 Captura básica de cadenas en ensamblador.pptx
1.3 Captura básica de cadenas en ensamblador.pptx1.3 Captura básica de cadenas en ensamblador.pptx
1.3 Captura básica de cadenas en ensamblador.pptxEmanuelMuoz11
 
SDH: Synchronous Digital Hierarchy (Jerarquía Digital Sincrónica)
SDH: Synchronous Digital Hierarchy (Jerarquía Digital Sincrónica)SDH: Synchronous Digital Hierarchy (Jerarquía Digital Sincrónica)
SDH: Synchronous Digital Hierarchy (Jerarquía Digital Sincrónica)aluque
 
PENDOLADOS ADIF.pdf NORMAS DE CATENARIA FLEXIBLE
PENDOLADOS ADIF.pdf NORMAS DE CATENARIA FLEXIBLEPENDOLADOS ADIF.pdf NORMAS DE CATENARIA FLEXIBLE
PENDOLADOS ADIF.pdf NORMAS DE CATENARIA FLEXIBLErene2105
 
CONCEPTOS BASICOS DE ARDUINO EN ELECTRICIDAD
CONCEPTOS BASICOS DE ARDUINO EN ELECTRICIDADCONCEPTOS BASICOS DE ARDUINO EN ELECTRICIDAD
CONCEPTOS BASICOS DE ARDUINO EN ELECTRICIDADMaestroMatematicas
 
GUIA DEL PROGRAMA AUTODESK INVENTOR 2020.pptx
GUIA DEL PROGRAMA AUTODESK INVENTOR 2020.pptxGUIA DEL PROGRAMA AUTODESK INVENTOR 2020.pptx
GUIA DEL PROGRAMA AUTODESK INVENTOR 2020.pptxDilmer Eddy Laime Ramos
 
BLOQUEO Y ETIQUETADO DE ENERGIAS PELIGROSAS
BLOQUEO Y ETIQUETADO DE ENERGIAS PELIGROSASBLOQUEO Y ETIQUETADO DE ENERGIAS PELIGROSAS
BLOQUEO Y ETIQUETADO DE ENERGIAS PELIGROSASseguridadindustrial51
 
Turismo-Comunitario. casckkjaskkakaskkaskkas
Turismo-Comunitario. casckkjaskkakaskkaskkasTurismo-Comunitario. casckkjaskkakaskkaskkas
Turismo-Comunitario. casckkjaskkakaskkaskkasingestoracultural1
 
Prueba-modelo-de-CTA (2).pdfkmkldklcmdaslñmcdñlamcñldmcñ
Prueba-modelo-de-CTA (2).pdfkmkldklcmdaslñmcdñlamcñldmcñPrueba-modelo-de-CTA (2).pdfkmkldklcmdaslñmcdñlamcñldmcñ
Prueba-modelo-de-CTA (2).pdfkmkldklcmdaslñmcdñlamcñldmcñElvisEnrique7
 
EQUIPOS E IMPLEMENTOS PARA LABRANZA PRIMARIA
EQUIPOS E IMPLEMENTOS PARA LABRANZA PRIMARIAEQUIPOS E IMPLEMENTOS PARA LABRANZA PRIMARIA
EQUIPOS E IMPLEMENTOS PARA LABRANZA PRIMARIASELENEGUZMAN4
 
Reglamento de Relevamientos estructurales 2023.pdf
Reglamento de Relevamientos estructurales 2023.pdfReglamento de Relevamientos estructurales 2023.pdf
Reglamento de Relevamientos estructurales 2023.pdfAndyMarcaFuentes
 
Trabajo para el 2do1111111111. examen.pdf
Trabajo para el 2do1111111111. examen.pdfTrabajo para el 2do1111111111. examen.pdf
Trabajo para el 2do1111111111. examen.pdffredyflores58
 

Último (20)

l12_sistemas_de_tiempos_predeterminados.pdf
l12_sistemas_de_tiempos_predeterminados.pdfl12_sistemas_de_tiempos_predeterminados.pdf
l12_sistemas_de_tiempos_predeterminados.pdf
 
solucionario chopra 4ta edicion solucionario
solucionario chopra 4ta edicion solucionariosolucionario chopra 4ta edicion solucionario
solucionario chopra 4ta edicion solucionario
 
Introducción a la Informática Forensemelissa - copia.pptx
Introducción a la Informática Forensemelissa - copia.pptxIntroducción a la Informática Forensemelissa - copia.pptx
Introducción a la Informática Forensemelissa - copia.pptx
 
Este método de ensayo cubre la estimación de la capacidad portante del suelo ...
Este método de ensayo cubre la estimación de la capacidad portante del suelo ...Este método de ensayo cubre la estimación de la capacidad portante del suelo ...
Este método de ensayo cubre la estimación de la capacidad portante del suelo ...
 
COMUNICACION ARQUITECTONICA 1 INTRODUCCION A LA COMUNICACION ARQUITECTONICA 1 1
COMUNICACION ARQUITECTONICA 1 INTRODUCCION A LA COMUNICACION ARQUITECTONICA 1 1COMUNICACION ARQUITECTONICA 1 INTRODUCCION A LA COMUNICACION ARQUITECTONICA 1 1
COMUNICACION ARQUITECTONICA 1 INTRODUCCION A LA COMUNICACION ARQUITECTONICA 1 1
 
Iniciaciòn y Aprendizaje del idioma cobol
Iniciaciòn y Aprendizaje del  idioma cobolIniciaciòn y Aprendizaje del  idioma cobol
Iniciaciòn y Aprendizaje del idioma cobol
 
2.8 Comandos generales de alta y baja del SGBD
2.8 Comandos generales de alta y baja del SGBD2.8 Comandos generales de alta y baja del SGBD
2.8 Comandos generales de alta y baja del SGBD
 
REGULARIZACIONES CASABLANCA +56941055309
REGULARIZACIONES CASABLANCA +56941055309REGULARIZACIONES CASABLANCA +56941055309
REGULARIZACIONES CASABLANCA +56941055309
 
2.5y 2.6.pptx maquinaria pesada para pavimentación y maquinaria pesada para c...
2.5y 2.6.pptx maquinaria pesada para pavimentación y maquinaria pesada para c...2.5y 2.6.pptx maquinaria pesada para pavimentación y maquinaria pesada para c...
2.5y 2.6.pptx maquinaria pesada para pavimentación y maquinaria pesada para c...
 
1.3 Captura básica de cadenas en ensamblador.pptx
1.3 Captura básica de cadenas en ensamblador.pptx1.3 Captura básica de cadenas en ensamblador.pptx
1.3 Captura básica de cadenas en ensamblador.pptx
 
SDH: Synchronous Digital Hierarchy (Jerarquía Digital Sincrónica)
SDH: Synchronous Digital Hierarchy (Jerarquía Digital Sincrónica)SDH: Synchronous Digital Hierarchy (Jerarquía Digital Sincrónica)
SDH: Synchronous Digital Hierarchy (Jerarquía Digital Sincrónica)
 
PENDOLADOS ADIF.pdf NORMAS DE CATENARIA FLEXIBLE
PENDOLADOS ADIF.pdf NORMAS DE CATENARIA FLEXIBLEPENDOLADOS ADIF.pdf NORMAS DE CATENARIA FLEXIBLE
PENDOLADOS ADIF.pdf NORMAS DE CATENARIA FLEXIBLE
 
CONCEPTOS BASICOS DE ARDUINO EN ELECTRICIDAD
CONCEPTOS BASICOS DE ARDUINO EN ELECTRICIDADCONCEPTOS BASICOS DE ARDUINO EN ELECTRICIDAD
CONCEPTOS BASICOS DE ARDUINO EN ELECTRICIDAD
 
GUIA DEL PROGRAMA AUTODESK INVENTOR 2020.pptx
GUIA DEL PROGRAMA AUTODESK INVENTOR 2020.pptxGUIA DEL PROGRAMA AUTODESK INVENTOR 2020.pptx
GUIA DEL PROGRAMA AUTODESK INVENTOR 2020.pptx
 
BLOQUEO Y ETIQUETADO DE ENERGIAS PELIGROSAS
BLOQUEO Y ETIQUETADO DE ENERGIAS PELIGROSASBLOQUEO Y ETIQUETADO DE ENERGIAS PELIGROSAS
BLOQUEO Y ETIQUETADO DE ENERGIAS PELIGROSAS
 
Turismo-Comunitario. casckkjaskkakaskkaskkas
Turismo-Comunitario. casckkjaskkakaskkaskkasTurismo-Comunitario. casckkjaskkakaskkaskkas
Turismo-Comunitario. casckkjaskkakaskkaskkas
 
Prueba-modelo-de-CTA (2).pdfkmkldklcmdaslñmcdñlamcñldmcñ
Prueba-modelo-de-CTA (2).pdfkmkldklcmdaslñmcdñlamcñldmcñPrueba-modelo-de-CTA (2).pdfkmkldklcmdaslñmcdñlamcñldmcñ
Prueba-modelo-de-CTA (2).pdfkmkldklcmdaslñmcdñlamcñldmcñ
 
EQUIPOS E IMPLEMENTOS PARA LABRANZA PRIMARIA
EQUIPOS E IMPLEMENTOS PARA LABRANZA PRIMARIAEQUIPOS E IMPLEMENTOS PARA LABRANZA PRIMARIA
EQUIPOS E IMPLEMENTOS PARA LABRANZA PRIMARIA
 
Reglamento de Relevamientos estructurales 2023.pdf
Reglamento de Relevamientos estructurales 2023.pdfReglamento de Relevamientos estructurales 2023.pdf
Reglamento de Relevamientos estructurales 2023.pdf
 
Trabajo para el 2do1111111111. examen.pdf
Trabajo para el 2do1111111111. examen.pdfTrabajo para el 2do1111111111. examen.pdf
Trabajo para el 2do1111111111. examen.pdf
 

Adc y usart pic16 f887

  • 1. INSTITUTO POLITÉCNICO NACIONAL CENTRO DE INVESTIGACIÓN EN COMPUTACIÓN 1° EVALUACIÓN Microprocesadores MCIC Hernández Lara Derlis Aplicación de los periféricos de un microcontrolador, uso del TMR0, ADC y USART de un PIC16F. Profesor: Dr. Alfonso Gutiérrez Aldana MÉXICO, D.F. MAYO 2014
  • 2. Derlis Hernández Lara 2 Conociendo los microcontroladores PIC16F En este trabajo se describe la práctica realizada para la primera evaluación de la materia de microprocesadores. Se vio durante el curso correspondiente a este periodo, como configurar y utilizar algunos de los periféricos más usados de un PIC, como los son el TMR0, el ADC y el USART. Introducción: Se está trabajando con el PIC16F887 en específico, este es un microcontrolador de 8 bits de mediano rango, con 40 terminales y con una arquitectura Harvard lo que indica que tiene dos memorias, una para datos y una de programa, además utiliza instrucciones RISC (del inglés Reduced Instruction Set Computer, en español Computador con Conjunto de Instrucciones Reducidas). TMR0 El microcontrolador PIC16F887 dispone de tres temporizadores/contadores independientes, denominados Timer0, Timer1 y Timer2. El temporizador Timer0 tiene una amplia gama de aplicaciones en la práctica. Sólo unos pocos programas no lo utilizan de alguna forma. Es muy conveniente y fácil de utilizar en programas o subrutinas para generar pulsos de duración arbitraria, en medir tiempo o en contar los pulsos externos (eventos) casi sin limitaciones. Es un módulo que sirve como contador o como temporizador de 8 bits. Funcionando como temporizador el TMR0 es un registro donde se puede almacenar un valor y este se va incrementando de 1 en 1 con los ciclos de instrucción, es decir, con cada ciclo se incrementa en 1 el TMR0, cuando la cuenta llega a 255 y pasa a 0 (cero) se produce una interrupción por desborde del TMR0, recordando que en un registro de 8 bits el valor más alto que se puede almacenar es 255 y que si se incrementa estando en 255 pasa a cero, y es a esto a lo que se le denomina desborde. El TMR0 puede funcionar de dos maneras; como contador de eventos o como temporizador. Para seleccionar de qué manera queremos que funcione utilizamos el bit T0CS del registro OPTION_REG. Cuando se selecciona TMR0 como contador de eventos, mediante el pin T0SE se indica porque flanco, de subida o bajada, en la señal aplicada en el pin correspondiente, se desea incrementar el contador. La señal que lleva al TMR0 se puede preescalar mediante un divisor, este divisor se puede asignar tanto al WDT como al TMR0 mediante el bit PSA del OPTION_REG. El valor del rango del divisor viene determinado por los bits PS2:PS0 según la tabla correspondiente. El TMR0 es capaz de realizar una interrupción cada vez que pasa de 255 a 0, para permitirla hay que poner a 1 el bit T0IE del registro INTCON y el flag (bandera) de la interrupción es el T0IF del registro INTCON.
  • 3. Derlis Hernández Lara 3 ADC La conversión analógica-digital (CAD) consiste en la transcripción de señales analógicas en señales digitales, con el propósito de facilitar su procesamiento (codificación, compresión, etc.) y hacer la señal resultante (la digital) más inmune al ruido y otras interferencias a las que son más sensibles las señales analógicas. Un ADC en un microcontrolador mide el voltaje V en un pin (que tendrá que estar declarado como entrada con el correspondiente registro TRISA) y lo convierte en un número. El voltaje se mide con referencia a un voltaje mínimo, Vref(-) , y a un voltaje máximo, Vref (+). Normalmente Vref- suele ser Vss=GND=0V y Vref+ = Vcc = 5V, pero pueden usarse otros voltajes de referencia. La resolución del ADC es una característica fundamental y nos dice el número de niveles con los que cubrimos el intervalo [0,1]. Por ejemplo, en los PIC solemos tener una resolución de 10 bits, que representan 2^10=1024 niveles. El intervalo real [0,1) se aplicaría al intervalo [0,1023]. Si asumimos un rango de 5V, tendremos que la resolución de cada nivel es de r=5/1024 V=4.88 mV. Según la documentación de Microchip (esto puede variar para otros microcontroladores) cualquier voltaje entre [0 y r] (o por debajo de 0, lo que corresponde a V<Vref-) se cuantificaría en el nivel 0. Entre r y 2r tendríamos una salida de nivel 1. Así hasta llegar a nivel 1023 que cuantificaría voltajes por encima de 1023r = 1023x 5/1024 = 4.995V. Como se ve, voltajes por debajo de Vref- o por encima de Vref+ son posibles y se cuantifican como nivel mínimo 0 o máximo, 1023. Niveles por debajo de 0V o por encima de la tensión de alimentación (normalmente 5V) pueden ser dañar el PIC. Aunque un PIC puede tener del orden de 8-12 posibles canales (pines) de entrada analógica, solo tiene normalmente un único módulo ADC, lo que significa que no podemos tomar medidas simultáneas de varios canales. Si es necesario, lo que podemos hacer es ir conectando (seleccionando) los sucesivos canales al ADC para ir midiendo sus voltajes. El proceso de una conversión ADC se divide en un tiempo de adquisición Ta (durante el cual un condensador interno se carga al voltaje exterior) y un tiempo de conversión Tc (durante el cual se desconecta el pin exterior y se cuantifica el voltaje del condensador). Para el PIC16F887 no hay que preocuparse por programar una rutina para el tiempo, porque ya cuenta con la electrónica necesaria para hacerlo, solo hay que preguntar por la bandera que indica que ya acabo el proceso de adquisición y utilizar el valor guardado de la conversión. El tiempo de conversión Tc depende fundamentalmente del número de bits del conversor. La unidad básica es el llamado Tad, aproximadamente el tiempo necesario para ganar un bit adicional. La conversión total tarda entre 11 y 14 Tad (contando con la descarga final del condensador para estar listo para otra medida. El reloj del ADC se debe ajustar (como una fracción del oscilador principal) para que dicho Tad no sea inferior a un valor mínimo especificado en los datasheet. Por ejemplo para la familia PIC18F252/452 el Tad mínimo es de 1.6 usec y Tc = 14 Tad. En cambio para la familia PIC18F2520/4520 tenemos un Tad mínimo de 0.75 usec y un Tc = 11 Tad.
  • 4. Derlis Hernández Lara 4 USART Cuando se ha logrado implementar cualquier protocolo de comunicación entre una PC y un microcontrolador se puede decir que una gran cantidad de aplicaciones están a la puerta, entre las cuales se pueden nombrar monitoreo, control digital, impresión de datos en papel, impresión en pantalla de datos inmediatos, etc. Los protocolos más comúnmente implementados en microcontroladores y PC son: RS232, IP, Paralelo, etc. El microcontrolador PIC16F887 tiene incluido dentro de su estructura interna un módulo USART (Transmisor receptor universal síncrono asíncrono) que es la abreviación de “universal syncchronous asynchronous receiver transmitter” en ingles también es conocido como SCI (“serial comunications interface”) y es uno de los más comúnmente usados para la implementación de puertos seriales, la configuración asíncrona full dúplex es una de las más populares de la USART porque es usada para interfaces con el puerto serie de las PC usando el protocolo RS-232. La función principal del módulo USART es enviar y recibir datos de forma serial, esta operación puede ser dividida en dos categorías, transmisión síncrona y transmisión asíncrona. La operación síncrona usa una línea de datos y una de reloj mientras que la asíncrona solo usa la línea de datos, para este periodo del curso solo se analizó la transmisión asíncrona. Modo asíncrono: La comunicación asíncrona es la que generalmente se utiliza entre un microcontrolador y una PC. Para la comunicación serie con la PC se utiliza el estándar “no retorno a cero” (NRZ) en la forma conocida como 8-N-1 que quiere decir 8 bits de datos, sin paridad y un bit de parada tal como se muestra en la figura 1. Figura 1. Cronograma del protocolo RS-232. Línea libre se define como un estado lógico alto o uno. El inicio de la transmisión de datos (Bit de inicio) se define como un estado lógico bajo o cero. Los bits son enviados enseguida del bit de inicio, enviando en primer lugar el bit menos significativo, después de los bits de datos se envía el bit de parada que es un estado lógico alto o uno. El periodo T depende de la velocidad de transmisión y es ajustado de acuerdo a las necesidades de transmisión. En la figura 2 se muestra un conector RS-232 y en la tabla 1 los nombres de cada pin.
  • 5. Derlis Hernández Lara 5 Figura 2. Conector DB9 estándar. Tabla 1. Nombres de los pines del conector DB9. La interface física que ese utiliza comúnmente para conectar un microcontrolador con la PC se muestra en la figura 3. El circuito MAX232 realiza la tarea de generar de acuerdo a los valores lógicos entregados por le microcontrolador los niveles necesarios de voltaje para la comunicación RS-232. Figura 3. Conexión física para la comunicación RS-232.
  • 6. Derlis Hernández Lara 6 Para implementar la comunicación serial entre una PC y un microcontrolador en la etapa experimental se suele utilizar el programa Hyper Terminal como se muestra en la figura 4. Figura 4. Configuración y elección del puerto disponible a utilizar. Una vez que se ha establecido la comunicación entre Hyper Terminal y el microcontrolador se puede programar la aplicación deseada en cualquier software como Matlab, Labview, Visual basic, etc. DESARROLLO: Realizar un programa y circuito correspondiente que digitalice dos canales analógicos y los envié a la PC para dibujar lo que se está captando con ayuda de algún software. Enviar 500 muestras por segundo (mps). 1° Para la parte de la transmisión serial es importante enviar los datos con una velocidad estándar y exacta por lo que se utiliza un cristal comercial de 3686400 Hz. 2° Por lo que el tiempo de ejecución de una instrucción es: 3° Se envían 4 bytes, luego entonces 500*4=2000 mps y además cada muestra es de 10 bits, luego entonces 2000*10=20000 bps (bits por segundo). Por lo que se puede utilizar cualquier velocidad de transmisión estándar mayor a 20000 bps, como pueden ser
  • 7. Derlis Hernández Lara 7 38400 bps, 115200 bps, 230400 bps, etc. Para este caso se utiliza una velocidad de transmisión estándar de 115200 bps, para poder observar bien la simulación en la herramienta MPLAB y para asegurar que no haya pérdida de datos. 4° Ahora para saber en cuanto tiempo se envían las 500 muestras: 5° Sabiendo que TMR0 solo puede contar hasta 255, hay que seleccionar el preescalador que permita contar esta cantidad, si se quiere enviar 2000 bits cada 2 ms: 2000/8=250, por lo que con el preescalador 1:8 es suficiente. 6° Para saber cuántos ciclos hay que contar: Usando la escala 1:8, 1843/8=230 y como TMR0 cuenta 256, 256-230=26, se debe inicializar TMR0 en 26, esto se puede ajustar para obtener el menor error posible. 8° Con los valores obtenidos ya se puede configurar el TMR0 encargado de contar que se envíen los 4 bytes a la PC cada 2 ms. Este temporizador se configura para que empiece a contar (la primera vez no importa el tiempo que se tarde), y cada 230 instrucciones aumenta en uno su valor, así al cabo de 8 conteos habrá ejecutado las 1843 instrucciones que se necesitan para este caso. Se programa generando una interrupción cada que se enciende la bandera de fin de conteo. A continuación se muestra su configuración en lenguaje ensamblador: Los registros asociados al TMR0 son:  INTCON y el OPTION_REG.  El bit T0CS (OPTION 5) a 1 trabaja con un oscilador externo, 0 utiliza la Fosc/4.  El bit T0SE (OPTION 4) en modo contador a 1 flanco descendente, 0 flanco ascendente.  El bit PSA (OPTION 3) 0 preescaler al temporizador, 1 preescaler al WDT.  Cuando se desborda el TMR0, se activa el bit 2 de INTCON (T0IF) y si el T0IE está activado el T0IF generara interrupción y se debe borrar por software cuando se atienda la interrupción. Para este caso, OPTION_REG=1101 0010=D2 (hex).
  • 8. Derlis Hernández Lara 8 Observe que en el programa en lugar de inicializar TMR0 en 26, se hizo en 27, esto se hizo para obtener el menor error posible, al inicializarlo en 27 y agregar 5 instrucciones de no operación se obtiene un tiempo de 1.999783 ms que es lo más cercano a los 2ms que se están buscando (figura 5). Figura 5. Tiempo del TMR0 y número de instrucciones realizadas. 9° Una vez que ya se tiene el tiempo de envió requerido, es hora de mandar datos a la PC mediante el periférico USART. Para la transmisión de datos:
  • 9. Derlis Hernández Lara 9  Se inicializa el registro generador de Baud Rate (velocidad de transmisión deseada) SPBRG con el valor apropiado, si se usa una velocidad alta el bit BGRH debe estar en 1. Para lo cual se usa la siguiente expresión: Para este caso:  Se habilita el puerto serie asíncrono limpiando el bit SYNC y se pone a 1 el bit SPEN (serial port enable).  Se carga el dato en el registro TXREG (después de esto se inicializa la transmisión).  Habilitar la transmisión poniendo a 1 el bit TXE. En el código anterior se configura el periférico USART para la transmisión serial de datos. Después se realiza esta configuración junto con el TMR0, se configura el USART en la inicialización antes de la interrupción, y ya dentro de la interrupción se envían los 4 bytes cada 2ms aproximadamente como se ve en la figura 6, se realiza una prueba enviando “U”, que después será remplazada por la adquisición del ADC.
  • 11. Derlis Hernández Lara 11 Figura 6. Envió de datos por el USART cada 2ms. 10° Una vez establecido el TMR0 y el USART, solo falta habilitar el ADC, para enviar la conversión de dos señales analógicas a la PC, se enviaran 500 mps cada 2ms a una velocidad de transmisión de 115200 bps. Para configurar el ADC:  Configurar pines como entradas analógicas, seleccionar o no voltajes de referencia (VCFG), etc.  Una vez configurado, habilitar el ADC (ADON=1).  Escoger canal (bits CHS) a usar (el pin dado se conecta al condensador).  Esperar (delay) Ta mientras se carga el condensador.  Lanzar la conversión (GO=1).  Esperar a completar a que la conversión concluya (GO=0).  Extraer el resultado de ADRESH: ADRESL.  Si hemos terminado con el ADC, apagarlo para reducir consumo.
  • 12. Derlis Hernández Lara 12 Ahora implementando el ADC dentro del TMR0 para que la conversión y el envió se haga dentro de los 2 ms establecidos:
  • 14. Derlis Hernández Lara 14 11° Para poder ver las señales enviadas por el microcontrolador a la PC se puede usar un osciloscopio o capturarlas y graficarlas en Matlab por ejemplo. Programa ocupado para la adquisición de datos con Matlab:
  • 17. Derlis Hernández Lara 17 Como al inicio de la lectura del puerto no se sabe que byte se leerá, se implementó un algoritmo en el cual pueden existir dos casos, que lea el byte con los bits menos significativos (caso 2), o el de los bits más significativos (caso 1). Para determinar en que caso se toma la lectura, primero se obtienen los bytes pares e impares respecto a su posición y se guardan en su respectivo arreglo, se tomaron los últimos 5 bits de cada byte y se dividió entre 2, si el residuo de los impares es cero entonces la lectura se tomó en el caso 2 por que el byte de los bits menos significativos solo ocupa los 2 primeros bits y por lo tanto los otros 8 bits son ceros, de lo contrario será el caso 1. Una vez establecido el inicio de la lectura, se utiliza el arreglo de la lectura del puerto y se concatenan los pares de bytes, es decir los primeros 2 bytes, luego los siguientes 2 y así sucesivamente, como el nuevo dato es de 16 bits, se recortan los últimos 6 porque la resolución del ADC es solo de 10 bits y se crea un nuevo arreglo con datos de 10 bits cada uno, por último se separan los datos pares e impares respecto a su posición en el arreglo y se establece que los pares corresponden a un canal y los impares al otro canal y se mandan a graficar por separado. Si la lectura callo en el caso 2, es decir empezó la lectura del puerto con el byte menos significativo, se descarta el primer byte y se realiza el mismo procedimiento pero a partir del segundo byte de la lectura y hasta el penúltimo. Conclusiones: Con la elaboración de la presente práctica se desarrollaron las habilidades necesarias para poder analizar y configurar aspectos básicos a la hora de usar un microcontrolador y sus diferentes periféricos, se aplicaron los conceptos de contador, transmisión serial, convertidor analógico digital, etc., además de cómo poder recibir datos en la PC y visualizarlos con ayuda de alguna herramienta de software como por ejemplo Matlab. Referencias: “PICmicro Mid-Range MCU Family Reference Manual”, Microchip rev/DS33023A, December 1997. “PIC16F887 Data sheet” Microchiop rev/30292c, 2001 “MAX232 Data sheet”, Texas Instruments, 2003.