TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: beatAurex1 en 30 de Julio de 2006, 17:29:26

Título: RETARDOS mayores a 65536 ms PICBASIC
Publicado por: beatAurex1 en 30 de Julio de 2006, 17:29:26
Hola alguien me podria ayudar y explicar si ahi alguna otra  forma de crear retardos mayores a 65535 ms en PICBasic para no usar varios Delayms, con esto prendo dos motores y se apagan solos ,pero si vuelvo a precionar el boton de encendido no hace caso hasta que acabe el retardo 5min, habia pensado  hacerlo con una interrupcion por timer que siempre estuviera preguntando por PORTD.0 para asi reanudar todo desde inicio,, pero supongo ahi alguna otra forma mas facil de hacerlo.  espero me puedan dar algun tip. GRACIAS

motor1 var portb.0
motor2 var portb.1
              inicio: if PORTD.0=1
                    MOTOR1=1         
             MOTOR2=1
          endif
             DELAYMS 60000
                          DELAYMS 60000
                          DELAYMS 60000
                          DELAYMS 60000
                          DELAYMS 60000
             MOTOR1=0
             MOTOR2=0
                       goto inicio

Digamos lo quiero para prender dos motorcillos
Título: Re: RETARDOS mayores a 65536 ms PICBASIC
Publicado por: Marioguillote en 30 de Julio de 2006, 21:16:05
Hola beatAurex1

Fijate en la ayuda del Protón, buscá en el índice, la función SLEEP.
Es como dice la palabra "poner a dormir todo", en realidad se pone en una especie de STAND-BY

Se utiliza como SLEEP 300

El número que le sigue a SLEEP son los segundos que puede "dormirse", que en el ejemplo que te puse son los 5 minutos que necesitás.

Luego de eso se "despierta" solito y sigue el programa.

Espro que te sirva.

Saludos.

Mario
Título: Re: RETARDOS mayores a 65536 ms PICBASIC
Publicado por: Mario en 31 de Julio de 2006, 17:57:13
Hola.

Haber si entiendo:

¿Lo que quieres es que si está corriendo el tiempo, poder interrumpir ese tiempo?

Lo que explicas es algo diferente a lo que tienes en tu tema.

Si es para crear retardos mayores a los 65 segundos, puedes usar FOR y NEXT.

Si quieres hacer otra cosa mientras el tiempo corre, creo que deberás usar las interrupciones. No creo que la del timer sea la idónea, yo usaría la externa de RB0.

Bueno, espero no complicar las cosas.
Título: Re: RETARDOS mayores a 65536 ms PICBASIC
Publicado por: KALLITOS en 31 de Julio de 2006, 18:14:25
Que tal como estan..

y si utilizas algo como esto:


for x = 0 to 50
delayms 100
if portd.0 = 1 then goto codigo
next x

codigo:
.
.
.
.
.

ojala te sirva

     salu2
Título: Re: RETARDOS mayores a 65536 ms PICBASIC
Publicado por: Mario en 31 de Julio de 2006, 18:18:33
Eso sería bueno, se me olvido el IF para preguntar en el ciclo FOR. :D
Título: Re: RETARDOS mayores a 65536 ms PICBASIC
Publicado por: patolinec en 01 de Agosto de 2006, 12:23:33
Hola beatAurex1

Fijate en la ayuda del Protón, buscá en el índice, la función SLEEP.
Es como dice la palabra "poner a dormir todo", en realidad se pone en una especie de STAND-BY

Se utiliza como SLEEP 300

El número que le sigue a SLEEP son los segundos que puede "dormirse", que en el ejemplo que te puse son los 5 minutos que necesitás.

Luego de eso se "despierta" solito y sigue el programa.

Espro que te sirva.

Saludos.

Mario


Pues coincido con Mario, la opcion mas efectiva es usar un sleep, e inclusive pudieras hacerlo despertar frente a una interrupcion externa claro solo si es necesario y ojo aca tambien el limite es 65535 pero segundos osea mucho tiempo, tambien es bueno recalcar que cuando el micro esta es modo sleep su consumo de corriente baja muchisimo

suerte
Título: Re: RETARDOS mayores a 65536 ms PICBASIC
Publicado por: beatAurex1 en 02 de Agosto de 2006, 23:19:11
GRACIAS A TODOS POR SUS RESPUESTAS ME SIRVIERON MUCHISIMO
ya pude lograr los retardo que queria y al mismo tiempo preguntar por otras condiciones usando for

FOR B=1 TO 1000                ' PARA UNA PAUSA DE 10 SEG  =1000*10ms
   IF SENSOR=1 THEN         
   GOSUB REVELAR                                ENDIF
                 PAUSE 10
NEXT   



Ahora TAlves deberia hacerlo e otro tema peOr lo hare aqui mismo PARA NO ABRIR OTRO TEMA .
COMO HAGO PARA QUE ME MUESTRE LAS TEMPERATURAS REALES EL SENSOR DE TEMEPRATURA LM35
USO EL A/D DEL PIC16F877A
Título: Re: RETARDOS mayores a 65536 ms PICBASIC
Publicado por: beatAurex1 en 02 de Agosto de 2006, 23:33:29
  con su  convertidor de 10bits.  El voltaje de referencia que uso +5v porque estoy usando todos  los AN.(0...7)
y a la salida del lm35  esta un amplificador operacional LM358, con r1=4.7 y R2=10k (multivuelta)

Conversion=5v/1024=4.8mV 
Ya al mostrarlo en el LCD algunos valores de temepratura si conciden con otro termometro digital que uso por separado para  comprobar,, pero de repente se disparan los valores por ejemplo 25°C del lm35=  25°C del digital pero ya despues digamos el digital apenas marca 26 y el LCD ya me esta mostrando hasta 28 o 35°C.

Alguien me podria decir que esta pasando:

GRACIAS 
Título: Re: RETARDOS mayores a 65536 ms PICBASIC
Publicado por: navaismo en 03 de Agosto de 2006, 00:29:30
HOla mira en este post encontraras mas informacion sobre el lm35dz, buneo no mucha pero si un programa ejemplo que hice con el, hay variables que no se utilizan ya que es para otro programa y se adaptan las rutinas de punto flotante.

http://www.todopic.com.ar/foros/index.php?topic=12300.0
Título: Re: RETARDOS mayores a 65536 ms PICBASIC
Publicado por: sergiopic en 10 de Septiembre de 2006, 00:15:08
 :mrgreen: hola tal vez puedas usar esta simple rutina


'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2006 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 09/09/2006                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
   high portb.0
   pause 1000 * 10 ;como sabemos 1000 milisegundos son 1 segundo asi que
   low portb.0         ;solo lo multiplicas por el numero que creas necesario cualquier
                                              ;numero y tendrasretardos muy grandes  
   

saludos desde torreon  coahuila mexico 

si ya hice lo dificil ahora sigue lo imposible
Título: Re: RETARDOS mayores a 65536 ms PICBASIC
Publicado por: LordLafebre en 10 de Septiembre de 2006, 00:43:47
Hola:

pues a mi manera de ver eso no es muy acertado, ya que no podrias tener este valor 7000*10, y lo que beatAurex1  es crear retardos mayores a 65535ms. haciendo lo que decia, se produciria desbordamiento.
Título: Re: RETARDOS mayores a 65536 ms PICBASIC
Publicado por: sergiopic en 12 de Septiembre de 2006, 17:25:25
hola lord lafebre claro que  no puedo compararme contigo en
cuestion de micros se que a tienes mucho mas tiempo que yo
y tienes mas tiempo que yo en esta pagina . mil respetos a ustedes programadores dedicados .

pero con respecto ala sujerecia pues ami no me ha causado ningun
problema ya que he en mis primeras experiencias en pbp me acuerdo
que hice un retardo de media hora y no causo desbordamiento
al momeno de compilar con el mpaswin no me mostro nada de
warnings ni nada por el estilo ,solo es un comentario gracias por leer mi sugerencia
y saludos  desde meexico :-/
 
Título: Re: RETARDOS mayores a 65536 ms PICBASIC
Publicado por: LordLafebre en 12 de Septiembre de 2006, 17:53:24
Hola:
con respecto a lo primero que mencionas, pues para nada es cierto  :D, yo tambien cada dia que pasa aprendo aqui, pero me extraña eso, la verdad que el maximo valor para una variable es WORD osea 65535 eso en el caso de PBP, por eso cuando digo que haciendo esto 7000*10 se proguciria desbordamiento, claro que el compilador no da errores, pero los errores se deberian dar de una manera logica, es decir el pic no haria lo que uno quisiera que haga.