Autor Tema: ejecutar una orden dentro de un retardo ??  (Leído 2149 veces)

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

Desconectado Halcon_de_Fuego

  • PIC12
  • **
  • Mensajes: 61
ejecutar una orden dentro de un retardo ??
« en: 12 de Noviembre de 2010, 18:21:57 »
Hola me gustaria saber como se puede ejecutar una orden en la mitad de tiempo dentro de un retardo ?

saludos y gracias por sus aportes !

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: ejecutar una orden dentro de un retardo ??
« Respuesta #1 en: 12 de Noviembre de 2010, 18:50:32 »
Hola me gustaria saber como se puede ejecutar una orden en la mitad de tiempo dentro de un retardo ?

saludos y gracias por sus aportes !

Hola, usa una interrupción. Hay infinidad de formas de interrumpir la ejecución del programa principal.

Desconectado Halcon_de_Fuego

  • PIC12
  • **
  • Mensajes: 61
Re: ejecutar una orden dentro de un retardo ??
« Respuesta #2 en: 12 de Noviembre de 2010, 19:06:55 »
Hola migsantiago !! y por ejemplo si el programa principal esta regido por un timer maestro por asi decirlo , no hay otra forma de hacer algo dentro del timer principal ?? , y ¿ como funcionaria un timer de menor tiempo dentro de un timer de mayor tiempo ? esa es una pregunta paralela ! .

saludos ! .

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: ejecutar una orden dentro de un retardo ??
« Respuesta #3 en: 12 de Noviembre de 2010, 19:43:50 »
Para empezar habría que saber qué cosa quiere ejecutar la orden dentro del retardo.

Si fuera un pulso externo un RB0, podrías usar la interrupción INT0. Usándola sería irrelevante si estás usando los timers.

Desconectado Halcon_de_Fuego

  • PIC12
  • **
  • Mensajes: 61
Re: ejecutar una orden dentro de un retardo ??
« Respuesta #4 en: 12 de Noviembre de 2010, 20:24:35 »
pasa que tengo este codigo

Código: [Seleccionar]
  while(true)
   {
      delay_ms(1000);

      ContadorSegundos--;
      ContadorSegundosA++;

      if (ContadorSegundosA == 59)
      {
      ContadorMinutosA++;
      ContadorSegundosA = 00;

      if (ContadorMinutosA == 60)
      {
      ContadorHorasA++;
      ContadorMinutosA = 00;

      if (ContadorHorasA == 24)
      {
      ContadorDiasA++;
      }
      }
      }

y lo que quiero es mostrar una barra de progreso en un lcd pero no entiendo si hacer dos retardos de 500 ms y dentro del primero hacer la barra para que se muestre un progreso mas rapido o hacer un retardo de 1000 ms y dentro del cuerpo del codigo ejecutar algo sin modificar el retardo de 1 segundo

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: ejecutar una orden dentro de un retardo ??
« Respuesta #5 en: 12 de Noviembre de 2010, 21:18:24 »
Qué tal!

Creo que la mejor opción es como te dice el master migsantiago, usar las interrupciones...
Puedes usar interrupciones por dos timers, usas un timer para el retardo completo y otro timer para que se vaya incrementando la barra en el LCD cada cierto tiempo.

¿Has usado antes los timers del PIC? Seguro que si buscas en el foro vas a encontrar un montón de ejemplos eh!  :)

Saludos, nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: ejecutar una orden dentro de un retardo ??
« Respuesta #6 en: 12 de Noviembre de 2010, 21:22:17 »
Lo que ocurre es que si cuentas tiempo con instrucciones como delay_ms() te van a dejar detenido el programa hasta que se cumpla el tiempo programado en ellas.  Lo mejor sería que implementaras uno de los Timer del PIC, por ejemplo para que cuente 20 mSeg, por dar un ejemplo cualquiera.  Le insertas una bandera en la interrupción y en una variable puedes ir sumando el número de interrupciones de modo que por ejemplo si la variable tiene un valor de 50 quiere decir que ya transcurrió 1 segundo.  Asi puedes ir consultando y reseteando el valor de la variable a tu gusto e ir ejecutando ordenes de acuerdo al tiempo transcurrido.

Saludos!

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: ejecutar una orden dentro de un retardo ??
« Respuesta #7 en: 12 de Noviembre de 2010, 22:49:21 »
Como menciona Firepic y tú también, puedes usar un sólo timer que genere un delay de 250ms para escribir en la lcd, luego en otros 250ms generas tu delay específico. Es una mini máquina de estados con 2 estados.

Firepic, un gusto verte por estos lados. Un saludo.

Desconectado Halcon_de_Fuego

  • PIC12
  • **
  • Mensajes: 61
Re: ejecutar una orden dentro de un retardo ??
« Respuesta #8 en: 12 de Noviembre de 2010, 22:55:14 »
Hola amigos gracias por los consejos ! hace 2 cemanas que estoy con ccs por eso no entiendo nada pero por lo que veo que me escriben parece ser la mejor solucion ! pasa que aveces no entiendo nada  :D no tengo aspiraciones a ser programador pero tengo un codigo y un circuito modificados por mi los 2 y ya esta andando pero me empezo a gustar manejar el display y me gusta que muestre todos los datos posibles !!

PD: que es una bandera , para que sirve y como se escribe el codigo ?? , esta nomas y no molesto mas !  :D

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: ejecutar una orden dentro de un retardo ??
« Respuesta #9 en: 12 de Noviembre de 2010, 22:56:37 »
Hola amigos gracias por los consejos ! hace 2 cemanas que estoy con ccs por eso no entiendo nada pero por lo que veo que me escriben parece ser la mejor solucion ! pasa que aveces no entiendo nada  :D no tengo aspiraciones a ser programador pero tengo un codigo y un circuito modificados por mi los 2 y ya esta andando pero me empezo a gustar manejar el display y me gusta que muestre todos los datos posibles !!

PD: que es una bandera , para que sirve y como se escribe el codigo ?? , esta nomas y no molesto mas !  :D

Una bandera es una variable lógica que puede valer uno o cero. Imagínatela como un bit.

Desconectado Halcon_de_Fuego

  • PIC12
  • **
  • Mensajes: 61
Re: ejecutar una orden dentro de un retardo ??
« Respuesta #10 en: 12 de Noviembre de 2010, 23:01:37 »
Gracias por el consejo y ya me voy a dormir porque soy burro pero no puedo escribir semana con c   :lol::5]

saludos  :D


 

anything