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:
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_64);
delay_us(10);
(...)
enable_interrupts(global);
timer0:
#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:
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!