Autor Tema: No puedo escapar de un timing loop si uso getc(), una ayudita please?  (Leído 1897 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Radiomendoza

  • PIC10
  • *
  • Mensajes: 2
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");
}

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: No puedo escapar de un timing loop si uso getc(), una ayudita please?
« Respuesta #1 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.

El papel lo aguanta todo

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: No puedo escapar de un timing loop si uso getc(), una ayudita please?
« Respuesta #2 en: 25 de Julio de 2009, 09:59:24 »

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

saludos
« Última modificación: 25 de Julio de 2009, 10:05:28 por AKENAFAB »

Desconectado wbg666

  • PIC10
  • *
  • Mensajes: 3
Re: No puedo escapar de un timing loop si uso getc(), una ayudita please?
« Respuesta #3 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

Desconectado Radiomendoza

  • PIC10
  • *
  • Mensajes: 2
Re: No puedo escapar de un timing loop si uso getc(), una ayudita please?
« Respuesta #4 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?