Autor Tema: interrupcion timer0  (Leído 1817 veces)

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

Desconectado cheswik

  • PIC10
  • *
  • Mensajes: 14
interrupcion timer0
« en: 29 de Mayo de 2007, 13:47:47 »
Hola,

Estoy realizando un trabajo con el pic16f877  donde mi idea era usar el timer cero como temporizador para ir cambiando de estados.  He echo un programa chorras para irme familiarizando con el timer pero no consigo q funcione como quiero.

La idea es que el siguiente programa encienda y apague un led conectado al bit 0 de portc cada vez q el timer 0 desborde:

   org 0
   goto inicio
   org 0x04
   goto rs_interr
inicio
   CLRF STATUS
   CALL conf_interr
   CALL conf_portc
   CALL inicia_timer
sleep
   
;---------------------------
conf_interr
   BSF INTCON,T0IE;   HABILITAMOS INTERRUPICONES TIMER0
   BSF INTCON,GIE;      HABILITAMOS INTERRUPCIONES GLOBALES
RETURN
;--------------------
conf_portc
   BSF STATUS,RP0
   BCF TRISC,0;   portc 0 COMO SALIDA   
   BCF STATUS,RP0
RETURN
;------------------
inicia_timer
   MOVLW 0x00
   MOVWF TMR0;         VALOR INICIAL DE TMR0
   BSF STATUS,RP0;
   MOVLW 0X07   
   MOVWF OPTION_REG
   BCF STATUS,RP0
   
RETURN
;-----------------------
rs_interr
   BCF INTCON,T0IF    ;LIMPIAMOS BANDERA
   btfss PORTC,0
   goto a_uno
   BCF PORTC,0
   goto salir_rutina
   a_uno
   BSF PORTC,0
salir_rutina
   call inicia_timer
   RETFIE
end

nunca entra en la rutina de servicio a la interrupcion, ¿alguien ve algun problema?.

GRACIAS
La estadística es la ciencia según la cual si una persona come dos pollos y otra ninguno, se deduce que cada una se ha comido un pollo

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: interrupcion timer0
« Respuesta #1 en: 29 de Mayo de 2007, 13:55:20 »
hola cheswik

quita el sleep y pon:

goto $

 
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado cheswik

  • PIC10
  • *
  • Mensajes: 14
Re: interrupcion timer0
« Respuesta #2 en: 29 de Mayo de 2007, 18:06:31 »
Gracias Palitroquez, ahora funciona como esperaba.

He visto en el datasheet que la interrupcion despierta al pic del modo sleep...¿Sabes entonces por que con el sleep no funcionaba?

Un Saludo
La estadística es la ciencia según la cual si una persona come dos pollos y otra ninguno, se deduce que cada una se ha comido un pollo

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 624
Re: interrupcion timer0
« Respuesta #3 en: 29 de Mayo de 2007, 18:21:07 »
Cheswik , no todas las interrupciones despiertan al PIC , en tu caso , tu estas configurando el TMR0 para que se incremente internamente, y en el modo sleep se apaga el oscilador , entonces el TMR0 nunca se incrementa , es por eso que no puede despertar al PIC ,porque  nunca desborda.

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 cheswik

  • PIC10
  • *
  • Mensajes: 14
Re: interrupcion timer0
« Respuesta #4 en: 29 de Mayo de 2007, 18:44:50 »
gracias sander

claro, tienes razon.

un saludo
La estadística es la ciencia según la cual si una persona come dos pollos y otra ninguno, se deduce que cada una se ha comido un pollo


 

anything