ISR(TIMER1_OVF_vect){
PORTB |=(1<<PB1);
cli();
ADCSRA |=((1<<ADEN)|(1<<ADSC));//enciendo y inicio la conversion
while(ADCSRA&(1<<ADSC)); //me quedo esperando a que termine la conversion
ADCSRA&=~(1<<ADEN); //Apago el conversor despues de terminada la conversion
Valor_adc=ADC; //ADC es un registro de 16 Bits formados por ADCL y ADCH
temp1=(float)Valor_adc*(240)/1024;
//temp1=temp1-9.5;
sprintf(mensaje_temp_1,"Temp1 %.1f C",temp1);
_delay_ms(100);
PORTB &=~(1<<PB1);
_delay_ms(100);
PORTB |=(1<<PB1);
ADMUX |= ((1<<MUX0)|(1<<MUX2)); // canal de entrada 5 pin28 del micro
ADCSRA |=((1<<ADEN)|(1<<ADSC));//enciendo y inicio la conversion
while(ADCSRA&(1<<ADSC)); //me quedo esperando a que termine la conversion
ADCSRA&=~(1<<ADEN); //Apago el conversor despues de terminada la conversion
Valor_adc_1=ADC; //ADC es un registro de 16 Bits formados por ADCL y ADCH
temp2=(float)Valor_adc_1*(240)/1024;
//temp2=temp2-9.5;
sprintf(mensaje_temp_2,"Temp2 %.1f C",temp2);
ADMUX&=~((1<<MUX0)|(1<<MUX2));//selecciono nuevamente canal 0
_delay_ms(100);
PORTB &=~(1<<PB1);
lcd_clrscr();
lcd_puts(mensaje_temp_1);
if (Valor_adc > 143)
{
PORTB |=(1<<PB0);
}
else{
PORTB &=~(1<<PB0);
}
lcd_gotoxy(0,1);
lcd_puts(mensaje_temp_2);
_delay_ms(1000);
TCNT1= 57722; //1 seg
//TCNT1= 26472; //5 seg
sei();
}
Bueno como puedes ver en el otro programa con utilizando en tmr0 y sin usar interrupciones funciona de maravillas como deberia por eso coloque las fotos.
Y sera por eso que cuando quito las señales de los sensores el lcd me sigue dando lectura de temperatura 10. Y cuando conecto el sensor me suma esa diferencia :-(.