Witam Mam problem z odczytem wartosci z ADC0
Mianowicie caly czas odczytywana jest wartosc maksymalna tj 1023 mimo ze powinno byc 0
Kod z moimi komentarzami:
Nastepnie :
Widzi ktos jakies błędy przez które moj ADC zawsze podaje wartosc Max?
Mianowicie caly czas odczytywana jest wartosc maksymalna tj 1023 mimo ze powinno byc 0
Kod z moimi komentarzami:
void InitADC()
{
ADMUX=(3<<REFS0); // For Aref=2,56 internal;
ADCSRA=(1<<ADEN)|(1<<ADPS2)|(0<<ADPS1)|(0<<ADPS0); //Rrescalar div factor =16 bo mam ustawione 1mhz
}
uint16_t ReadADC(uint8_t ch)
{
//Select ADC Channel ch must be 0-7
ch=ch&0b00000000; // Aby czytac z ADC 0
ADMUX|=ch;
//Start Single conversion
ADCSRA|=(1<<ADSC);
//Wait for conversion to complete
while(!(ADCSRA & (1<<ADIF)));
//Clear ADIF by writing one to it
//Note you may be wondering why we have write one to clear it
//This is standard way of clearing bits in io as said in datasheets.
//The code writes '1' but it result in setting bit to '0' !!!
ADCSRA|=(1<<ADIF);
return(ADC);Nastepnie :
uint16_t adc_result;
InitADC();
adc_result=ReadADC(0); // Pobieram wartosc z ADC
InitLCD();
ClearLCD();
char* bufor="Hello ";
char* bufor2=" XXX";
itoa(adc_result,bufor2,10); // zamiana Na asci
//bufor = adc_result;
Println(bufor, 6);
Println(bufor2,4); // wypisywanie
Widzi ktos jakies błędy przez które moj ADC zawsze podaje wartosc Max?
