Значения 12-битного АЦП при входном U=0..5 В

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Xanter110
Родился
Сообщения: 7
Зарегистрирован: Вс фев 13, 2022 14:38:01

Значения 12-битного АЦП при входном U=0..5 В

Сообщение Xanter110 »

Есть такой кусок кода

#define norm 1000

uint16_t min = 0xFFF;
uint16_t max = 0;

if (ADC > max) max = ADC;
if (ADC < min) min = ADC;

if ((max-min) > norm) PORTB |= 1<<PB0;

В 12-битном АЦП диапазон 0-5 В преобразуется в значения от 0 до 4095? В этом коде 0xFFF = 4095? Если min и max заданы типом переменной uint16_t , а norm просто 1000 (int?), корректно ли их сравнение? То есть включается ли norm в этот диапазон от 0 до 4095? Не стоит ли min и max заменить на float или обозначить norm как uint16_t norm = 3E8 (1000 в шестнадцатиричной системе)?
Реклама
Up2805
Встал на лапы
Сообщения: 148
Зарегистрирован: Сб июн 04, 2022 05:21:07

Re: Значения 12-битного АЦП при входном U=0..5 В

Сообщение Up2805 »

Во-первых, вы в коде можете писать не только в 16-ричной, но и в 10-чной системе. Во-вторых, значения из регистра из 12-битого АЦП при любом раскладе не будут превышать диапазон 0 - 4095.
А почему max = 0, а min = 4095? В диапазон int всяко будет входить диапазон uint16_t. int - платформозависимый, и на 32-битной системе он равнозначен int32_t. В принципе, диапазон 0-4095 помещается в диапазон uint16_t. С другой стороны, когда пишете #define NORM 1000, то это константа, и по умолчанию она будет иметь диапазон int.
float как бы вообще не нужен, если вы в целых числах все делаете. Тем более, операции сравнения во float вообще опасны.
uint16_t norm = 3E8
вот тут не понял. Как так?
Последний раз редактировалось Up2805 Пн июн 20, 2022 19:25:16, всего редактировалось 1 раз.
Реклама
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Значения 12-битного АЦП при входном U=0..5 В

Сообщение Martian »

Xanter110 писал(а):В 12-битном АЦП диапазон 0-5 В преобразуется в значения от 0 до 4095?
да, если опорное напряжение 5 В.
Xanter110 писал(а): Если min и max заданы типом переменной uint16_t , а norm просто 1000 (int?), корректно ли их сравнение?
norm вообще не имеет типа, и каким он по умолчанию будет - известно только компилятору.

#define norm ((uint16_t)1000)

так гарантированно.
Xanter110 писал(а):Не стоит ли min и max заменить на float
Если понадобился знаковый тип, то нафига тип с плавающей точкой? просто не пишите u (unsigned) в начале типа. int16_t, например.

Xanter110 писал(а):max-min
а здесь может быть и 1000, и -1000

Добавлено after 2 minutes 45 seconds:
[uquote="Up2805",url="/forum/viewtopic.php?p=4248483#p4248483"]В диапазон int всяко будет входить диапазон uint16_t.[/uquote] разве? а вот у меня - нет.
Последний раз редактировалось Martian Пн июн 20, 2022 19:29:46, всего редактировалось 1 раз.
Up2805
Встал на лапы
Сообщения: 148
Зарегистрирован: Сб июн 04, 2022 05:21:07

Re: Значения 12-битного АЦП при входном U=0..5 В

Сообщение Up2805 »

меньше uint16_t - uint8_t. А для него определено char. Меньше char - нету (bool не в счет). Поэтому размерность int не может быть размерностью char.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
korsaj
Потрогал лапой паяльник
Сообщения: 330
Зарегистрирован: Чт июн 23, 2011 07:55:51

Re: Значения 12-битного АЦП при входном U=0..5 В

Сообщение korsaj »

Xanter110 и тут вы начинаете сомневаться )))

Скажите, что вам неймётся? В чем проблема?
Последний раз редактировалось korsaj Пн июн 20, 2022 19:39:14, всего редактировалось 1 раз.
Реклама
Up2805
Встал на лапы
Сообщения: 148
Зарегистрирован: Сб июн 04, 2022 05:21:07

Re: Значения 12-битного АЦП при входном U=0..5 В

Сообщение Up2805 »

И тут вы начинаете соображать - что #define - это вообще константа.
А у кого там проблемы?
Реклама
Аватара пользователя
korsaj
Потрогал лапой паяльник
Сообщения: 330
Зарегистрирован: Чт июн 23, 2011 07:55:51

Re: Значения 12-битного АЦП при входном U=0..5 В

Сообщение korsaj »

У тс. Я ему вчера этот код дал, вчера он долго из него что-то пытался сделать. И сегодня продолжает, но форум сменил.
Up2805
Встал на лапы
Сообщения: 148
Зарегистрирован: Сб июн 04, 2022 05:21:07

Re: Значения 12-битного АЦП при входном U=0..5 В

Сообщение Up2805 »

ммм, ясно... Видимо, ему надо еще раз прочитать тот код.
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Значения 12-битного АЦП при входном U=0..5 В

Сообщение Martian »

Лучше, наверное, учебник. А то с одной стороны хорошо, что любое сомнение вызывает вопросы, но с другой стороны, задавать подобные вопросы просто-напросто дольше, чем прочитать книжку.
Аватара пользователя
korsaj
Потрогал лапой паяльник
Сообщения: 330
Зарегистрирован: Чт июн 23, 2011 07:55:51

Re: Значения 12-битного АЦП при входном U=0..5 В

Сообщение korsaj »

Ну да, глянуть таблицу типов данных.
Ответить

Вернуться в «Разные вопросы по МК»