TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: elgarbe en 04 de Febrero de 2015, 21:33:58
-
Hola, estoy necesitando alguna rutina para detectar pulsacion larga o corta en una entrada de un 4550. Una vez había visto algo bastante estandar en el foro, pero no puedo encontrarla!
Alguien tiene algo?
Saludos y gracias!
-
Bueno, encontré el post, era este:
http://www.todopic.com.ar/foros/index.php?topic=29209.msg242309#msg242309
pero mientras estudio un poco el código de Bruno para ver si lo puedo implementar estuve jugando y escriví esto:
if(BTN1==1){ // Pulsador apretado
if(fPrimerPulsacion==0){ //Primera vez que se detecta la pulsacion
tiempo_pulsado[0]++; // Inremento contador de 10mseg's
fPrimerPulsacion = 1; // Ya no será primera pulsacion
}else{ // Si no es primera pulsacion
tiempo_pulsado[0]++; // Inremento contador de 10mseg's
}
}else{ // Si el pulsador no esta apretado
if(fPrimerPulsacion==1){ // Pero estuvo apretado hace instantes
if (tiempo_pulsado[0] < 3){ // Menos de 30mseg
tiempo_pulsado[0] = 0; // Reseteo contador
modo[0] = 0; // Fue rebote asíque modo=0
fPrimerPulsacion = 0; // Borro flag
}
if (tiempo_pulsado[0] > 3 & tiempo_pulsado[0] < 100 ){
tiempo_pulsado[0] = 0;
modo[0] = 1;
fPrimerPulsacion = 0; // Borro flag
}
if (tiempo_pulsado[0] > 100 && tiempo_pulsado[0] < 300 ){
tiempo_pulsado[0] = 0;
modo[0] = 2;
fPrimerPulsacion = 0; // Borro flag
}
if (tiempo_pulsado[0] > 300){
tiempo_pulsado[0] = 0;
modo[0] = 0;
fPrimerPulsacion = 0; // Borro flag
}
}
}
eso va en la ISR de un timer configurado a 10mSeg.
En el main tengo:
if(modo[0] == 1){
i+=5;
modo[0] = 0;
}
if(modo[0] == 2){
i+=10;
modo[0] = 0;
}
muestra_numero(i);
Hasta acá biene funcionando bien, ahora tengo que pasar algunas cosas a "#define" para hacerlo más configurable.
Saludos!
-
Hola elgarbe yo uso uno muy bueno de esta pagina http://www.micropic.es/mpblog/2014/05/gestion-de-pulsadores/ tiene más funciones no solo la pulsación corta o larga y la verdad es que va de 10. Creo que algunos de los desarrolladores están por aquí asi que aprovecho para felicitarles por tan magnifico aporte.
Un saludo
-
Excelente librería!!!!
y yo que ya le meti como 5 horas a mi programa... ahora no sé si seguir o implementar esa funcion.... voy a ver x q lo mío ya casi lo tengo funcionando.... me faltaba la autorrepeticion...
Gracias por el aporte, va a mis favoritos!