Форум РадиоКот https://radiokot.ru/forum/ |
|
Значения 12-битного АЦП при входном U=0..5 В https://radiokot.ru/forum/viewtopic.php?f=62&t=183309 |
Страница 1 из 1 |
Автор: | Xanter110 [ Пн июн 20, 2022 18:59:34 ] |
Заголовок сообщения: | Значения 12-битного АЦП при входном U=0..5 В |
Есть такой кусок кода #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 [ Пн июн 20, 2022 19:17:48 ] |
Заголовок сообщения: | Re: Значения 12-битного АЦП при входном U=0..5 В |
Во-первых, вы в коде можете писать не только в 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 вот тут не понял. Как так? |
Автор: | Martian [ Пн июн 20, 2022 19:26:09 ] |
Заголовок сообщения: | Re: Значения 12-битного АЦП при входном U=0..5 В |
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: В диапазон int всяко будет входить диапазон uint16_t. разве? а вот у меня - нет.
|
Автор: | Up2805 [ Пн июн 20, 2022 19:29:44 ] |
Заголовок сообщения: | Re: Значения 12-битного АЦП при входном U=0..5 В |
меньше uint16_t - uint8_t. А для него определено char. Меньше char - нету (bool не в счет). Поэтому размерность int не может быть размерностью char. |
Автор: | korsaj [ Пн июн 20, 2022 19:33:34 ] |
Заголовок сообщения: | Re: Значения 12-битного АЦП при входном U=0..5 В |
Xanter110 и тут вы начинаете сомневаться ))) Скажите, что вам неймётся? В чем проблема? |
Автор: | Up2805 [ Пн июн 20, 2022 19:34:51 ] |
Заголовок сообщения: | Re: Значения 12-битного АЦП при входном U=0..5 В |
И тут вы начинаете соображать - что #define - это вообще константа. А у кого там проблемы? |
Автор: | korsaj [ Пн июн 20, 2022 19:37:46 ] |
Заголовок сообщения: | Re: Значения 12-битного АЦП при входном U=0..5 В |
У тс. Я ему вчера этот код дал, вчера он долго из него что-то пытался сделать. И сегодня продолжает, но форум сменил. |
Автор: | Up2805 [ Пн июн 20, 2022 19:39:14 ] |
Заголовок сообщения: | Re: Значения 12-битного АЦП при входном U=0..5 В |
ммм, ясно... Видимо, ему надо еще раз прочитать тот код. |
Автор: | Martian [ Пн июн 20, 2022 19:46:38 ] |
Заголовок сообщения: | Re: Значения 12-битного АЦП при входном U=0..5 В |
Лучше, наверное, учебник. А то с одной стороны хорошо, что любое сомнение вызывает вопросы, но с другой стороны, задавать подобные вопросы просто-напросто дольше, чем прочитать книжку. |
Автор: | korsaj [ Пн июн 20, 2022 19:52:53 ] |
Заголовок сообщения: | Re: Значения 12-битного АЦП при входном U=0..5 В |
Ну да, глянуть таблицу типов данных. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |