Autor Tema: Disculpen por interrumpir  (Leído 3254 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado YF-21

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 185
Disculpen por interrumpir
« en: 30 de Junio de 2004, 22:41:00 »
En un tema del cursillo de pics desde cero se mencionó algo sobre lo que son las interrupciones en los pics.

Si no mal recuerdo, Abago hizo una explicacion que incluía un carro, una novia y un amigo ... y estuvo sorprendente ... pero mis dudas se ampliaron, así que llegué a esta conclusion...

Las interrupciones son desviaciones del programa principal (como un goto en lenguaje C o alguna clase de salto quiero suponer)
tambien entendí que las desviaciones (o los subprogramas contenidos en la desviacion) no deben ser muy grandes

Creo que para saber eso de la interrupcion se activa alguna clase de bandera o se va a alguna direccion del micro (por favor aclarenme esto) y ahora la pregunta ... y luego ... ¿?

Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: Disculpen por interrumpir
« Respuesta #1 en: 30 de Junio de 2004, 22:49:00 »
Efectivamente, las interrupciones, sirven para controlar determinadas partes del hardware del pic...
por ejemplo, los timer, la usart, portb.....

lo que hace el programa en caso de detectar una interrupción, es dejar lo que está haciendo, chekear el módulo de interrupciones, como muy bien dices, por ejemplo para activar un flag...
y finalmente, retorna al programa principal, justamente donde lo había dejado antes de saltar al handler de interrupción...


Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Disculpen por interrumpir
« Respuesta #2 en: 01 de Julio de 2004, 00:48:00 »
Cuando se dispara una interrupción siempre va a buscar el vector (dirección) 0x04. Programando en ensamblador debe ser el usuario el que por programa averigue que tipo de interrupción es la que se ha disparado y vaya a atender cuando lo sepa al correspondiente programita (hecho por nosotros también). La última instrucción de salida del programita de la interrupción es RETFIE, cuando el PIC lee esta instrucción retorna a la siguiente instrucción del programa principal desde donde saltó para atender a la interrupción.

Para averiguar por software que tipo de interrupción es, se hace revisando que bandera (flag) es la que ha subido a 1 (RBIF, INTF, T0IF etc). Al salir de la interrupción, hay que borrar esta bandera.

Cuando está atendiendo a una interrupción el bit GIE (bit GLOBAL de interrupciones) pasa a 0, de forma que prohibe la atención a otra interrupción. Cuando acaba de procesar RETFIE, automáticamente el bit GIE pasa de nuevo a 1, para permitir la llegada de nuevas interrupciones.

Si en lugar de programar en ensamblador, programas con un compilador, es este el que averigua que tipo de interrupción es la que se ha disparado, el usuario no tiene que hacer nada, solo decir al principio con que interrupciones se va a trabajar (se activan los bits parciales y el global)

Un saludo

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1700
    • winpic800
RE: Disculpen por interrumpir
« Respuesta #3 en: 01 de Julio de 2004, 00:56:00 »
pocher y que pasaria si mientras está atendiendo una interrupción , se produce otra que tambien esta activada ?? .

La atiende despues de que termine con la primera ?

saludos.

Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Disculpen por interrumpir
« Respuesta #4 en: 01 de Julio de 2004, 01:09:00 »
Creo que no, no tiene memoria de interrupciones.

Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Disculpen por interrumpir
« Respuesta #5 en: 01 de Julio de 2004, 01:10:00 »
En los PIC18 no sé si hay más de 1 vector de interrupción.

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1700
    • winpic800
RE: Disculpen por interrumpir
« Respuesta #6 en: 02 de Julio de 2004, 00:12:00 »
Parece que los 18 tiene 2 vectores y con prioridades , en este caso parece que sí salta a atender a la de mas prioridad si esta procesando la de menos . esto creo entender en el data .

Desconectado YF-21

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 185
RE: Disculpen por interrumpir
« Respuesta #7 en: 03 de Julio de 2004, 00:47:00 »
Beuno, gracias por responder, las interrupciones entonces segun concluyo yo son las banderas que se habilitan en el reistro especifico de interrupciones verdad??

Y solo sirven para indicar algun cambio en el flujo del programa. Por ejemplo el desbordamiento del timer0 (bueno, tambien para resetear el pic) Cierto ??

Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Disculpen por interrumpir
« Respuesta #8 en: 03 de Julio de 2004, 01:02:00 »
Las interrupciones como su nombre indica, cuando se provocan, interrumpen el programa principal y van a ejecutar otro programa.

Las interrupciones pueden ser provocadas externamente, por ejemplo mandando un flanco ascendente a RB0 o efectuando un cambio de estado en pines RB4..RB7

También pueden ser provocadas internamente por desbordamiento del TMR0.

Hay más causas de interrupción, depende del pic que tengas.


 

anything