Autor Tema: timer0 enganchado en 2550  (Leído 1302 veces)

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

Desconectado mizzard

  • PIC10
  • *
  • Mensajes: 32
timer0 enganchado en 2550
« en: 18 de Abril de 2011, 08:58:35 »
hola a todos, os comento esto pq llevo ya un rato dandome cabezazos y no le veo sentido

Resulta que quiero leer un caracter por el puerto serie y para ello me espero hasta que desborde un timeout. Para ello utilizo un 2550 (y tb comunicacion USB):


variables:

int1 ftimeOutSERIE=0;
int iContTimeOut=0;


configuracion inicial:
Código: [Seleccionar]
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_64);
delay_us(10);
   (...)
   enable_interrupts(global);



timer0:

Código: [Seleccionar]
#int_TIMER0
void  TIMER0_isr(void) {
// Aproximadamente 3 segundos ...
if(iContTimeOut<9){
apaga(LedAmarillo);
iContTimeOut++;
ftimeOutSERIE=0;
}
else if(iContTimeOut==9){
iContTimeOut=0;
ftimeOutSERIE=1;
enciende(LedAmarillo);
}
}

cuando activo el timer:

Código: [Seleccionar]
       set_timer0(0);
ftimeOutSERIE = 0;      
enable_interrupts(INT_TIMER0);

do{
cDatoRecibido = fgetc(SALIDA_WAFER);
}
while(ftimeOutSERIE == 0);

if(ftimeOutSERIE == 1){
fprintf(canal_debug,"\r\nTIMEOUT PUERTO SERIE!");
disable_interrupts(INT_TIMER0);
iContTimeOut=0;

}

El codigo asi no tiene muxo sentido, pero lo que quiero recalcar es que el timer me desborda bien, pero se queda encerrado en la funcion #int_TIMER0 por lo que no vuelve a analizar la condicion del while y nunca sale....

Alguien me puede echar un cable??, muchas gracias y un saludo!
« Última modificación: 18 de Abril de 2011, 09:10:35 por mizzard »

Desconectado mizzard

  • PIC10
  • *
  • Mensajes: 32
Re: timer0 enganchado en 2550
« Respuesta #1 en: 18 de Abril de 2011, 09:24:30 »
Haciendo pruebas, resulta que es por culpa del getc que al no recibir nada ni indicarle un timeout se queda enganxado ahi...

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: timer0 enganchado en 2550
« Respuesta #2 en: 18 de Abril de 2011, 10:35:17 »
Haciendo pruebas, resulta que es por culpa del getc que al no recibir nada ni indicarle un timeout se queda enganxado ahi...

  Claro, porque getc se queda a la espera que haya un caracter.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas