Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.89/45: Рейтинг темы: голосов - 45, средняя оценка - 4.89
bt?
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 23
1

мелкий вопрос по АЦП

25.05.2011, 14:06. Просмотров 8114. Ответов 20
Метки нет (Все метки)

Здрасьте, использую gcc пишу а си, имеется небольшой ламерский вопрос по ацп в авр: когда завершается преобразование, результат хранится в ADCL:ADCH - а сам значение хранится там в hex? или все таки в dec? или забирать надо в hex и преобразовывать в dec? или не парится с преобразованием и просто забирать и все?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2011, 14:06
Ответы с готовыми решениями:

Мелкий вопрос: можно ли оставить AVCC висеть в воздухе?
ATmego32 (TQFP). АЦП и аналоговый компаратор не используются. Сильно ограничен в размерах и...

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

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

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

20
ptoop
0 / 0 / 0
Регистрация: 19.09.2010
Сообщений: 1,761
25.05.2011, 14:16 2
эээ... тут и как ответить не знаешь :)
Там просто 16-разрядное число. Не знаю, как там в си - int16 кажется. Бери и всё.
0
Гарнист
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 3,496
25.05.2011, 14:32 3
Цитата Сообщение от bt?
сам значение хранится там в hex? или все таки в dec?
В bin оно хранится.
0
Otikzzz
0 / 0 / 0
Регистрация: 28.02.2011
Сообщений: 461
25.05.2011, 14:46 4
U=(Uref/2^разрядность_ацп)*ADCL:ADCH
0
somyo_3
0 / 0 / 0
Регистрация: 09.01.2011
Сообщений: 544
25.05.2011, 18:04 5
Хех, это сложный вопрос. Я тоже однажды таким вопросом зафейлился. Шестнадцатиричная/двоичная/десятичная - это системы счисления. А число при этом не меняется. Допустим, такое верно.

unsykned char a = 3;
if ((a==0b00000011)||(a==0x03))
{}
0
bt?
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 23
25.05.2011, 19:58 6
и когда придет гуру и рассудит невежд?
0
dsodir
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,284
25.05.2011, 20:01 7
Число там хранится в двоичной кодировке, как сказал Гарнист.
Пересчитывается в реальное напряжение по формуле, которую дал Otykzzz.
Все.
0
bt?
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 23
25.05.2011, 20:02 8
Прикол в том, что в студии разряды ADCH:ADCL разложены по битам, что вроде логично, что это двоичный код, но когда проводишь отладку через jtag, в колонке value вписывается хексадецимал значение 0 x XX... вот и хз че кого там... значит полюбас надо писать функцию по переводу в десятичную систему, чтобы удобнее работать было... а это опять расход ресурсов, который нам нах не нужен...
0
bt?
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 23
25.05.2011, 20:05 9
dsodir, мне не всегда нужно знать напряжение "де-факто", я рассчитаю три пороговых уровня и соответствующие им значения АЦП, и просто буду при замере сравнивать, в каких пределах находится измеряемое напряжение. мне надо знать что писать в конструкциях if-else!!

писать:
if (a>255) ... или if (a>0xFF)
что писать блин в коде???
0
dsodir
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,284
25.05.2011, 20:11 10
Неважно:

if (adc > 219)
это тоже самое, что
if (adc > 0xDB)
И тоже самое, что
if (adc > 0b11011011)
И даже тоже самое, что
if (adc > "Ы")

Такие дела.
0
ptoop
0 / 0 / 0
Регистрация: 19.09.2010
Сообщений: 1,761
25.05.2011, 20:36 11
Число там хранится в двоичной кодировке, как сказал Гарнист.
Точнее сказать - число там ПРОСТО хранится. А как его представить другой вопрос. Например как у тебя:
if (adc > 219)
это тоже самое, что
if (adc > 0xDB)
И тоже самое, что
if (adc > 0b11011011)
И даже тоже самое, что
if (adc > "Ы")
0
somyo_3
0 / 0 / 0
Регистрация: 09.01.2011
Сообщений: 544
25.05.2011, 20:39 12
Собственно, именно это своим постом я и пытался сказать.
Хех, это сложный вопрос. Я тоже однажды таким вопросом зафейлился. Шестнадцатиричная/двоичная/десятичная - это системы счисления. А число при этом не меняется. Допустим, такое верно.

unsykned char a = 3;
if ((a==0b00000011)||(a==0x03))
{}
0
dsodir
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,284
25.05.2011, 20:41 13
ptoop:
Ну если вскрыть чип, добраться до регистров АЦП, то мы увидим 16 ячеек, принимающих одно из двух возможных состояний. Все-таки она двоичная :)
0
Moxym_DM
25.05.2011, 21:17 14
Можно открыть книгу, и прочитать определение регистра. И оно гласит, что регистр представляет собой цифровую электронную схему, служащую для временного хранения двоичных чисел. Вообще, любая ЭВМ оперирует исключительно двоичными числами и ничего другого она не умеет и не знает:) А dec, hex не более чем математическая абстракция.
somyo_3
0 / 0 / 0
Регистрация: 09.01.2011
Сообщений: 544
25.05.2011, 21:23 15
>>>любая ЭВМ
А как же аналоговые и троичные??

>> А dec, hex не более чем математическая абстракция.
А вот это в точку.
0
Moxym_DM
25.05.2011, 21:28 16
>>>А как же аналоговые и троичные??

И много вы их в живую видели?
И сколько программ вы под них написали. Речь все-таки о том, что мы реально используем
И троичная ЭВМ это в основе двоичная ЭВМ
kytikot
0 / 0 / 1
Регистрация: 27.01.2010
Сообщений: 3,435
25.05.2011, 21:31 17
Есть очень мало микросхем, в которых числа хранятся в BDC - binary-decimal code - двоично-десятичный код. И практически все они предназначены для определенных целей, чаще всего для вывода на индикаторы.

Двоично-десятичный код отличается тем, что каждый полубайт (4 разряда) обнуляется с переносом после 1001 (9).
0
dsodir
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,284
25.05.2011, 21:35 18
Очень мало? ЕМНИП, это чуть менее, чем все RTC..
0
Moxym_DM
25.05.2011, 21:42 19
binary-decimal code-это прежде всего двоичный код. Просто в каждой ячейке хранится число, не превышающее 9.
ptoop
0 / 0 / 0
Регистрация: 19.09.2010
Сообщений: 1,761
25.05.2011, 22:21 20
Есть очень мало микросхем, в которых числа хранятся в BDC - binary-decimal code - двоично-десятичный код.
Это всего лишь удобное разделение числа по ячейкам (регистрам). В остальном разницы нет.

Цитата Сообщение от dsodir
ptoop:
Ну если вскрыть чип, добраться до регистров АЦП, то мы увидим 16 ячеек, принимающих одно из двух возможных состояний. Все-таки она двоичная :)
Мы разве о физическом представлении чисел? Если так, то да, в двоичном.
Я имел ввиду запись его в исходном коде...
0
25.05.2011, 22:21
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2011, 22:21

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

Вопрос о влиянии низкой тактовой частоты на работу АЦП
Доброго, джентльмены. Ваяю приборчик на Тини26 с использованием АЦП. Главное требование -...

Детский, мелкий вопрос по Си
Разглядываю Стандартную Библиотеку (stm8l)... Подскажите пожалуйста, пошто так много привЕдений во...

мелкий вопрос о SL5
Как вот правильно "уменьшить" плату ,чтобы на печать можно было их несколько выдать.Блин (сейчас по...

Мелкий вопрос: какой ток пойдет через базу транзистора?
Схемка вот такая. Собрал, толком не подумав. А теперь и думаю - какой ток пойдет через базу и...

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


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

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

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