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

 
 
> 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
Ответов (1 - 7)
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
Xenia
сообщение Nov 14 2013, 12:47
Сообщение #3


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Добавить:
ADCA.PRESCALER = 0x6; // ADC_PRESCALER_DIV256_gc
иначе от слишком быстрого счета могут быть еще глюки.
Go to the top of the page
 
+Quote Post
DenisKuzovin
сообщение Nov 15 2013, 07:31
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 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
zombi
сообщение Nov 15 2013, 14:43
Сообщение #6


Гуру
******

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



Не уверен что это оно, но в DS на xmega256a3 вот :
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Nov 15 2013, 23:29
Сообщение #7


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

Группа: Свой
Сообщений: 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
DenisKuzovin
сообщение Nov 18 2013, 07:07
Сообщение #8


Участник
*

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



Да, привык к обычным мегам, там можно до AVCC. Это вырезка из даташита к mega128 для сравнения, про xmega256 писали выше.
Прикрепленное изображение


АЦП у них действительно сильно отличаются. Хотя сейчас уточнил у товарища, у него схема на этой же хмеге256 и VREF = VCC. Тоже видимо по привычке. Работает стабильно, проблем он не замечал. Хотя по даташиту это действительно неверно.
В своей схеме я единственное что замечал, это то, что невозможно оцифровать напряжение выше 3В. При 2,95 уже максимальное значение в регистре АЦП. Но меня это устраивает.

Сообщение отредактировал DenisKuzovin - Nov 18 2013, 07:09
Go to the top of the page
 
+Quote Post

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

 


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


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