hola me podrían como debo hacer para realizar dos o tres funciones simultáneamente pero con tiempos diferentes, sin que una interfiera en el trabajo de otra. en PICCS
Hacer las 3 funciones y crear un delay que sea un divisor comun de esas 3 funciones... Luego en cada funcion contar cuantas veces paso el codigo por ahi, para obtener el tiempo.
Es lo mas sencillo para lograrlo.
Supongamos que queremos que:
- Funcion 1 cada 100ms
- Funcion 2 cada 500ms
- Funcion 3 cada 250ms
El GCD (divisor comun mayor) de esos 3 es 50, entonces calculas cuantas veces deberian entrar:
- Funcion 1 : 100ms/50ms = 2
- Funcion 2 : 500ms/50ms = 10
- Funcion 3 : 250ms/50ms = 5
Tu programa quedaria asi:
//Esto en tu main()
while(1){
Funcion1();
Funcion2();
Funcion3();
delay_ms(50);
}
Funcion1(){
if(contador1 >= 2) {
//Aca programa
contador1=0;
}
}
Funcion2(){
if(contador2 >= 10) {
//Aca programa
contador2=0;
}
}
Funcion3(){
if(contador3 >= 5) {
//Aca programa
contador3=0;
}
}
Por supuesto, esto hace que tus funciones NO tengan delays... Pero asi verias ejecutar "al mismo tiempo" las cosas