Autor Tema: Duda interrupcion y registro W (Solucionado)  (Leído 2302 veces)

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

Desconectado Skualo

  • PIC10
  • *
  • Mensajes: 42
Duda interrupcion y registro W (Solucionado)
« en: 13 de Abril de 2009, 14:59:16 »
Hola,

Realizando algunas pruebas con interrupciones me surgio una duda: "Un programa esta funcionando y de repente se produce una interrupcion"

Código: ASM
  1. movfw registro ;Despues de correr esta linea se produce la interrupcion
  2. addlw .1

Dentro de la interrupcion se utiliza el registro W.
Pregunta...¿Cuando vuelva de la interrupcion la suma se realizara con 'registro' o con lo que haya quedado en W despues de la interrupcion?

Saludos
« Última modificación: 14 de Abril de 2009, 13:45:07 por Skualo »

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Duda interrupcion y registro W
« Respuesta #1 en: 13 de Abril de 2009, 16:48:43 »
Hola

La instrucción MOVFW no existe en los PIC16 ni en los PIC18 hasta donde yo sé. ¿Te refieres a MOVWF?

Desconectado Skualo

  • PIC10
  • *
  • Mensajes: 42
Re: Duda interrupcion y registro W
« Respuesta #2 en: 13 de Abril de 2009, 17:15:56 »
Pues en el mplab v8.20 funciona sin problemas es igual que poner
Código: ASM
  1. movf registro,w

Desconectado Skualo

  • PIC10
  • *
  • Mensajes: 42
Re: Duda interrupcion y registro W
« Respuesta #3 en: 13 de Abril de 2009, 17:41:31 »
mi pregunta esta orientada a si cuando se guarda algo en W y antes de operar con W salta la interupcion, al volver al programa principal W vale lo que valia antes de saltar o vale segun la ultima operacion realizada en la interrupcion

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 624
Re: Duda interrupcion y registro W
« Respuesta #4 en: 13 de Abril de 2009, 17:42:55 »

Pregunta...¿Cuando vuelva de la interrupcion la suma se realizara con 'registro' o con lo que haya quedado en W despues de la interrupcion?


La suma se realizaria con el valor de W despues de la interrupcion, es por eso que al inicio de una interrupcion lo primero que se hace es guardar los valores de W , STATUS y PCLATH (si corresponde),  en variables temporales y antes del retfie recuperas esos valores. Tambien puede ser necesario guardar otros registros que sean modificados dentro de la interrupcion.

Por cierto el movfw vendria a ser una pseudo instruccion que es soportada por el MPASM para los PICs de gama media y gama baja , otras pseudo instrucciones son: ADDCF, BC, BNC, BZ , BNZ,   y otras mas que pueden encontrarse en la ayuda del MPLAB. yo no las uso porque medio que me confunden.

Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Duda interrupcion y registro W
« Respuesta #5 en: 13 de Abril de 2009, 18:07:08 »
Ah disculpa es que revise las hojas de características de los PIC16 y PIC18 y no la vi en ambos.

Como te comenta Sander, debes salvar el estado de los registros que puedan ser afectados en tu subrutina de interrupción, incluyendo a W.

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Duda interrupcion y registro W
« Respuesta #6 en: 13 de Abril de 2009, 19:03:48 »
yo cuando manejo interrupciones pongo esto:

PUSH      MACRO
         movwf   W_TEMP         ;SALVO EL REGISTRO W
            swapf   STATUS,W
            movwf   STATUS_TEMP      ;SALVO EL REGISTRO STATUS
            clrf      STATUS         ;TRABAJO EN BANK 0
            movfw   PCLATH         ;SALVO EL REGISTRO PCLATH
           movwf   PCLATH_TEMP
            clrf      PCLATH
         ENDM

POP         MACRO                  
         movfw   PCLATH_TEMP
            movwf   PCLATH
            swapf   STATUS_TEMP,W
            movwf   STATUS
            swapf   W_TEMP,F
            swapf   W_TEMP,W
         ENDM

asi que cuando se produce la interrupcion.pongo PUSH para guardar los registros,exactmente en la zona donde compruevo que interrupcion ha sucedido.
y POP antes de retfie.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado Skualo

  • PIC10
  • *
  • Mensajes: 42
Re: Duda interrupcion y registro W
« Respuesta #7 en: 14 de Abril de 2009, 13:44:29 »
Genial funciona muchas gracias!

Saludos