TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: puroh en 04 de Abril de 2011, 23:08:32

Título: ciclo que dependa del tiempo
Publicado por: puroh en 04 de Abril de 2011, 23:08:32
hola este es el primer tema que creo. :)

Ahora he  estado buscando una forma para que un ciclo (sea whille for) me dependa del tiempo. por ejemplo: que me haga las instrucciones dentro del ciclo y las repita hasta un determinado tiempo por ejemplo 4 milisegundos. he estado leyendo y busacando pero no he encontrado algo que me sirva, la única mas viable que vi es contar las rutinas según la velocidad del reloj y repetir las rutinas hasta el tiempo requerido pero no es algo muy practico ya que se ira cambiando constantemente este tiempo.

mas o menor quiero algo asi


 while(x<=4ms ){      //   Repetir el ciclo mientras no hayan pasado 4 mili segundos


                         output_porb( 0x8f);
                         .......

                         ............
                           ......
                           etc;
                                   }


gracias con los que me puedan colaborar para terminar mi proyecto (:
                         

Título: Re: ciclo que dependa del tiempo
Publicado por: jhozate en 04 de Abril de 2011, 23:24:21
has probado usando la interrupcion de algun timer?
Título: Re: ciclo que dependa del tiempo
Publicado por: Suky en 04 de Abril de 2011, 23:26:47
has probado usando la interrupcion de algun timer?

Estoy con jhozate, lo más adecuado es usar un timer.


Saludos!
Título: Re: ciclo que dependa del tiempo
Publicado por: beatAurex1 en 05 de Abril de 2011, 02:56:23
se me ocurre algo como esto.


Código: [Seleccionar]
i=0;
      //   Repetir el ciclo mientras no hayan pasado 4 mili segundos

                   for(i=0;i<=4000;i++))    //repetimos hasta completar  4000*1us=4ms
                         {  delay_us(1);
                             
                                tu_codigo();

                           }       



Título: Re: ciclo que dependa del tiempo
Publicado por: puroh en 07 de Abril de 2011, 16:02:00
gracias por las respuestas

pues he intentado hacer pruebas con interrupciones pero no las entiendo. :(
investigare acerca de estas y veré si hacen lo que necesito.


se me ocurre algo como esto.


Código: [Seleccionar]
i=0;
      //   Repetir el ciclo mientras no hayan pasado 4 mili segundos

                   for(i=0;i<=4000;i++))    //repetimos hasta completar  4000*1us=4ms
                         {  delay_us(1);
                             
                                tu_codigo();

                           }       





analizando el código miro que el ciclo puede funcionar, pero me tocaría contar el tiempo en que ejecuta las instrucciones dentro del ciclo para descontársela al "i<=4000" y que quede para 4ms, obviamente no tiene que ser preciso con una tolerancia del 10% me bastaría.
pero detodas formar lo ensayare talvez la solucion sea asi de sensilla. :-/

Título: Re: ciclo que dependa del tiempo
Publicado por: AngelGris en 07 de Abril de 2011, 17:14:58
  Básicamente lo que hace la interrupción es detener la ejecución normal del programa para saltar hacia una subrutina o función, y luego, al retornar de dicha función volvés al lugar desde donde se la llamó.

  Entonces, en tu rutina de interrupción del timer podés incrementar un contador.
  En tu ciclo do-while del programa principal vas verificando el valor de dicho contador y cuando supera cierto número salís del ciclo.
Título: Re: ciclo que dependa del tiempo
Publicado por: MLO__ en 07 de Abril de 2011, 19:56:02
Hola.

Se puede asignar también un Flag de aviso para cuando la interrupción termine el conteo y el ciclo while estaría condicionado con esa bandera ..

Saludos