Professional Documents
Culture Documents
. El vector de interrupcin se encuentra en la direccin 04H de la memoria de programa. Al terminar la rutina de servicio (RETFIE) se retoma el programa en el punto de ruptura. Fuentes de interrupcin: Pin INT, cambio en los terminales del puerto B (RB7:RB4). Overflow en los temporizadores. Cambio en el comparador. Fin de escritura en la memoria EEPROM de datos. Relacionadas con el Puerto Paralelo Esclavo, con la USART, con el fin de conversin A/D y en general con los mdulos perifricos con que puede contar una MCU. Gestin de interrupciones mediante registros: INTCON: registro general de control y estado. En funcin de los perifricos disponibles por una MCU: PIE1, PIE2 (Peripheal Interrupt Enable) habilitan las interrupciones de cada perifrico. PIR1 y PIR2 (Peripheal Interrupt Flag Registers) identifican el perifrico que interrumpe.
SISTEMAS ELECTRNICOS AVANZADOS. ING. TC. INDUSTRIAL ELECTRNICO
32
Bit 7 GIE: (Global Interrupt Enable) bit de habilitacin global de interrupciones 1 = Habilita las interrupciones. 0 = Inhibe todas las interrupciones. Se pone a cero cuando se reconoce una interrupcin (para evitar interrupciones anidadas) y a 1 cuando se vuelve de su rutina de servicio. Bit 6 PEIE: (Peripheral Interrupt Enable) bit de habilitacin de interrupciones de perifricos. 1 = Habilita las interrupciones desde los perifricos. 0 = Inhibe las interrupciones desde los perifricos. (3) En MCU con un solo perifrico puede ser EEIE o ADIE Bit 5 T0IE: (Timer 0 Overflow Interrupt Enable) bit de habilitacin del Timer 0. 1 = Habilita la interrupcin con el desbordamiento del Timer 0. 0 = Inhibe la interrupcin con el desbordamiento del Timer 0. Bit 4 INTE: (INT External Interrupt Enable) bit de habilitacin de interrupcin desde el pin de entrada INT. 1 = Habilita la interrupcin. 0 = Inhibe la interrupcin. (2) Algunas MCU no disponen de esta caracterstica
SISTEMAS ELECTRNICOS AVANZADOS. ING. TC. INDUSTRIAL ELECTRNICO
33
Bit 3 RBIE: (RB Port Change Interrupt Enable) bit de habilitacin de interrupcin con el cambio de RB7:RB4 1 = Habilita la interrupcin. 0 = Inhibe las interrupcin. (2) Algunas MCU no disponen de esta caracterstica (1) Tambin se puede encontrar con el nombre GPIE. Bit 2 T0IF: (Timer 0 Overflow Interrupt Flag). 1 = Interrupcin producida por el desbordamiento del Timer 0 (debe ser puesto a cero por SW). 0 = El Timer 0 no se ha desbordado. Bit 1 INTF: (INT External Interrupt Flag). 1 = Interrupcin producida por INT (debe ser puesto a cero por SW). 0 = INT no ha interrumpido la MCU. (2) Algunas MCU no disponen de esta caracterstica Bit 0 RBIF: (RB Port Change Interrupt Flag). 1 = Interrupcin producida por el cambio en alguno de los bits RB7:RB4 (debe ser puesto a cero por SW). 0 = RB7:RB4 no han interrumpido la MCU. (2) Algunas MCU no disponen de esta caracterstica (1) Tambin se puede encontrar con el nombre GPIF.
SISTEMAS ELECTRNICOS AVANZADOS. ING. TC. INDUSTRIAL ELECTRNICO
34
35
TIEMPO DE LATENCIA Es el tiempo que transcurre desde que se produce un evento de interrupcin hasta que se ejecuta la instruccin de la direccin 04H. Interrupciones sncronas (normalmente internas) tiempo de latencia= 3 Tcy. Interrupciones asncronas (normalmente externas) tiempo de latencia= 3-3,75 Tcy.
36
(1) El flag INTF se muestrea cada Q1. (2) El tiempo de latencia comprendido entre 3 y 3,75 Tcy. (3) CLKOUT disponible solo si el oscilador es RC. (4) Anchura mnima de pulso requerida en funcin de la MCU (para el 16F84A 20ns.) (5) INTF debe ponerse a cero por Sw.
37
MICROCONTROLADORES PIC INTERRUPCIONES Fases en la gestin de interrupciones: 1. PC->Pila y GIE=0 2. PC=0004H 3. Se salvan los registros cuyo contenido se desee conservar (W, STATUS, etc.) PUSH 4. Se determina la fuente de interrupcin (interrogando los flags correspondientes) 5. Se ejecuta la rutina de servicio a la interrupcin 6. Se borra el flag relacionado con la interrupcin atendida. 7. Se restauran los registros POP 8. Se ejecuta RETFIE 9. Pila->PC y GIE=1
38
39
MICROCONTROLADORES PIC PUERTOS DE E/S Se pueden considerar los perifricos ms sencillos, implementan las entrada-salida de la MCU. Se utilizan mediante dos registros: PORTx (datos) y TRISx (control) Pueden implementarse hasta siete puertos de caractersticas distintas (x puede sustituirse con identificadores de puerto desde la A hasta la G) Cada uno de los bits de TRISx establece la direccin de la informacin de su correspondiente bit (pin) en PORTx. Un 1 configura el pin como entrada. Una operacin de lectura obtiene el nivel presente en el terminal implicado. Un 0 configura ese pin como salida, manteniendo el bit de salida mediante un latch. Despus de un reset todos los bits de TRISx son 1. Los pines de entrada/salida pueden estar multiplexados con varios perifricos. Para conocer con exactitud las caractersticas de cada puerto en concreto es imprescindible. Consultar las hojas de caractersticas de cada dispositivo.
40
41
MICROCONTROLADORES PIC PUERTOS DE E/S Puerto A: Tiene 6 bits. RA4 Tiene entrada Trigger Schmitt y salida drenador abierto. El resto admiten niveles de entrada TTL y salida CMOS. Diagrama de bloques para RA3:RA0 y RA5.
42
43
MICROCONTROLADORES PIC PUERTOS DE E/S Puerto B: Puerto de 8 bits bidireccionales Diagrama de bloques para RB3:RB0.
44
45
La escritura en un puerto implica una lectura-modificacin-escritura. Puede acarrear problemas en operaciones de escritura sobre puertos en los que unos pines estn configurados como entradas y otros como salidas:
46
MICROCONTROLADORES PIC PUERTOS DE E/S Operaciones sucesivas sobre un puerto de entrada salida Escritura y lectura sobre el puerto B:
A frecuencias de reloj ms altas, una escritura seguida por una lectura puede ser problemtica debido a la capacidad externa, en esos casos puede ser conveniente utilizar NOP entre esas instrucciones.
47
MICROCONTROLADORES PIC PUERTOS DE E/S Operaciones sucesivas sobre un puerto de entrada salida Operaciones que implican lectura-modificacin escritura:
48
Caractersticas: Contador temporizador de 8 bits Accesible mediante operaciones de lectura y escritura. Incorpora un prescaler de 8 bits programable por Sw. Reloj interno o externo. Seleccin del flanco del reloj externo Puede producir una interrupcin al debordarse.
49
Bit 7 RBPU: bit de habilitacin de resistencias pull-up 1 = Inhibidas 0 = habilitadas Bit 6 INTEDG: bit de seleccin del flanco activo de la interrupcin INT 1 = Flanco ascendente 0 = Flanco descendete Bit 5 T0CS: bit de seleccin de reloj para TMR0 1 = Transicin del pin T0CKI (reloj externo). 0 = Reloj interno (CLKOUT). Bit 4 T0SE: bit de seleccin de flanco cuando el reloj es externo 1 = Flanco de bajada de T0CKI. 0 = Flanco de subida de T0CKI
50
Bit3 PSA: bit de asignacin del prescaler 1 = Prescaler asignado al WDT. 0 = Prescaler asignado al TIMER 0. Bit 2:0 PS2:PS0: Valor de divisin del prescaler PS2 000 001 010 011 100 101 110 111 TMR0 1:2 1:4 1:8 1:16 1:32 1:64 1:128 1:256 WDT 1:1 1:2 1:4 1:8 1:16 1:32 1:64 1:128
51
Una escritura en TMR0 provoca dos ciclos de instruccin (2Tcy) en los que no se puede volver a escribir en l.
52
Una escritura en TMR0 actualiza el registro e inicializa el prescaler. El incremento del temporizador 0 (TMR0+prescaler) se inhibe durante dos ciclos de instruccin (2 Tcy), como el prescaler est configurado como divisor por 2, el temporizador 0 no se incrementar durante 4 tiempos de reloj.
53
54
El reloj/prescaler se muestrea en Q2 y Q4
55
56
57
58