Autor Tema: Proteus e Interrupcion TMR1  (Leído 2442 veces)

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

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Proteus e Interrupcion TMR1
« en: 27 de Junio de 2005, 05:13:00 »
Hola compañeros:


Tengo una duda, que algun sabio me pueda ayudar a eliminar. Es la siguiente:

Tengo el proteus actualizado a sp7
He realizado un programita y la interrupción por desbordamiento del TMR1 creo que no me funciona.

Si corro el programa paso a paso funciona, pero creo que en este caso no estan habilitadas las interupciones ¿Es correcto?

Si lo hago funcionar de manera continua y si deshabilito la interrupción (BCF  PIE1,0)el programa funciona correctamente.
Despues pruebo habilitandola (BSF PIE1,0), borro el flag y ago correr el programa y se me queda bloqueado.


Dentro de la interrupción no tengo nada, un par de nop, borro el flag y reftie para el retorno. Esto lo hago para ver si llega a la interrupción despues de pasar un tiempo de 1minuto, valores que tengo cargados en TMR1H y TMR1L.

Alguna idea?  
El programa es un poco largo y voy a tratar de colocar lo más abajo por si alguien amable me comenta algo.




ORG      0x00
goto         Inicio.
ORG      0x04            
goto      INT_RB0   
;********************************************************************************************************************
;Primero se configuran las condiciones iniciales de los puertos del micro.
Inicio      Banco_1                   movlw      b"11111111"            
movwf      TRISB
movlw      b"00000000"
movwf      TRISC               
movlw      b"00000110"            
movwf      ADCON1               
movlw      b"00001000"            
movwf      TRISA
movlw      b"10000111"
movwf      OPTION_REG            
movlw      ~.195
movwf      PR2
bsf      PIE1,0
Banco_0                  
movlw      b"00110001"
movwf      T1CON   
movlw      b"11010000"
movwf      INTCON   
movlw      .120
movwf      Delay_TMR1
movlw      low ~.62500
movwf      TMR1L
movlw      high ~.62500
movwf      TMR1H
bcf      PIR1,0
movlw      .1
movwf      Delay_Tiempo
movlw      .1
movwf      Cuenta_TMR1_On

........
MI programa
..........

;Tratamiento de interrupcion del TMR1
INT_TMR1    nop
                   nop
                   retfie

Espero no haberme equivocado al copiarlo

UN saludo y gracias por anticipado

Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
RE: Proteus e Interrupcion TMR1
« Respuesta #1 en: 27 de Junio de 2005, 13:49:00 »
Hola de nuevo:
Por si no me explique correctamente en el post anterior, os comento que el programa lo que realiza es :
Se cargan los registros TMR1H y TMR1L con un valor tal que se debe de producir una interrupción cada 0,5 sg y nada.
Dentro de la rutina de interrupción he probado ha añadir el código que recomienda Microchip para preservr los valores del W, Status y Pclath, pero todo sigue igual.
Seguiré probando, pero acepto cualquier sujerencia.
Un saludo
Carmelo
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
RE: Proteus e Interrupcion TMR1
« Respuesta #2 en: 07 de Julio de 2005, 02:21:00 »
Hola compañeros:

Despues de mucho revisar mi programa, he llegado a la conclusión de que la interrupción en el Proteus funciona correctamente.
Tenia activadas dos iterrupciones distintas y cuando se activaba la del TMR1 la rutina de tratamiento la tenia cruzada con la que no era la del TMR1, por eso me volvia loco, los nombres de salto a las rutinas de tratamiento eran casi iguales y por más que miraba no era capaz de encontrarlo.
Así que lo deje unos dias y  luego retomé la revisión del programa una vez que estaba despejado y lo encontré en un minuto.
Gracias a todos un saludo
Carmelo
Todos los días se aprende algo nuevo.


 

anything