Autor Tema: Interrupciones multiples 16f  (Leído 3423 veces)

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

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Interrupciones multiples 16f
« en: 07 de Junio de 2007, 12:27:42 »
saludos, pues he estado revisando mis conceptos de assembler, jaja, ya llevaba polvo mi libro, y pues como he estado practicando interrupciones multiples en CCS, pues me vino la duda para aplicarlo en assembler, en ccs es sencillo ya que solo defines el tipo de interrupcion y ya el compilador te lo arrregla para cuando debe ejecutarse.

ahora en caso de assembler no existe tal ya que solo es un vector de interrupcion el que se define con org 0x04 cierto? entonces como usar otra interrupcion, la idea que tengo será de verificar los bits de si ha ocurrido un desborde por ejemplo TMROIF (de INTCON), el ADIF (de PIR1), etc, en resumen ver cual INTERRUPT FLAG se ha seteado, verdad??

es correcta mi deducción, o que mas debo hacer??

gracias.
.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Interrupciones multiples 16f
« Respuesta #1 en: 07 de Junio de 2007, 12:40:35 »
1) Guardar el contexto o Context Saving que consiste en guardar el WREG, STATUS, y PCLATH y todo registro que sea importante que uses en el bloque principal del programa y que también uses en el código de interrupción (FSR por ejemplo)

2) Chequear qué interrupt flag está encendido.  Por supuesto solo deberás verificar los flags de las interrupciones que estás controlando, las que no estás controlando no tiene sentido verificarlas.

3) Borras el flag en cuestión (ya sea mediante un bcf o la instrucción que lo haga borrar automáticamente como es el caso de la USART que se borra el flag cuando se lee el RCREG)

4) Restauras el contexto

5) Retornas de la interrupción rehabilitado el GIE (RETFIE).

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Interrupciones multiples 16f
« Respuesta #2 en: 07 de Junio de 2007, 12:51:19 »
graficando lo antes expuesto:

declarar el vector de interrupcion


inicializar una interrupcion, en este caso interrupcion por intext en RB0 y timer1


guardar y restaurar el contexto en la rutina de interrupcion, y preguntar por los bits banderines de cada interrupcion.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Interrupciones multiples 16f
« Respuesta #3 en: 07 de Junio de 2007, 12:55:07 »
Si bien lo que expones micro_cadaver no está mal si el pic tiene una sola página pero incluso en ese caso no veo necesidad de andar haciendo un salto en el vector de interrupción a otro lado.

Esta práctica, que no se de donde viene (tal vez de algún libro) no solo que es innecesaria, sino que también es "peligrosa" cuando el pic tiene más de una página y la interrupción salta estando en otra página de código diferente a la 0...

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Interrupciones multiples 16f
« Respuesta #4 en: 07 de Junio de 2007, 14:47:12 »
claro que si, lo que puse solo funciona en una sola pagina.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com