LINUX.ORG.RU

Ответ на: комментарий от AUX

int16 == uint16 если старший разряд равен нулю.

Какой результат ты хочешь увидеть если исходное число отрицательное ? Его абсолютное значение или 0 ?

vel ★★★★★ ()
Ответ на: комментарий от shkolnick-kun

Я выше писал, что там ограниченный FBD, писать макросы можно только на FBD, был бы бы какой нибудь ST, вопросов не было бы. А uint16 они не завезли, все типы знаковые, а мне нужен беззнаковый.

AUX ★★★ ()
Ответ на: комментарий от AUX

либо операция AND c 0x0111111111111111 тогда отрицательные -> 0.
либо прибавить 32768...
все зависит от задачи. арифметически правильнее первое решение, но, к примеру, для вывода в АЦП и подобные используется второй. и т.д. и т.п.

pfg ★★★ ()
Последнее исправление: pfg (всего исправлений: 1)
Ответ на: комментарий от Deleted

У меня связана по модбасу stm32 и плк segnetics smh2g. На stm32 три энкодера, а сегнтикс как показометр и управление ТП (ввод параметров изделия и проч.) для оператора и технолога. Просто мне удобнее иметь именно такой диапазон, просто со знаком немного не вписываюсь, просто мне не удобно будет считать:)

AUX ★★★ ()
Ответ на: комментарий от beastie

Хорошая идея, завтра попробую, если конечно там есть операция xor для long int, просто весь прикол что у них нет такой сущности как безнаковое число. Придётся int преобразовать в long и уже потом xor.

AUX ★★★ ()
Последнее исправление: AUX (всего исправлений: 1)

А мне всегда казалось что внутри FBD там обычный ST. Или там вообще ничего не дают, вот тебе базовый набор кирпичей, и крутись как хочешь?

morse ★★★★★ ()