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

 
 
> xmega256a3 ADC, значение ADC меняется скачком
DenisKuzovin
сообщение Nov 14 2013, 08:04
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 6-03-12
Пользователь №: 70 659



Добрый день!

Возникла проблема с ADC в xmega256a3. Долго пытались разобраться, вроде все должно быть нормально, а нет.. Может вы увидите проблему свежим взглядом sm.gif

АЦП настроен на 12 битный режим, внешнее референсное напряжение. При 0 вольт , значение АЦП сразу 420, далее плавно изменяется значение АЦП до 1075 при увеличении напряжения до 1 вольта. После этого резкий скачок на 1631. Далее опять плавно изменяется до 2460 (напряжение 2 вольта) и снова скачок до 3020. После этого снова плавное изменение до 3918 (3 вольта). Если одновременно контролировать напряжение осциллографом, то видно, что оно изменяется плавно во всем диапазоне.

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

Код работы с АЦП:
CODE
/* инициализация АЦП */
ADCA.CTRLA = 0b00000101;
ADCA.CTRLB = 0b00000000;
ADCA.CH1.CTRL = 0b00000001;

uint16_t get_adc()
{
ADCA.REFCTRL |= (1<<5); // подаем смещение с пина AREFA
ADCA.CH1.MUXCTRL = 0b00100000; // выбираем ножку
ADCA.CH1.CTRL = 0b10000001; //запускаем преобразавние
_delay_us(30);
return ADCA.CH1.RES;
}


В приложении фрагменты схемы устройства.

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение


Заранее благодарю за помощь!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zombi
сообщение Nov 14 2013, 08:49
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



С ADC не работал. Поэтому прошу простить если скажу глупость.
На AREF вроде больше чем AVCC- 0.6V подавать нельзя.
Go to the top of the page
 
+Quote Post
DenisKuzovin
сообщение Nov 15 2013, 07:31
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 6-03-12
Пользователь №: 70 659



Цитата(zombi @ Nov 14 2013, 12:49) *
На AREF вроде больше чем AVCC- 0.6V подавать нельзя.


Да, есть упоминания об этом, хотя в оригинальном даташите вроде бы об этом не пишут.


Цитата(Xenia @ Nov 14 2013, 16:47) *
Добавить:
ADCA.PRESCALER = 0x6; // ADC_PRESCALER_DIV256_gc
иначе от слишком быстрого счета могут быть еще глюки.

Огромное спасибо! действительно помогло. Не ожидал, что от этого может глючить, надо запомнить)) Раньше работал с ADC только на mega серии, там вроде бы таких проблем не замечал.

Сообщение отредактировал DenisKuzovin - Nov 15 2013, 07:32
Go to the top of the page
 
+Quote Post
AndreyVN
сообщение Nov 15 2013, 08:58
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 754
Регистрация: 29-06-06
Из: Volgograd
Пользователь №: 18 458



Цитата(DenisKuzovin @ Nov 15 2013, 11:31) *
Да, есть упоминания об этом, хотя в оригинальном даташите вроде бы об этом не пишут.


Ой, а где это такое упоминание? У меня несколько схем на Atmega64 и Atmega16 работают с Vref=5.0 и Vcc=5.0 но от разных источников. На Vref еще сажаю питание операционников, благо они сейчас все мало потребляют. Пока проблем не было, ждать неприятностей? Или ложная тревога?
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Nov 15 2013, 23:29
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата(AndreyVN @ Nov 15 2013, 11:58) *
Ой, а где это такое упоминание? У меня несколько схем на Atmega64 и Atmega16 работают с Vref=5.0 и Vcc=5.0 но от разных источников. На Vref еще сажаю питание операционников, благо они сейчас все мало потребляют. Пока проблем не было, ждать неприятностей? Или ложная тревога?

В даташите упоминание. АЦП xMega и простых Mega в этой части очень сильно отличаются. Для привязки Vref к Vcc есть делители типа Vcc/1.6
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 03:27
Рейтинг@Mail.ru


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