Size: a a a

🎄Embedded Group

2021 January 24

ТЗ

Тюлень Здоровенный... in 🎄Embedded Group
Х
Типа того. Только учти, что длинные счётчики, под 20+ бит работают медленно и надо внимательно смотреть потянет ли на нужной частоте. Но на 1 МГц точно потяет.
Понял.
источник

A

Alexander in 🎄Embedded Group
Sven
for this adapter for the jlink I once designed a 3D case to print.  https://github.com/JimKnopfIoT/j-link-JTAG-3D-printable-case  / Для этого адаптера для jlink я разработал 3d футляр для печати
👍💪
источник

jp

jon pedro in 🎄Embedded Group
Ponytale 🇷🇺
uint8_t buf[22];
uint16_t aaa = *((uint16_t *) &buf[20]);

gcc: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]

а чего, как бы это по-красивше сделать чтобы он не ругался? union не хочется в этом месте
При чем  тут юнион и что ты хочешь сделать?
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
jon pedro
При чем  тут юнион и что ты хочешь сделать?
хочу чтоб не ругался)
источник

jp

jon pedro in 🎄Embedded Group
Ponytale 🇷🇺
хочу чтоб не ругался)
Отключить предупреждение)
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
jon pedro
Отключить предупреждение)
да я чет с gcc почти в первый раз работаю
источник

jp

jon pedro in 🎄Embedded Group
Ponytale 🇷🇺
да я чет с gcc почти в первый раз работаю
Я правильно понимаю, что ты хочешь в aa 16 бит поместить 2 байта из буф?
источник

jp

jon pedro in 🎄Embedded Group
Чем memcpy не зашёл?
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
jon pedro
Я правильно понимаю, что ты хочешь в aa 16 бит поместить 2 байта из буф?
ну да
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
jon pedro
Чем memcpy не зашёл?
не, это делается приведением типов на этапе компиляции все
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
просто думал может есть другая конструкция которая не вызовет варнинга у gcc
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
вообще такое выражение.
if( fletcher16(buf, 20) == *((uint16_t *) &buf[20]) )

даже промежуточной переменной нет
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
чет я усложняю вопросы, сорь @Bahoo08. нет там никакой aaa
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
ых ну как по-итогу клева довести до ума то, за что не брался уже многалет💪. связь по UART в обе стороны с учетом накопившихся хотелок, простоты и надежности протокола. главное - уверенность в том, что все работает и верифицировано (мной 😂).

теперь можно и 500 кБит попробовать как-нить)
временные метки вот ток последнее что добавить хочется)
источник

jp

jon pedro in 🎄Embedded Group
Ponytale 🇷🇺
вообще такое выражение.
if( fletcher16(buf, 20) == *((uint16_t *) &buf[20]) )

даже промежуточной переменной нет
Тогда возвращай тут uint16, если в этом вопрос
источник

ED

Electronics Designer in 🎄Embedded Group
Ponytale 🇷🇺
uint8_t buf[22];
uint16_t aaa = *((uint16_t *) &buf[20]);

gcc: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]

а чего, как бы это по-красивше сделать чтобы он не ругался? union не хочется в этом месте
Стоп. Чего вы хотите достичь? Вы отдаете себе отчет в том, что в aaa окажется buf[21]:buf[20]?

Эта запись эквивалентна следующей (в предположении, что архитектура предполагает little-endian):

aaa = ((uint16_t)buf[20]) | (((uint16_t)buf[21])<<8);
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
Electronics Designer
Стоп. Чего вы хотите достичь? Вы отдаете себе отчет в том, что в aaa окажется buf[21]:buf[20]?

Эта запись эквивалентна следующей (в предположении, что архитектура предполагает little-endian):

aaa = ((uint16_t)buf[20]) | (((uint16_t)buf[21])<<8);
да, именно это и задумано. little-endian везде да
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
все проверено все работает
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
это все так... перфекционизм на самом-то деле)
источник

ED

Electronics Designer in 🎄Embedded Group
В общем, я бы делал через сдвиги. Я нежно люблю указатели, но такое обращение к массиву выглядит слишком сурово даже для меня. :)
источник