TODOPIC
Simuladores, editores de PCB, etc => Simuladores de circuitos => Proteus ISIS => Mensaje iniciado por: Fer_TACA 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
-
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
-
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