ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
23 ноября
723106 Топик полностью
Ксения (26.12.2016 15:23, просмотров: 206) ответил AlexG на Кто-нибудь имел дело с ADCB Xmega AU? Напоролся на очень странный глюк - АЦП выдает результат в два раза больше ожидаемого. Т.е. если в качестве опорного установить VCC/1.6 (=2.0625V), вход подключить на внутренний опорник 1V результаты
У меня ATXmega128A1 (не AU), но ADCB вроде бы работает нормально - я им температуру чипа измеряю, тогда как ADCA используется для рабочих целей. Может быть, вы калибровочные данные не использовали? Без них и у меня фигню показывало. ADCB.CALL = ReadSignatureByte( offsetof(NVM_PROD_SIGNATURES_t, ADCBCAL0) ); ADCB.CALH = ReadSignatureByte( offsetof(NVM_PROD_SIGNATURES_t, ADCBCAL1) ); ADCB.CTRLB = ADC_RESOLUTION_12BIT_gc; // 12 bit conversion ADCB.PRESCALER = ADC_PRESCALER_DIV256_gc; // peripheral clk/256 (32MHz/256=125KHz) ADCB.REFCTRL = ADC_REFSEL_INT1V_gc; // internal 1V reference ADCB.CH0.CTRL = ADC_CH_INPUTMODE_INTERNAL_gc | ADC_CH_GAIN_1X_gc; ADCB.CH0.MUXCTRL = ADC_CH_MUXINT_TEMP_gc; // Internal Temp Sensor ADCB.CH1.CTRL = ADC_CH_INPUTMODE_INTERNAL_gc | ADC_CH_GAIN_1X_gc; ADCB.CH1.MUXCTRL = ADC_CH_MUXINT_SCALEDVCC_gc; // Internal VCC Sensor