реклама на сайте
подробности

 
 
> ATxMega32D4, Вопрос по АЦП
tier
сообщение May 4 2013, 17:57
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 14-08-09
Пользователь №: 51 892



Подскажите кто чем сможет, что-то бьюсь а результата нет.
Есть ATxMega32D4, на начальном этапе пытаюсь просто измерить постоянное напряжение (~1.2В) которое подается к Pin2.
Ф-я ADC_GetValue() вызывается по требованию программы (необходимость измерения в данный момент)

Независимо от подключенного измеряемого напряжения выдает 0xC0...0xC3 в случае
UnsignedMode и 0x02...0x06 в случае SignedMode (ADC_CONMODE_bm)

CODE
void ADC_Init(void)
{
PORTA.DIRCLR = PIN6_bm; // Настраиваем нужный вход
// Устанавливаем разрядность и режим Signed Mode
ADCA.CTRLB = ADC_RESOLUTION_12BIT_gc | ADC_CONMODE_bm;
ADCA.REFCTRL = ADC_REFSEL_AREFB_gc; // Внешний ИОН 2,36В, подключен к PB0 Pin4

// Настраиваем мультиплексор - Канал 0 ADCA настроен на внешний несимметричный вход
ADCA.CH0.CTRL = ADC_CH_INPUTMODE_SINGLEENDED_gc;

ADCA.CH0.MUXCTRL |= ADC_CH_MUXPOS_PIN6_gc; // Positive Input ADC6 PA6 Pin2

ADCA.CTRLA |= ADC_ENABLE_bm; // Включаем АЦП

ADCA.PRESCALER = ADC_PRESCALER_DIV256_gc; // Делитель частоты (32МГц/256=125кГц)
// Прерывание по завершению преобразования, уровень прерываний - средний
ADCA.CH0.INTCTRL = ADC_CH_INTMODE_COMPLETE_gc | ADC_CH_INTLVL_MED_gc;
}

uint16_t ADC_GetValue(void)
{
uint16_t i, tmp, sum = 0;

for (i=0; i<16; i++) // Number of samples
{
ADCA.CTRLA |= ADC_CH0START_bm; // ADC Start Conversion

while(ADCA.CH0.INTFLAGS & ADC_CH_CHIF_bm);
ADCA.CH0.INTFLAGS |= ADC_CH_CHIF_bm; // Clear interrupt flag

tmp = ADCA.CH0RES;
sum += tmp;
}

sum /= 16;

return sum;
}


в чем может быть проблема

Сообщение отредактировал IgorKossak - May 5 2013, 16:22
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 01:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01306 секунд с 7
ELECTRONIX ©2004-2016