Cześć, chcę odczytać wartość pinu PC1 mikrokontrolera Atmega8a. Najpierw próbuję odczytać wartość analogową, a potem zamienić ją na cyfrową i wyświetlić w zmiennej. Dlaczego ten kod tego nie robi tylko wyświetla jakieś liczby, które na pewno nie są temperaturą?
/*
Program to control Atmega8A
*/
#define F_CPU 8000000L
#include <avr/io.h>
#include <util/delay.h>
#include <hd44780.c>
int ADCsingleREAD(uint8_t adctouse)
{
int ADCval;
ADMUX = adctouse;
ADMUX |= (1 << REFS0);
ADMUX &= ~(1 << ADLAR);
ADCSRA |= (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
ADCSRA |= (1 << ADEN);
ADCSRA |= (1 << ADSC);
while(ADCSRA & (1 << ADSC));
ADCval = ADCL;
ADCval = (ADCH << 8) + ADCval;
return ADCval;
}
int main(void)
{
char buffer[33];
int temperature;
// Insert code
DDRB |= (1 << PB0);
LCD_Initalize();
while(1)
{
temperature = ADCsingleREAD(1);
itoa(temperature, buffer, 10);
LCD_Clear();
LCD_GoTo(2,0);
LCD_WriteText("Temperatura : ");
LCD_GoTo(5,1);
LCD_WriteText(buffer);
LCD_WriteText(" C");
_delay_ms(500);
PORTB |= (1 << PB0);
_delay_ms(1000); // delay 1 second
PORTB &= ~(1 << PB0);
_delay_ms(1000); // delay 1 second
}
return 0;
}