Страница 2 из 2
Как применить формулу к последовательности байт?
Добавлено: 06 окт 2018, 14:15
Labu559
Отправлено спустя 3 минуты 28 секунд:
Sancho писал(а): 06 окт 2018, 14:04ты подал не в том порядке - сверху младшие, снизу старшие...
Это не я подал
ElectroMechaniC писал(а): 05 окт 2018, 10:40мне нужно применить к ней формулу
(1.0*(10*((A*16777216+B*65536+C*256+D)&268435455)))/1000
ElectroMechaniC писал(а): 05 окт 2018, 11:48последовательность такова A-7F: B-22: C-12: D-(предположительно) 00.
Labu559 писал(а): 05 окт 2018, 11:49Если я правильно Вас пронял, и "7F" это "А" в Вашей формуле; B==0x22 ; C==0x12, то в таком случае
Если я правильно
пронял, изв.понял ,всё
продано, извините подано до меня.
Как применить формулу к последовательности байт?
Добавлено: 06 окт 2018, 15:24
Sancho
[ref]Labu559[/ref], Василий, в таком случае ты дёргаешь "D" 127/255, на 3 плате с моим блоком. самые незначащие в формуле.
Labu559 писал(а): 05 окт 2018, 20:17И ещё,
Sancho писал(а): ↑Вчера [12:33]
Эта операция уберёт четыре старших бита в числе, 32 битном.
которые всегда, при любом значении А будут == 0, и после чего не влезают ещё 4 старших бита этого же А при значениях больше 127 (0xF). Может тогда есть смысл облегчить страдания Arduino и вставить строку if (A>0xF) A=0xF;
Нет, это не одно и тоже. Например, 134, оно более 0xF, но младшие 4 бита совсем другие, чем у 0xF, соответственно, и результат будет иным. А побитовые операции для ардуинки - как "с добрым утром" проходят, в отличии от последующих /100,0
У меня осталась привычка от обозначения советской логики - сверху младшие разряды, снизу старшие, что вход, что выход. [spoiler]
2018-10-06_15-10-25.png
[/spoiler]
Так и делаю на своих блоках.
Отправлено спустя 5 минут 9 секунд:
Я думаю, что &268435455 - это делитель на 16 кругов одометра - тебе не видно, а ЭБУ всё знает!

Как применить формулу к последовательности байт?
Добавлено: 06 окт 2018, 15:44
Labu559
Sancho писал(а): 06 окт 2018, 15:19в таком случае
Да я уже и сам заметил, и на 4-й плате тоже. Поставил как нужно, теперь твои результаты совпадают с моими полностью. Вопрос не снят с повестки дня о значениях переменной byte А(127/255) или в unsigned long 127255255255 и 255255255255 которые в итоге дают одинаковый float на выходе 2684354,5.
Отправлено спустя 2 минуты 58 секунд:
Sancho писал(а): 06 окт 2018, 15:24делитель на 16 кругов одометра - тебе не видно
понял теперь, так это сдвиг вправо надо делать на 4 позиции а не & 268435455 в таком случае, или все сдвиги влево минусовать на 4 позиции а переменную D убрать 4 младших бита (не полных 10 метров?).
value = ((A|0UL)<<20)+((B|0UL)<<12)+((C|0UL)<<4)+(D>>4);
value = (((A|0UL)<<24)+((B|0UL)<<16)+((C|0UL)<<8)+D)>>4;
Ув. [ref]ElectroMechaniC[/ref], Попробуйте теперь [spoiler title=этот блок из проекта]
MechanicFinal.flp
[/spoiler] на этом моя буйная фантазия и время исчерпались. Всем извините!
Как применить формулу к последовательности байт?
Добавлено: 06 окт 2018, 16:53
Sancho
[ref]Labu559[/ref], Нет, Василий. Это 16 кругов одометра! А внутри ЭБУ всё считается!
Исходник
Отправлено спустя 3 минуты 57 секунд:
Labu559 писал(а): 06 окт 2018, 15:442684354,5
км. Это ещё нужно проехать, хотя-бы за жизнъ
Отправлено спустя 29 минут 18 секунд:
Померла нанка - не загружается

протёрлась, наверно
dizzyy писал(а): 06 окт 2018, 16:53попробуй бутлоадер залить.. у меня часто слетает при тестах
Позже...
Отправлено спустя 7 минут 48 секунд:
Проверил в протеусе. Подавал значения от 0 и ++. Работают только четыре младшие бита. Далее по кругу.
Отправлено спустя 51 секунду:
Тестовый пример.
Как применить формулу к последовательности байт?
Добавлено: 06 окт 2018, 16:56
Sancho
Оставил все биты - то-же...
т.е. 28 бит макс? получается да.
Как применить формулу к последовательности байт?
Добавлено: 06 окт 2018, 18:16
AlexCrane
[ref]Labu559[/ref], [ref=#ff8000]Sancho[/ref], Пока генералы спорят... я

Как применить формулу к последовательности байт?
Добавлено: 06 окт 2018, 19:23
Sancho
[ref]AlexCrane[/ref], И я уже "вляпался" в субботницу....
Как применить формулу к последовательности байт?
Добавлено: 06 окт 2018, 19:53
AlexCrane
[ref=#ff8000]Sancho[/ref],[spoiler=Offtopic]

[/spoiler]
Как применить формулу к последовательности байт?
Добавлено: 06 окт 2018, 23:38
Labu559
Sancho писал(а): 06 окт 2018, 16:53Работают только четыре младшие бита. Далее по кругу.
Sancho писал(а): 06 окт 2018, 16:56т.е. 28 бит макс? получается да.
Саша, ну конечно, и я о том-же в 4-м, в 13-м, в 15-м показываю в проекте, в 17-м, в 19-м опять показываю, в 23-м, толкую и так и сяк и эдак- не влазит больше! Вот не зря евреи в суботу отдыхают.

Как применить формулу к последовательности байт?
Добавлено: 07 окт 2018, 07:35
Sancho
[ref]Labu559[/ref], Василий - осознал сам. Вкурил, впил так сказать.
Как применить формулу к последовательности байт?
Добавлено: 07 окт 2018, 22:54
ElectroMechaniC
Получается каша! В итоге из этой формулы должно получиться Dec==29587.61(для ясности :км), это мой реальный пробег на щитке), а по примерам фуйня муйня выходит))) чёт не клеится))) извините за громкие(замаскированные) слова!
Как применить формулу к последовательности байт?
Добавлено: 08 окт 2018, 08:53
Sancho
[ref]ElectroMechaniC[/ref], Какие байты(набор) при этих показаниях получаешь?
Как применить формулу к последовательности байт?
Добавлено: 08 окт 2018, 12:32
ElectroMechaniC
[ref=#ff8000]Sancho[/ref], 21329392.00 приходит((((((((((
Отправлено спустя 34 секунды:
Вроде бы где то и рядом но не то(((
Как применить формулу к последовательности байт?
Добавлено: 08 окт 2018, 12:50
Sancho
[ref]ElectroMechaniC[/ref], Нет, я о байтах, какой набор в формате Нех.
Как применить формулу к последовательности байт?
Добавлено: 08 окт 2018, 12:53
ElectroMechaniC
[ref=#ff8000]Sancho[/ref], немного не въеду о чём речь,ведь мне то по формуле как раз в десятичное число и нужно.... Я просто не пойму. объясни пожалуйста что сделать и я попробую..
Как применить формулу к последовательности байт?
Добавлено: 08 окт 2018, 13:45
Sancho
ElectroMechaniC, я о байтах, которые подаёшь на блок. Входные данные для формулы.
Отправлено спустя 38 секунд:
И какие показания одометра в этот момент.