Autor Tema: No me funciona la interrupción por overflow del TMR1  (Leído 1914 veces)

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

Desconectado Juanp

  • PIC10
  • *
  • Mensajes: 13
No me funciona la interrupción por overflow del TMR1
« en: 26 de Abril de 2007, 01:32:37 »
Buenas, tengo un problema. Configuro mi pic para realizar una interrupción por overflow del TMR1 pero no pasa nada. Alguien sabría decirme en que me estoy equivocando? Configuro el programa de la siguiente forma. Configuro el TMR1 como contador, y estimo que el overflow se produce luego de pasar por el valor FFFF, es correcto esto?


   ORG   0X00      ; Vector de Reset
   GOTO   CONFI
 
   ORG   0X04      ; Vector de interrupción
   GOTO   ADI                 

CONFI   BCF   STATUS,RP0
   BSF   STATUS,RP1    ;Selecciono Banco 1

   BSF   PIE1,TMR1IE   ; Activa Interrupción por Overflow del TMR1

   BCF   STATUS,RP0   ; Selecciono Banco 0

   MOVLW   80      ; Cargo 10000000 para configurar las interrupciones
   MOVWF   INTCON      ; GIE=1
   CLRF   TMR1H      ; Limpio las direcciones del Timer1
   CLRF   TMR1L

   BSF   T1CON,0                   ; Comienza a Contar
WAIT   GOTO   WAIT      ; Espero interrupción

ADI   BTFSC   PIR1,0      ; Verifico si hubo desborde del TMR1
   GOTO   ETC      ; si hubo desborde del TMR1 voy a rutina ERROR
   RETFIE

ETC.. bla bla

Nada más gentes, un saludo.

Desconectado dhmejia

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 260
Re: No me funciona la interrupción por overflow del TMR1
« Respuesta #1 en: 26 de Abril de 2007, 09:33:20 »
Para habilitar la interrupción del timer1 debes también habilitar la interrupción de periféricos, bit 6 (PEIE) del registro INTCON, para configurar el INTCON debería ser:

Código: ASM
  1. movlw       0xC0      ;11000000
  2. movwf      INTCON   ; GIE =1, PEIE = 1

saludos,
Pereira - Colombia

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: No me funciona la interrupción por overflow del TMR1
« Respuesta #2 en: 26 de Abril de 2007, 11:21:58 »
Código: ASM
  1. CONFI   BCF     STATUS,RP0
  2.         BSF     STATUS,RP1    ;Selecciono Banco 1
  3.  
  4.         BSF     PIE1,TMR1IE     ; Activa Interrupción por Overflow del TMR1
  5.  
  6.         BCF     STATUS,RP0      ; Selecciono Banco 0

Ojo, con esto.  Estas seteando el STATUS,RP1 (irás al banco2) y no al banco 1 como tu esperas.

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 Juanp

  • PIC10
  • *
  • Mensajes: 13
Re: No me funciona la interrupción por overflow del TMR1
« Respuesta #3 en: 27 de Abril de 2007, 16:13:32 »
Efectivamente mi error estaba en no setear el bit PEIE del registro INTCON. Gracias!  :mrgreen: :-/