TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado 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 (:
-
has probado usando la interrupcion de algun timer?
-
has probado usando la interrupcion de algun timer?
Estoy con jhozate, lo más adecuado es usar un timer.
Saludos!
-
se me ocurre algo como esto.
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();
}
-
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.
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. :-/
-
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.
-
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