Что за цирк с типом данных int?

До сего дня жил в счастливом неведении, что напр.
32767 + 1 для 2х байт(int) всегда будет -32768.
Теперь буду знать, что всё не так просто)))

1 лайк

Так 9+1 будет 0 :slight_smile:

1 лайк

Для 1-го десятичного разряда))

Нет, там не выходим за границы. Про unsigned типы в стандарте прямо сказано, что они должны подчиняться законам арифметики по модулю 2^n (§ 6.9.1) - “Unsigned integers shall obey the laws of arithmetic modulo 2^n where n is the number of bits in the value representation of that particular size of integer”

1 лайк

Большое спасибо за чёткий ответ

Ну вот, теперь осталось узнать результат 0-9 :slight_smile:

0-9=1 (для 1-го десятичного разряда)
И все сомнения должны уйти прочь)))

А вот теперь то самое в таком виде и только if(millis()-Y>0)

Потому я почти всегда пишу переменные unsigned… :thinking:

Я теперь буду тоже! ТС нужно сказать спасибо за то что заставил обратить внимание на не совсем очевидные вещии о которых мы (я уж точно) иногда забываем

Не пойму, на что намёк, но это условие будет ложным , только когда millis() == Y ;

Да, не забыть про тех, кто всё объясняет…

Это не подлежит сомнению’)

Unsigned, говоришь? :sweat_smile: :rofl: :joy:

Этот код уже разбирали на старом форуме насколько я помню.

Что “эквивалентные” условия if(millis()-Y>T){},if(millis()>T+Y){},if(millis()-T>Y){} и тому подобные на предмет поведения при великом переполнении можно проверить последовательностью цифр - как будто миллис может возвращать только 0,1,2…9 и имитировать на светодиоде потом. Взять T=1 (пусть будет в секундах).

Идею понял, спасибо.

Ну, в целом победил. Дело в том, что там при измерениях в дифференциальном биполярном режиме нельзя использовать VCC в качестве рефференса. Но написано об этом только в одном месте даташита и то косвенно : “Internal reference voltages of nominally 1.1V / 2.56V are provided on-chip. Alternatively, VCC can be used as reference voltage for single ended channels. There is also an option to use an external voltage reference and turn-off the internal voltage reference”.

Если в монополярном режиме, то дифференциальные измерения с VCC вроде адекватно работают. Хотя, после такой фразы из даташита, думаю, не стоит.

А вот как насчёт внешнего рефференса, пока не знаю, собираюсь попробовать.

как всё сложно, но тогда получается (если опора положительная только), что каналы несимметричны, по другому никак, значит будут ещё какие-то ограничения, хотя конечно вход может быть на сдвоенном операционнике один инвертирующий с единичным усилением, другой не инвертирующий, тогда можно ожидать, что разбег по каналам будет небольшим…вообще то я по лампам больше знаток )))

Половины слов я не понял, но на вид там всё просто. Есть пары дифференциальных входов (положительный и отрицательный).

В униполярном режиме напряжение на положительном входе всегда больше (или всегда меньше - тогда надо включить реверс полярности), чем не отрицательном. Результат замера - разница между напряжениями. Можно включить усиление в 20 раз (не 20 децибел, а именно 20 раз).

Можно также замерить разницу напряжений между положительным входом и им же самим. Это даст смещение, которое потом можно будет вычитать из измеренной разницы между входами.

В биполярном режиме тоже выдаётся разница между положительным входом и отрицательным, но она имеет право быть отрицательной. В этом случае разрядность АЦП будет 9 бит, т.к. один бит будет занят под знак.