Autor Tema: Ayuda con el tmr1 del 16f876  (Leído 2632 veces)

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

Desconectado kain589

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 324
Ayuda con el tmr1 del 16f876
« en: 05 de Enero de 2006, 17:33:00 »
He estado intentando hacer una rutina que me temporice 10 segundos, esto lo intento realizar temporizando 50ms con el timer1 y con un contador cuyo valor es 200,se decrementa cada vez y cuando es 0 la salida debe bascular, pero no lo hace y no se cual puede ser el problema. A ver si alguien puede ayudarme, muchas gracias
Codigo:
list p = 16f876;no funciona
#include <p16f876.inc>
;temporiza y parpadea portb,0
CONTADOR   EQU   20H
TRANSICION   EQU 21H

ORG 00H
   GOTO INICIO
   ORG   04H
   BCF      PIR1,0;Borro bandera
   DECFSZ   CONTADOR
   GOTO    CONTINUA;Va a retornar de la int,
   BSF      TRANSICION,0
   GOTO   VERSAL
VERSAL
   MOVLW   0C8H
   MOVWF   CONTADOR
   BTFSS   PORTB,0;Analiza la salida
   GOTO    ACTIVAR;Va a activar salida
   BCF      PORTB,0;DESACTIVA
CONTINUA   
   RETFIE
ACTIVAR
   BSF      PORTB,0;activa
   RETFIE
   
INICIO
   BCF      STATUS,6
   BSF      STATUS,5;banco 1
   CLRF   TRISB;B  SALIDA
   MOVLW   01H;HABILITA TMR1E
   MOVWF   PIE1
   MOVLW   0C0H;
   MOVWF   INTCON;HABILITA GIE Y PERIFERICOS
   BCF      STATUS,5;BANCO 0
   CLRF   PORTB
   BSF      PORTB,1;COMPROBAR SI FUNCIONA EL PROGRAMA
TIEMPO
   BCF      T1CON,0
   MOVLW   0DCH
   MOVWF   TMR1L;CARGA TIMER1BAJO
   MOVLW   0BH
   MOVWF   TMR1H;CARGA TIMER1ALTO
   MOVLW   31H
   MOVWF   T1CON;PRESCALER 8 Y ACTIVA
NADA
   GOTO   NADA
   GOTO   TIEMPO
   
   END


Tras ejecutarse la interrupcion el puntero se cargara apuntanto a la siguiente instruccion ,asi saldra del bucle nada y se ira a tiempo. de todas formas por si esto no es asi lo he intentado configurando de nuevo el timer1 antes de retornar de la interrupcion y tampoco me ha funcionado
Saludos desde Córdoba, españa

Desconectado PAOLA09

  • Moderadores
  • PIC18
  • *****
  • Mensajes: 332
RE: Ayuda con el tmr1 del 16f876
« Respuesta #1 en: 06 de Enero de 2006, 08:06:00 »
HOLA

YO LO HE PROBADO EN EL MPLAB Y ME CORRE BIEN, UN DETALLE QUE TE PUEDE ESTAR AFECTANDO ES QUE TENGAS ACTIVO EL WDT, RECUERDA DESACTIVARLO PARA QUE NO SE SATURE Y GENERE CONFLICTO. DIME SI ESO TE FUNCIONA PARA DADO EL CASO MIRAR QUE OTRA COSA PUEDE ESTAR SUCEDIENDO.

Desconectado kain589

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 324
RE: Ayuda con el tmr1 del 16f876
« Respuesta #2 en: 06 de Enero de 2006, 08:56:00 »
Gracias por tu respuesta, se me olvido anotar que a la hora de programar desactivo el wdt, las que tengo activas son lvp, boden y wrt, y Xt para el cristal de 4 Mhz
Saludos desde Córdoba, españa

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: Ayuda con el tmr1 del 16f876
« Respuesta #3 en: 06 de Enero de 2006, 12:13:00 »
No se si lo sabes, pero al activar el LVP, estás desperdiciando una patilla del PIC, en tu caso, la RB3/PGM, que además debe tener una resistencia de pulldown a masa. Si realmente no programas el PIC en bajo voltage, desactiva este FUSE. El boden también lo suelo desactivar que ma dao más problemas que soluciones.

Desconectado kain589

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 324
RE: Ayuda con el tmr1 del 16f876
« Respuesta #4 en: 06 de Enero de 2006, 13:17:00 »
Gracias por la informacion, no lo sabia. Ahora lo he programado asi y tambien sigue sin funcionar, creo que se debe a que el pic cae en un bucle del que no sale. Si lo configuras como salida no pierdes ninguna patilla,no? o habré estado forzando al pic
Saludos desde Córdoba, españa

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: Ayuda con el tmr1 del 16f876
« Respuesta #5 en: 06 de Enero de 2006, 16:38:00 »
Esa patilla la pierdes de todas formas, ya que es la que sustituye al MCLR en la programación en bajo voltaje. Con el fuse LVP activado, la patilla RB3 no existe, ni como entrada ni como salida.

En tu programa tienes un fallo. Cada vez que la interrupción del timer salte, debes recargar el valor del timer a 50ms, si no lo haces, la primera interrupción te saltará a los 50ms, pero las demás tardarán todo el timer en volverse a activar, ya que cuando vuleves de la interrupción el micro sigue ejecutando el bucle "nada goto nada". Después de una interrupción siempre se sigue el programa por donde iva y nunca a la instrucción siguiente, por lo tanto no salta nunca al "goto tiempo".

Desconectado kain589

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 324
RE: Ayuda con el tmr1 del 16f876
« Respuesta #6 en: 06 de Enero de 2006, 19:23:00 »
Gracias por tu ayuda, te lo decia porque yo he usado antes el lvp y el puerto b para sacar datos y no me habia pasado nada. Lo de la recarga tambien lo valore pero tampoco me iba,seria algo asi:

Codigo:
ORG 00H
   GOTO INICIO
   ORG   04H
   BCF      PIR1,0;Borro bandera
   DECFSZ   CONTADOR
   GOTO    RETORNA;Va a retornar de la int,
   BSF      TRANSICION,0
   GOTO   VERSAL
VERSAL
   MOVLW   0C8H
   MOVWF   CONTADOR
   BTFSS   PORTB,0;Analiza la salida
   GOTO    ACTIVAR;Va a activar salida
   BCF      PORTB,0;DESACTIVA
                GOTO    RETORNA
ACTIVAR
   BSF      PORTB,0;activa
   GOTO RETORNA
RETORNA                
               BCF   T1CON,0
   MOVLW   0DCH
   MOVWF   TMR1L;CARGA TIMER1BAJO
   MOVLW   0BH
   MOVWF   TMR1H;CARGA TIMER1ALTO
   MOVLW   31H
   MOVWF   T1CON;PRESCALER 8 Y ACTIVA
                RETFIE


Edito:
Ya lo he conseguido hacer funcionar, tenia varios fallos. Para empezar el timer1 temporizaba 500 milisegundos y no 50, no se xq me equivoque; y ademas el contador hay que configurarlo junto al temporizador, ya que si no la primera vez toma un valor cualquiera
Saludos desde Córdoba, españa

Desconectado FixxxerMetal

  • PIC10
  • *
  • Mensajes: 11
RE: Ayuda con el tmr1 del 16f876
« Respuesta #7 en: 23 de Febrero de 2006, 17:55:00 »
Escrito originalmente por antoniof
No se si lo sabes, pero al activar el LVP, estás desperdiciando una patilla del PIC, en tu caso, la RB3/PGM, que además debe tener una resistencia de pulldown a masa. Si realmente no programas el PIC en bajo voltage, desactiva este FUSE. El boden también lo suelo desactivar que ma dao más problemas que soluciones.


Como eseso que se desperdicia una pata del pic? para que sirve el LVP y el BODEN? la resistencia de pull down se coloca solamente cuando se activa el LVP? a que se debe?

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Ayuda con el tmr1 del 16f876
« Respuesta #8 en: 23 de Febrero de 2006, 20:32:00 »
Escrito originalmente por FixxxerMetal
Escrito originalmente por antoniof
No se si lo sabes, pero al activar el LVP, estás desperdiciando una patilla del PIC, en tu caso, la RB3/PGM, que además debe tener una resistencia de pulldown a masa. Si realmente no programas el PIC en bajo voltage, desactiva este FUSE. El boden también lo suelo desactivar que ma dao más problemas que soluciones.


Como eseso que se desperdicia una pata del pic? para que sirve el LVP y el BODEN? la resistencia de pull down se coloca solamente cuando se activa el LVP? a que se debe?


FixxxerMetal fijate aquí , ya te he respondido tu duda.

http://miarroba.com/foros/ver.php?foroid=6510&temaid=4911605
- 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)


 

anything