ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
886874
misyachniy (07.12.2018 10:28 - 10.12.2018 16:19, просмотров: 4515)
Пытаюсь вспомнить как программировать АЦП ATXMEGA.(дополнение) Работаю с ATXMEGA32A4U Взял готовый пример из Интернета, подправил только номер вывода. void InitADC(void) { PORTA.DIR &= ~(INPUT_V_PIN | INPUT_T_PIN); ADCA.CTRLB = ADC_RESOLUTION_12BIT_gc | ADC_FREERUN_bm; // непрерывное преобразование 12-битный результат с правым выравниванием ADCA.REFCTRL = ADC_REFSEL_INTVCC2_gc; // VCC/2 ADCA.PRESCALER = ADC_PRESCALER_DIV16_gc; /* периферийная частота = clk/16 (2MHz/16)*/ ADCA.CH0.CTRL = ADC_CH_INPUTMODE_SINGLEENDED_gc; /* канал 0 ADCA настроен на внешний несимметричных вход */ ADC_SELECT_VIN(); // измерение входного напряжения ADCA.CTRLA |= ADC_ENABLE_bm; /* Разрешение работы АЦП */ } При изменении напряжения на входе АЦП от 0 до примерно 0,98 вольт код считаннный с АЦП меняется. После стоит как вкопанный. Такое впечатление, что не переключается опорное с 1 вольт на VCC/2 //--------------------------------------- Дополнение: Взялся перечитывать "XMEGA AU MANUAL". Самый свежий маркирован 13 годом "8331F–AVR–04/2013" В тексте есть явные опечатки:
Table 28-12. Channel input modes, CONVMODE=1 (signed mode).
Table 28-13. Channel input modes, CONVMODE=1 (unsigned mode).
Не очень четко выписано по поводу выбора коэффициента усиления
See Table 28-10 on page 359. Gain is valid only with certain MUX settings. See “MUXCTRL – ADC Channel MUX Control registers” on page 360.
Я пробовал переключить на коэффициент усиления 1/2 но ничего не получилось. Ну и накрутили, хоть бери переменый резистор и изучай поведение. Затра буду пробовать в дифференциальном включении с коэффицентом усиления 1/2.