I write small program for ATtiny461:
__C_task void main (void) { unsigned char i; unsigned int tmp; unsigned long AdcSumma=0; ADCSRA = BIN(10010101); // ADC 250kHz,Fosc=8MHz ADCSRB = BIN(10000000); // bipolar mode entered DIDR0 = BIN(11111111);// digital input disabled DIDR1 = BIN(11110000); ADMUX = BIN(10010010);// 1.1V ref,(ADC4-ADC3)*20 Delay(100*ms);// wait for ADC stable SETBIT(ADCSRA,ADSC);while(CHKBIT(ADCSRA,ADSC)); tmp = ADC; SaveToEeprom(tmp); SaveToEeprom(Modul(tmp)); while(1); }
As a result in EEPROM: tmp=0x03C6; Modul(tmp)=0x003A=58d;
Digital voltmeter measurement on pins for ADC4-ADC3 give: -6.7mV;
Now we can calculate expected result:
ADCin=6.7mV*20=134mV;
For Vref=1100mV ADCstep=1100mV/1024=1.07mV/step;
ADCout=134mV/1.07mV=125d.
So, calculating result=125d is two times higher, then ADC. Any ideas, why?