Autor Tema: Retardo de 500seg usando el TIMR1  (Leído 3244 veces)

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

Desconectado ErnestAl

  • PIC10
  • *
  • Mensajes: 37
Retardo de 500seg usando el TIMR1
« en: 21 de Junio de 2007, 19:08:18 »
Buenas, estoy tratando de implementar un retardo de 500segundos usando el Timr1 para comprender las interrupciones, ¿se podria realizar?. Yo lo he intentado pero no consigo encender la bombilla en proteus a los 8minutos, ¿donde puede estar el fallo?
         list  p=16f877
         #include <p16f877.inc>
         
         conta      equ      0x20
         conta1      equ      0x21
         
         org      0x00
         nop
         goto   main
         org      0x04
         goto   inter

main      
          movlw   b'10111010'
         movwf   conta
         movlw   b'00000011'
         movwf   conta1
         bsf      STATUS,RP0
         BCF      STATUS,RP1
         CLRF   TRISB
         CLRF   INTCON         
         CLRF   PIE1
         CLRF   PIE2
         MOVLW   B'11000000'
         MOVWF   INTCON
         BSF      PIE1,TMR1IE
         BCF      STATUS,RP0
         MOVLW   B'00110000'
         MOVWF   T1CON
         CLRF   PORTB
BUCLE      BSF      T1CON,TMR1ON         
          GOTO   BUCLE

         



inter      DECFSZ   conta,f
         GOTO   SALIDA
         DECFSZ   conta1,f
         GOTO   SALIDA
         GOTO   FIN



SALIDA      BCF      PIR1,TMR1IF
         RETFIE

FIN         BSF      STATUS,RP0
         CLRF   INTCON
         BCF      T1CON,TMR1ON
         MOVLW   0XFF
         MOVWF   PORTB
         RETFIE

END

Desconectado dhmejia

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 260
Re: Retardo de 500seg usando el TIMR1
« Respuesta #1 en: 21 de Junio de 2007, 19:32:28 »
Los tiempos en proteus no son reales, 8 minutos pueden demorarse una eternidad dependiendo del computador, si quieres verificar el funcionamiento de tu código yo te aconsejo que montes el circuito o que simules con el MPLAB SIM que es muy exacto, no tienes que esperar los 8 minutos, solo verifica el tiempo en que salta la interrupción del timer.  O si eres paciente puedes esperar los 8 minutos.

Saca la instrucción de encendido del timer del bucle infinito, solo es necesario activarlo una vez

saludos.
Pereira - Colombia

Desconectado ErnestAl

  • PIC10
  • *
  • Mensajes: 37
Re: Retardo de 500seg usando el TIMR1
« Respuesta #2 en: 21 de Junio de 2007, 19:46:34 »
tambien simulo con mplab, y uso el stopwatch para ver el tiempo, pero m salta cada 2segundos

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Retardo de 500seg usando el TIMR1
« Respuesta #3 en: 21 de Junio de 2007, 21:43:55 »
Perdón por lo que voy a decir, pero lo mejor, es en la vida real.

Suerte y saludos  :-/ :-/
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Retardo de 500seg usando el TIMR1
« Respuesta #4 en: 22 de Junio de 2007, 02:14:38 »
yo he simulaod con el proteus tiempos largos de 3 o 4 minutos y si se cumple en la realidad, es que el proteus se peude demorar pero tiene su propio contador o reloj y uno tiene que estar atento a eso. bueno igual ese no es el problema de ErnertAL

Veamos el periodo de desborde de tu timer1, como no has puesto el cristal que usas supondre para 4MHz
periodo = ( 4 * 8 * (FFFF - carga del timer1)  ) / (4 x 10^6)
         
            = ( 8 * 65535 ) / 1000000
               
            = 0.52428 segundos dura en desbordarse el timer1

luego tenemos una sucesión de repeticiones....

periodo * conta = 0.52428 * 186 = 97.51608 segundos

finalmente ....

97.51608 * conta1 = 97.51608 * 3 = 292.54824 segundos esto aproximadamente arroja 4 minutos y unos tantos segundos, pero no llega a 8 minutos.

a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado ErnestAl

  • PIC10
  • *
  • Mensajes: 37
Re: Retardo de 500seg usando el TIMR1
« Respuesta #5 en: 22 de Junio de 2007, 03:10:40 »
Buenos dias!!!! los valores de esos contadores los hice por lo siguiennte:

R=0.5243---> 500s=B*0.5243
                       B=954 aprox ---> transformado a binario-->1110111010
                                                                          -->como trabajo con registros de 8btis
                                         conta-->10111010
                                         conta1-->00000011
¿Esta mal el contador para realizar la demora?

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Retardo de 500seg usando el TIMR1
« Respuesta #6 en: 22 de Junio de 2007, 03:33:34 »
ahora que lo vuelvo a ver tu codigo segun lo que comentas, pues no cumple lo que dices, intenta esto:

conta = d'10'
conta1 = d'10'

entonces R=0.5... luego
conta * R = 50 segundos finalmente
conta1 * 50 = 500

entonces en la interrupcion:

inter   DECFSZ   conta,f
         GOTO   SALIDA
         MOVLW   D'10'
         MOVWF   conta
         DECFSZ   conta1,f
         GOTO   SALIDA
         MOVLW   D'10'
         MOVWF   conta1
         GOTO   FIN

prueba con eso.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Retardo de 500seg usando el TIMR1
« Respuesta #7 en: 22 de Junio de 2007, 08:44:03 »
Perdón por lo que voy a decir, pero lo mejor, es en la vida real.

Suerte y saludos  :-/ :-/

El simulador del MPSIM realmente es muy preciso.  Por supuesto  es la vida real la que nos indica si el retardo será realmente de 500useg o de 501 o 499.  Eso depende de la desviación de los componentes, etc. 

Si uno tiene una aplicación donde el retardo debe ser 500useg exactos... tal vez haya un grave problema de diseño.

Usar el simulador allana mucho terreno y nos permite ahorrar horas de pruebas y error de la vida real.

Si fuera tan tajante, no se harían simuladores de microprocesadores ni nada por el estilo, que permitan a los diseñadores anticipar el funcionamiento antes de realmente probarlo... cada día más en el mundo se invierte en simuladores de todo tipo porque es la forma más económica y veloz de probar muchas cosas.

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 Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Retardo de 500seg usando el TIMR1
« Respuesta #8 en: 07 de Julio de 2007, 23:35:42 »
El simulador del MPSIM realmente es muy preciso.  Por supuesto  es la vida real la que nos indica si el retardo será realmente de 500useg o de 501 o 499.  Eso depende de la desviación de los componentes, etc. 

Si uno tiene una aplicación donde el retardo debe ser 500useg exactos... tal vez haya un grave problema de diseño.

Usar el simulador allana mucho terreno y nos permite ahorrar horas de pruebas y error de la vida real.

Si fuera tan tajante, no se harían simuladores de microprocesadores ni nada por el estilo, que permitan a los diseñadores anticipar el funcionamiento antes de realmente probarlo... cada día más en el mundo se invierte en simuladores de todo tipo porque es la forma más económica y veloz de probar muchas cosas.

Saludos




Estoy totalmente de acuerdo.

Saludos  :-/ :-/
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.


 

anything