Procesor: ATtiny26L Zasilanie: 3V Oscylator: Internal 1MHz
Fragment kodu kodu:
//------------------------------------------------------- uint16_t g_odniesienie;
ADMUX = 0x87; // b10000111, ustawienie zrodla Vref i polaczonego kanalu (7) ADCSR = 0x83; // b10000011, m.in. wlaczenie A/D i ustawienie prescalera (podzial przez 8), f glowna=1MHz
g_odniesienie = read_adc(); eeprom_write_word(0x01,g_odniesienie); //zapisuje wartosc kalibracyjna -2 bajty o adresie 0x01 i 0x02 (little endian) //---------------------------------------------------------
jak widac zrodlo referencyjne (2,56) ustawione wewnetrzne bez zewnetrznego kondensatora, wybrany kanal odpowiedni, tryb Single Conversion, prescaler
1MHz /8,Problem:
napiecie na pinie / wartosc odczytana z EEPROMU / wartosc nap obliczona wg wzoru VIN=ADC/VREF*1024
0,70V / 0x0103 (259) / 0,648V 1,18V / 0x01B2 (434) / 1,085V 1,68V / 0x026C (620) / 1,55V 2,48V / 0x0396 (918) / 2,295V ...jak widac jest znaczna rozbieznosc komorki EEPROMu raczej sprawne (procesor nowy, zapisywanie do kilku komorek daje taki sam wynik) moze brak kondensatora na nozce AREF? ale skoro jest przewidziana opcja bez kondensatora to powinno wszystko i tak dzialac a intuicja mi podpowiada ze ten kondensator ma raczej wplyw na wartosc najmlodszych bitow (kondensatora nie moge dac gdyz mam bardzo rygorystyczne wymagania na rozmiary plytki). AVCC podlaczone z VCC =3V Ogolnie nie potrzebuje bardzo dokladnego pomiaru- tzn 2 najmlodsze bity spokojnie moge odrzucic ale blad jest zdecydowanie zbyt gruby. Nie mam pomyslu jak na razie
Pozdrawiam