Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: Pinolillo16 en 13 de Marzo de 2015, 18:29:54
Título: PIC se cuelga en Interrupcion
Publicado por: Pinolillo16 en 13 de Marzo de 2015, 18:29:54
Que tal amigos estoy trabajando en un pequeño proyecto, en el cual solo leo temperatura de unos sensores y muestro un reloj, el problema esta en el momento en que hago andar el reloj, al cabo de unos minutos se traba y deja de ejecutar todo. La parte de configuración de la interrupcion es esta:
Código: ASM
CONFIG_TIMER1
BSF RCON,7
; CLRF IPR1
; CLRF IPR2
BSF IPR1,0
CLRF INTCON
BSF PIE1,TMR1IE; ACTIVAMOS INTERRUPCION TIMER 1
CLRF T1CON
BSF T1CON,7
BSF T1CON,5
BSF T1CON,4
BCF PIR1,TMR1IF; LIMPIAMOS BANDERA
; CLRF CCP1CON
MOVLW B'00000000'
MOVWF TMR1H
MOVLW B'01110100'
MOVWF TMR1L
MOVLW B'11000000'
MOVWF INTCON
CLRF SEGUNDOS_ACT
CLRF SEGUNDOS_AUXILIAR
CALL LCD_CLEAR
CALL RET_1ms
BSF T1CON,TMR1ON
RETURN
Donde configuro el Timer 1 como temporizador para actualizar los segundos, la parte donde atiendo la interrupcion es esta:
Código: ASM
BAJA_PRIORIDAD
MOVFF FSR1,FSR_TEMP
MOVFF STATUS,STATUS_TEMP
MOVFF W,W_TEMP
BTFSS PIR1,TMR1IF
GOTO FIN_INTER
MOVLW B'00000000'
MOVWF TMR1H
MOVLW B'01110100'
MOVWF TMR1L
BCF PIR1,TMR1IF
; BCF T1CON,TMR1ON
INCF SEGUNDOS_AUXILIAR,F
FIN_INTER
MOVFF W_TEMP,W
MOVFF STATUS_TEMP,STATUS
MOVFF FSR_TEMP,FSR1
; BSF T1CON,TMR1ON
RETFIE
He estado probando de todo, tanto Baja como Alta Interrupcion los direcciono al mismo lado, ya probe direccionandolos diferente, preguntando por el flag del timer1 pero siempre hace lo mismo. Que me sugieren amigos?
Saludos
Título: Re: PIC se cuelga en Interrupcion
Publicado por: KILLERJC en 14 de Marzo de 2015, 18:41:21
Que PIC estas usando ? Para aunque sea buscar el datasheet y ayudarte para ver si se encuentra alguna solucion. Parece ser uno de la familia PIC18 por el set de instrucciones y 2 prioridades de interrupcion.
EDIT:
Con el codigo que pasaste:
Algunas cosas, estas configurando el timer 1 con alta prioridad cuando veo que creo estas haciendo una de "baja prioridad", Tenes activado ambas prioridades, imagino que tenes otra interrupcion. Y que baja prioridad lo tenes en un ORG 0x18
Adema de eso no veo nada fuera de lo comun, podrias poner que se ponga a 1 una salida cuando entre a una interrupcion y a 0 cuando salga, para saber si realmente se te esta trabando en la interrupcion