Escuela Politécnica Superior de Elche 4º Ingeniería Industrial 23 de junio de 2008 EXAMEN DE SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS 2º Parte: Microcontroladores + Instrumentación Nombre: ______________________________________________________________________ PROBLEMA 1 (3 puntos) El contenido de la memoria de programa del PIC16F84A a partir de la posición 0000h es el siguiente: • • Deducid con ayuda del manual el programa allí almacenado. Explicad qué tarea realiza dicho programa. Para ello, suponed que las líneas de PORTA están conectadas a pulsadores y las líneas de PORTB a diodos LED, de forma similar a como se muestra en la figura 1. ¿Qué estado tendrán los diodos LED de PORTB si (PORTA)=b'---00101' ? Figura 1 1 PROBLEMA 2 (2 puntos) Si el siguiente programa se ejecuta sobre un PIC16F84A con un reloj de 4MHz según el esquema de la figura 1, ¿qué ocurrirá? ¿Existe algún error en el programa? Justifica tu respuesta mediante la interpretación del programa, indicando que función realiza cada instrucción o bloque de instrucciones (No se valorará la descripción de cada instrucción por separado). __CONFIG _CP_OFF & LIST P=16F84A INCLUDE <P16F84A.INC> Contador _WDT_ON & _PWRTE_ON & _XT_OSC equ 0Ch org goto 0x00 Inicio ;Vector de Reset org goto 0x04 RSI ;Vector de interrupción ;*************** Rutina de servicio de interrupción RSI btfss retfie incf movlw movwf bcf bsf retfie INTCON,T0IF Contador,f d'138' TMR0 INTCON,T0IF INTCON,T0IE ;************** Programa principal Inicio bsf movlw movwf clrf bcf clrf clrf STATUS,RP0 b'00000111' OPTION_REG TRISB STATUS,RP0 PORTB Contador movlw movwf movlw movwf clrwdt d'138' TMR0 b'10100000' INTCON movf xorlw btfss goto clrf btfss goto clrf goto Contador,W d'10' STATUS,Z Bucle1 Contador PORTB,0 Enciende PORTB Principal movlw movwf goto 0xFF PORTB Principal Principal Bucle1 Enciende end 2 TEST(2 puntos. Resp Correcta = 0.20 puntos. Resp Incorrecta = -0.20 puntos) Indica si los siguientes enunciados son verdaderos (V ) o falsos (F): 1 Si el ancho de palabra de la celda de datos en un microcontrolador es de 32 bits, el número positivo mayor que podemos almacenar es el 65535 puesto que el menor es el 0. 2 Cuando se activa alguna fuente de interrupción en el PIC16F84A (INT, RBI, T0I, EEI) el bit GIE del registro INTCON no es puesto a cero automáticamente, lo que puede provocar la atención de dos o más interrupciones simultáneas. 3 En la familia PIC de gama media la pila tiene 8 niveles de memoria tipo FIFO (First Input, First Output; primero en entrar, primero en salir). 4 La subrutina de servicio de interrupción finaliza con la instrucción RETURN que retoma la dirección guardada en la pila y la coloca en el contador del programa (PC) continuando el flujo de control con la instrucción que sigue a CALL. 5 Un procesador segmentado o Pipeline realiza simultáneamente la ejecución de una instrucción y la búsqueda de código de la siguiente, de esta manera, se puede ejecutar una instrucción en sólo dos ciclos máquina . 6 Al igual que los demás miembros de su familia, el PIC16F84 se caracteriza por: su procesador es segmentado o Pipeline y tipo RISC, el formato de las instrucciones es ortonormal y la arquitectura está basada en bancos de registros de 14 bits. 7 El registro de configuración (Configuration Word) dispone de 14 bits y se escribe en él durante el proceso de grabación y no se puede modificar durante la ejecución del programa. Ocupa la posición reservada de memoria de programa 2007h. 8 Los microcontroladores PIC de gama media disponen de un juego de 35 instrucciones de 8 bits . 9 En el PIC16F84A la memoria de datos se encuentra dividida en dos áreas: •Área RAM constituida por 22 registros de funciones especiales (SFR) y 68 de propósito general (GPR) •Área EEPROM de datos formada por 64 registros 10 A los 4 bits menos significativos del registro STATUS se les suele denominar flags o banderas y son los bits de acarreo (C), semiacarreo (DC), operación cero (Z) y habilitación del sistema watchdog (PD). PROBLEMA 4 (1 punto) Una RTD de platino Pt100 se encuentra conectada a su acondicionador mediante dos cables de cobre de 50 m de longitud. La resistencia del cable es de 0.298 Ω /m. Estimar el error a 22ºC que se produce en la medida de la temperatura. La RTD de platino Pt100 tiene un coeficiente de temperatura valor de 100 Ω. α = 0.385%/ºC y a 0 ºC tiene un 3 PROBLEMA 5 (2 puntos) Se dispone de un sensor resistivo de presión que se comporta de modo lineal, de acuerdo con el siguiente gráfico: R[Ω] 150 145 140 135 130 0 10 20 30 40 50 60 p[bar] Este sensor se utiliza en un proceso industrial para medir la presión en una tubería, mediante el circuito que se muestra en la figura inferior. El rango de presiones de funcionamiento normal oscila entre 15 y 40 bares, y debe corresponder con tensiones de salida (V 0) en el rango 0V a 1,5V. Además, para evitar problemas de sobrecalentamiento, por el sensor no puede circular una intensidad superior a 15,3 mA cuando las presiones se encuentren dentro del rango de funcionamiento normal. Si se produjese una avería, la presión alcanzaría 60 bares. Se desea que en estas circunstancias se genere una señal de alarma (la señal “Alarma” del circuito debe activarse). Se pide calcular el valor de las resistencias del circuito R1, R2 y R3. + +5V RA - RB - 5 kΩ 5 kΩ R1 Vd +5V - + 200 kΩ R2 - + RC Sensor + + + VO +5V R1 R3 - Alarma ON = “1” OFF = “0” 2 kΩ 5 kΩ 5 kΩ Tubería 4 EXAMEN DE PRÁCTICAS Escribid un programa para el PIC16F84A, suponiendo que se ejecutará sobre la tarjeta EasyPIC (F osc=8MHz), que realice la siguiente tarea: Todos los bits del Puerto B producen destellos con una intermitencia de 2 segundos, esto es, todos los leds se encienden y se apagan en intervalos de 2 segundos. La temporización se realizará mediante la utilización del sistema Timer0. El cálculo de la carga del TMR0 se hará de forma simple, despreciando el tiempo que tardan en ejecutarse las instrucciones. Puedes utilizar o no la interrupción asociada al sistema Timer0. Como ayuda para realizar tu programa aquí tienes la siguiente plantilla: __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF & _HS_OSC LIST P=16F84A INCLUDE <P16F84A.INC> ORG 0 goto Inicio ORG 5 Inicio ;Configuración de PORTB y del Timer0 Principal ;Programa principal goto Principal ; Subrutina de temporización ******************************************************************** END 5