Autor Tema: como hacer un retardo con el pic y a la vez actualizar otas tareas, por ejemplo apagar algo  (Leído 2831 veces)

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

Desconectado lemono

  • PIC10
  • *
  • Mensajes: 1
hola a todos recien ingreso a esta magnifica pagina, tambien empiezo a dejarme seducir por el mundo de los microcontroladores
escribo por que desde hace dias estoy tratando de resolver una inquietud de como puedo hacer para que un pic me maneje un retardo por ejemplo de 10 segundos para apagar y prender una luz pero a su vez me pueda seguir controlando la otra parte de lo que quiero que es por ejemplo apagar un motor, no se si esto se realiza con una interrupcion??? o si se hace con una temporizacion externa???, o por el tmro?? en fi n tengo muchas dudas con esto,se que los pic solo tienen un pc y entonces no se como hacerlo si alguien sabe por favor, cualquier ayuda es bien recibidaAngelito si tienen algun ejemplo magnifico

Desconectado Harry32

  • PIC10
  • *
  • Mensajes: 39
Hola Lemono:
Pues deberias de usar el TMR0 y a la vez activar las interrupciones (global y la que controla el TMR0). Para diez segundos, depende del cristal que uses, pero seguramente tendras que que hacer que el TMR0 temporize varias veces y configurar el preescaler al maximo (con un cristal de 4 Mhz coseguiras como maximo una temporizacion de 65,5 milisegundos, luego necesitaras que lo repitas unas 152 veces) y mientras el TMR0 hace su trabajo el resto del pic podra estar relizando otra cosa.
No se si te habre ayudado, si no por aqui estamos
Saludos

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Hola, puedes hacerlo como te manifesto Harry, solo que yo no empleo la interrupcion, simplemente, en alguna parte del codigo, realizo un XOR para verificar si la cuenta del tmr0 llego a un determinado valor... si llego, incremento o decremento otro contador...
de esta marera, empleo la interrupcion para otras cosas

TIMER_CERO
      CLRF   STATUS   
      MOVLW   .250   
      XORWF   TMR0,0
      BTFSS   STATUS,Z
;      GOTO   INICIO
      CLRF   TMR0

suerte!

Norberto

Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado Elena2000

  • PIC24F
  • *****
  • Mensajes: 722
Eso es, tal y como te dicen los nenes Giño de arriba. Fíjate que controlar el desbordamiento del TMR0 y ejecutar otras instrucciones o atender a otras interrupciones, es una de las pocas ejecuciones paralelas que puede realizar un microprocesador PIC, ya que no es capaz de efectuar multiprocesamiento.

Una cosa: he abreviado un poquito el asunto de tu mensaje con el que abriste el tema, porque era demasiado largote..

Desconectado peddrorolo

  • PIC12
  • **
  • Mensajes: 56
Hola a todos.
Al igual que algunos de arriba, yo lo haría por interrupción. Pero discrepo en la interrupción a usar. Yo usaría la del Timer1 por varias razonas. Una razón importante es que con el timer 1 puedes contar muchisimo  más tiempo que con el timer 0 si es que usas el reloj interno. Otra razón es que si estás empezando, el timer 0 seguro que lo usarás para el perro y así usando el timer1, aprendes a usar otro más que si además le colocas un cristal externo al timer1, veras el juego que te da.

En caso de duda de como hacerlo, pues ya saber post al canto.

Desconectado lovando

  • PIC16
  • ***
  • Mensajes: 193
Escrito originalmente por todopic
Hola, puedes hacerlo como te manifesto Harry, solo que yo no empleo la interrupcion, simplemente, en alguna parte del codigo, realizo un XOR para verificar si la cuenta del tmr0 llego a un determinado valor... si llego, incremento o decremento otro contador...
de esta marera, empleo la interrupcion para otras cosas

TIMER_CERO
      CLRF   STATUS   
      MOVLW   .250   
      XORWF   TMR0,0
      BTFSS   STATUS,Z
;      GOTO   INICIO
      CLRF   TMR0

suerte!

Norberto






Norberto, excelente aporte, no lo habia pensado asi....gracias


Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Sonrisa Gigante
para la mayoria de los retardos largos, empleo esa disposicion... por ejemplo un minuto

255 * 256 * 230 * 4  +/- 1 minuto =256 es el preescaler (60057600 milisegundos)
60,057600 segundos... bastante buena!

y mientras tanto, se puede ir ejecutando otras cosas, y no empleo interrupcion... Sonrisa Gigante


Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado Ignite

  • PIC16
  • ***
  • Mensajes: 107
Estoy de acuerdo con peddrorolo, ya ke con el TMR1 puedes contar más. Pero claro eso teniendo en cuenta que el micro que use tenga más de un timer.
Por cierto Norberto, has dado una muy buena idea!!! Creo ke la voy a utilizar más de una vez.

Saludos

Desconectado fenix_jn

  • PIC18
  • ****
  • Mensajes: 418
Creo que ese mini programa tiene el inconveniente de que debes llamarlo cada cierto intervalo a fin de poder verificar si efectivamente la cuenta de TMR0 es ese valor, aun pienso que usar interrupciones es mejor...

Desconectado carlos_2005

  • PIC10
  • *
  • Mensajes: 5

 TAMBIEN PUEDES USAR EL WDT (PERRO GUARDIAN) QUE TE PERMITE UN RETARDO MAXIMO DE 2,3 SEGUNDOS, ESTO TE RESETEA EL PIC, POR LO TANTO EN EL INICIO PROGRAMA LA RUTINA DE LO QUE QUIERAS HACER.
TAMBIEN PUEDES USAR EL PIN 0 DEL PUERTO B.

ESCRIBEME AL CORREO Y TE ENVIO UN EJEMPLO DEL TMR0 O CUALQUIER PROGRAMA QUE NECESITES DE EJEMPLO DEL PIC 16F84

Desconectado dzepedar

  • PIC10
  • *
  • Mensajes: 17
Hola a todos:

Pienso que ambas solciones podrían ser utiles. Las ventaja de la solucción que menciona, Norberto, es que se puede utilizar la interrupción para otra tarea. Pero veo que el uso de la verificación de la cuenta podría ser crítica en el sentido de que
debemos procurar que si, estamos cunsultado 250, por ejemplo, se haga mas menos antes de aquella cuenta, de lo contrario corremos el riesgo de que se pase
a 00h. En resumen, la solución de Norberto, mirado desde el punto de vista que acabo de mencionar, puede ser critico y sería talvez más conveniente utilizar la interrupción del TMR0.

Saludos.

Daniel.


Escrito originalmente por fenix_jn
Creo que ese mini programa tiene el inconveniente de que debes llamarlo cada cierto intervalo a fin de poder verificar si efectivamente la cuenta de TMR0 es ese valor, aun pienso que usar interrupciones es mejor...


 

anything