Yo tenia entendido que si saltaba la interrupcion mientras se estaba usando el cad el valor de la conversion era erroneo. El programa estaria mejor en el foro de c pero bueno aqui dejo un trozo del programa.
[code]
///////////////////////////////////////////////////////////////////////////
// Funcion de interrupcion para el tach de los ventiladores //
///////////////////////////////////////////////////////////////////////////
#int_rb
void inter_rb()
{
short enc1,enc2;
static short ultim_enc1=1;
static short ultim_enc2=1;
enc1=input(pin_b5);
enc2=input(pin_b6);
if(ultim_enc1 && !enc1) tach1++;
if(ultim_enc2 && !enc2) tach2++;
ultim_enc1=enc1;
ultim_enc2=enc2;
}
///////////////////////////////////////////////////////////////////////////
// Funcion de interrupcion del timer0 //
///////////////////////////////////////////////////////////////////////////
#int_timer0
void inter_timer0()
{
static byte timer_0_count=0;
if (timer_0_count<31)timer_0_count++;
else
{
timer_0_count=0;
cont1=tach1;
cont2=tach2;
rpm1=(cont1/4)*60;
rpm2=(cont2/4)*60;
printf(lcd_putc,"fr1=%lu r2=%lu",rpm1,rpm2);
tach1=0;
tach2=0;
temp_int();
}
set_timer0 (

;
}
void temp_int()
{
disable_interrupts(global);
set_adc_channel(0);
delay_ms(16);
temp1=read_adc();
set_adc_channel(1);
delay_ms(16);
temp2=read_adc();
enable_interrupts(global);
}
[code]