ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
6 июля
177211
Vladimir Ljaschko (02.01.2010 19:48, просмотров: 3618)
Никогда с АЦП в диф режиме не работал, и он не работает. Что не так? Какую бы пару ни задавал, дает магическое число 1022, на усилении 1 и 10. В обычном режиме работает, но усиление нужно. #define ADCMUX_VIN 0x00 // single ADC0 #define ADCMUX_CURRENT 0x03 // single ADC3 //0x1f // diff ADC3-ADC2 gain 200 - result 0 //0x1b // diff ADC3-ADC2 gain 1 - result 1022 //0x03 // single ADC3 - OK, but must be amplified //0x15 // diff ADC3-ADC2 gain 10 - result 1022 //0x13 // diff ADC3-ADC1 gain 1x - result 1022 #define ADCMUX_VOUT 0x04 // single ADC4 #define ADCMUX_TEMPERATURE 0x05 // single ADC5 __flash uchar adcmux[adcQTY] = { ADCMUX_VIN, ADCMUX_CURRENT, ADCMUX_VOUT, ADCMUX_TEMPERATURE }; #define SetAdcChannel(mux) ADMUX = adcmux[mux] #define StartAdcConversion() ADCSRA |= (1 << ADIF) | (1 << ADSC) #define AdcConversionComplete() (!(ADCSRA & (1 << ADSC)))