TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Radiomendoza en 24 de Julio de 2009, 23:19:16

Título: No puedo escapar de un timing loop si uso getc(), una ayudita please?
Publicado por: Radiomendoza en 24 de Julio de 2009, 23:19:16
Saludos estimados, este es el problema que me he encontrado.
Al arrancar el programa tengo 5 segundos para poner la letra c para entrar al
modo configuracion, si no, se sale del loop y se llama a una rutina que ejecuta una
aplicacion.
El problema que tengo es que si pongo getc(), se queda tildado el loop esperando un
caracter y no sale nunca si no hago nada.

Aca esta el programa. Gracias por sus comentarios.

#include <16F628A.h>               
#fuses HS,NOWDT,NOPROTECT,PUT,NOLVP,BROWNOUT     
#use delay (clock=20000000)       
#use rs232(baud=9600, xmit=PIN_B2, rcv=PIN_B1)   
void main(void)

{
int i;
char letra, resp;
printf("pulse c para configurar dentro de los 5 segundos");
for (i=1;i<=50;++i)
{     
delay_ms (i);       
   
     
    switch(getc()) // se queda esperando   
      {
      case 'c':
      printf("\fEntrando en configuracion...");
      delay_ms(200);
      configurar();
      break;
     
      // un case para ir a escape() si no hago nada en 5 seg como hago?
      }
 
 

}
printf("\ftiempo finalizado");
}


void configurar(void)
{
printf("\fLISTO PARA CONFIGURACION");
}

void escape(void)
{
printf("\fESCAPO DE CONFIGURACION");
}
Título: Re: No puedo escapar de un timing loop si uso getc(), una ayudita please?
Publicado por: MLO__ en 25 de Julio de 2009, 00:30:31
Asigna un timer para el conteo del tiempo. Si, al terminar el conteo, no llega caracter, activas un flag en el timer para que salga.

Título: Re: No puedo escapar de un timing loop si uso getc(), una ayudita please?
Publicado por: AKENAFAB en 25 de Julio de 2009, 09:59:24

revisa esto kbhit en la ayuda de ccs , viene un ejemplo.

saludos
Título: Re: No puedo escapar de un timing loop si uso getc(), una ayudita please?
Publicado por: wbg666 en 25 de Julio de 2009, 23:29:49
lo mejor es utilizar una interrupcion para la lectura de datos por el rs232 en el pin b0-int, y al pasar los 5 segundos se desactiva las interrupciones
Título: Re: No puedo escapar de un timing loop si uso getc(), una ayudita please?
Publicado por: Radiomendoza en 26 de Julio de 2009, 00:55:56
El puerto de comunicaciones que voy a usar va a cumplir 2 funciones, una es de configuracion, conectandolo a un terminal, si pasan mas de 5 seg sin ingresar el caracter c entra en modo comunicacion rs232. Estuve viendo el kbhit pero si lo conecto por 232 a otro equipo, lo va a tomar como un caracter, por lo que podia hacer era usar el getc() y un timer interno para que no pueda ingresarse a la configuracion cuando me conecte a un equipo por rs232, que les parece?