Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/20: Рейтинг темы: голосов - 20, средняя оценка - 4.85
2borrod
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 15
1

Вопрос по АЦП. + 1V на ножках.

08.01.2015, 14:31. Просмотров 3628. Ответов 6
Метки нет (Все метки)

Добрый день. Прошу подсказки. Настраиваю АЦП на прием напряжения с термосопротивления. По ходу настройки натолкнулся на то что даже при отсутствии датчика на ножках АЦП микроконтроллера всегда есть напряжение около +0,9V.

Вопрос такой: это нормально? , что при настройке ноги на вход и эта нога ацп, то на ней будет +0,9..V

Изначально настройки такие:
DDRA=0xFC; // 11111100 - PAO, PA1 - входы АЦП., остальный на выход
ADMUX=0x20 // 00100000 - опорное по AREF, съём с ноги PA0
ADCSRA=0xEE // 11101110
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2015, 14:31
Ответы с готовыми решениями:

Вопрос по АЦП
Без прелюдии и сразу к делу!)) Короче вопрос такой: даю я команду АЦП (tiny45) начать...

мелкий вопрос по АЦП
Здрасьте, использую gcc пишу а си, имеется небольшой ламерский вопрос по ацп в авр: когда...

Вопрос по точности АЦП в Atmega48
Делаю измеритель на микроконтроллере и столкнулся с таким моментом. Если брать Atmega8, то он при...

Вопрос по АЦП pic12
Здравствуйте. Подскажите, можно ли подключить делитель к АЦП пика (Rдел=100 k, U=5 В) без...

Вопрос по выбору АЦП
Всем привет! Есть теоретический вопрос, суть его такова : имеется два аналого-цифровых...

6
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
08.01.2015, 16:07 2
О каком контроллере спрашиваем?
0
2borrod
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 15
08.01.2015, 17:11 3
atmega16
0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
08.01.2015, 17:47 4
Чуть прояснилось, но опять видим "нигические" числа. Правда есть комментарий, ну так никто верить ему (кроме автора) не обязан.
DDRA=0xFC; // 11111100 - PAO, PA1 - входы АЦП., остальный на выход
ADMUX=0x20 // 00100000 - опорное по AREF, съём с ноги PA0
ADCSRA=0xEE // 11101110
Здесь хоть избавили от лишней операции перевода HEX в BIN. Но в даташит лезьть все равно приходится...
Лезем смотрим, первая строка:
После сброса все выводы настраиваются на вход, комментарий про PAO, PA1 не очень соответствует. Лучше написать
DDRA=(1<<DDA7) | (1<<DDA6) | (1<<DDA5) | (1<<DDA4) | (1<<DDA3) | (1<<DDA2)
или даже так
DDRA=(1<<DDA7) | (1<<DDA6) | (1<<DDA5) | (1<<DDA4) | (1<<DDA3) | (1<<DDA2) | (0<<DDA1) | (0<<DDA0)
Если номера входов АЦП еще как либо используются в программе, лучше сразу дать им символические имена
.EQU ADC0 = DDA0;
.EQU ADC1 = DDA1;
И использовать впоследствии только их:
DDRA=(1<<DDA7) | (1<<DDA6) | (1<<DDA5) | (1<<DDA4) | (1<<DDA3) | (1<<DDA2) | (0<<ADC1) | (0<<ADC0)
Вторая строка, комментарий соответствует:
ADMUX=(0<<REFS1) | (0<<REFS0) | (1<<ADLAR) | ((0<<MUX4) | ((0<<MUX3) | ((0<<MUX2) | ((0<<MUX1) | ((0<<MUX0)
REFS1, REFS1 - отключить внутреннее опорное, использовать AREF
ADLAR - данные в регисрах ADCL и ADCH выровнять влево
MUX4..0 - вход 0, недифференциальный
Третья строка, без комментариев:
ADCSRA=(1<<ADIM) | (1<<ADSC) | (1<<ADFR) | (1<<ADIE) | (1<<ADPS2) | (1<<ADPS1)
ADIM - включить АЦП
ADSC - включить однократное преобразование
ADFR - в дополнение к ADSC включить рехим непрерывного преобразования
ADIE - включить прерывания АЦП
ADPS2, ADPS1 - прескалер АЦП в 64
Вроде особых косяков нет, но не надо забывать что аналоговый компаратор по умолчанию включен. Включение АЦП только должно отключить его от входов. Поэтому я обычно в начале инициализации отключаю его принудительно. Для ATmega8A это делается так:
;-------------------------------------------------;
_Riset: ; Начальная инициализация
;------ Установить вершину стека -----------------;
OUTI SPH, High(ROMEND)
OUTI SPL, Low(ROMEND)
;------ Отключить сторожевой таймер --------------;
OUTI WDTCR, (1<<WDE) | (1<<WDCE)
OUTI WDTCR, (0<<WDE)
;------ Отключить аналоговый компаратор ----------;
OUTI ACSR, (1<<ACD)
;------ Конфигурация портов ----------------------;
; и т.д.
0
_moysi
0 / 0 / 0
Регистрация: 19.11.2010
Сообщений: 790
08.01.2015, 18:02 5
Подтяжки желательно отключать явным образом, детерминированность их состояния никем и ничем не гарантируется "по умолчанию".
Компаратор ортогонален сабжу.
В простыню из трёх строк не вникал.
0
Калин
0 / 0 / 0
Регистрация: 15.03.2012
Сообщений: 113
08.01.2015, 20:48 6
Цитата Сообщение от 2borrod
... даже при отсутствии датчика на ножках АЦП микроконтроллера всегда есть напряжение около +0,9V.
А сколько должно быть?
0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
08.01.2015, 21:08 7
"AVR. Учебный курс. Устройство и работа портов ввода-вывода"- http://iosyitistromyss.ru/avr-uchebn...da-vyvoda.html

<Изображение удалено>
Точно наверное и разработчики Atmel затруднятся сказать... :)
Кстати оттуда же - "Когда ножка настроена на вход, то если PORTxy=0, то вывод в режиме Hi-Z. Если PORTxy=1 то вывод в режиме PullUp с подтяжкой резистором в 100к до питания."
Т.к. после сброса в PORTA все нули, то подтяжки на входе по умолчанию отключены. Но ведь утечки никто не отменил...
0
08.01.2015, 21:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2015, 21:08

вопрос про работу с АЦП
День добрый, коллеги! Начал изучать программирование МК (начал с AVR) - в качестве...

Вопрос по АЦП. Может дело в плате?
Пытаюсь сделать термометр из термопары. Измеряю с помощью ацп напряжение. Программа простая:...

АЦП, вопрос по книге Ю.Ревич "Практическое программирование
Ю.Ревич &quot;Практическое программирование МК AVR на языке ассемблер&quot; страница 46 Заметки на полях ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru