TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: jose rodriguez en 20 de Mayo de 2020, 14:15:21
-
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
-
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
-
Excelente voy a intentar hacerlo y te informo.....agradesco tu que tomes tu tiempo para ayudar a otros Dios te bendiga...jejeje te comento he leido mucho pero es un poco dificil entender sin un maestro ....gracias saludos
-
Hola saludos hermano....aun no he podido hacer el programa que me comentaste.....no no se como escribir o añadir en el programa que me enviaste la lectura de los puertos de salida y entrada .....por decir en el pin del puerto B 2 sea el pulsador y en B4 salida del led
-
En donde dice "//Aca programa" es donde tenes que poner la lectura de pulsadores, etc. es decir tu programa.