Перейти к содержанию
    

Упорядочены ли кадры с одним и тем же CAN ID?

2 минуты назад, jcxz сказал:

Не очень понятно - что мешает отправить в нужном порядке?

Что гарантирует прием в нужном порядке? Отправить не проблема.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 минут назад, adnega сказал:

Можно часть ID выделить под счетчик (размером не менее числа mailbox на приемной стороне). Если протокол позволяет)

Можно выделять можно и не выделять. Так как при отправке хвостовой (или головной) кадр пакета кадров можно отправить последним. Сам делал такой протокол. Без дополнительных счётчиков.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, jcxz сказал:

Приёмная сторона примет их точно в том порядке, в котором они будут передаваться по шине. Ибо - другое невозможно по определению.

Примет, разложит по mailbox`ам. Как узнать какой mailbox принят раньше?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 minutes ago, Arlleex said:

Хреновенько. Жаль. Тогда буду отводить байт под некий счетчик последовательности и остальные 7:sad: байт юзать под данные.

Велосипед с треугольными колесами v100500

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, adnega сказал:

Что гарантирует прием в нужном порядке? Отправить не проблема.

В смысле? А почему они должны приняться не в том порядке, в котором следуют по шине? Никаких роутеров, с ретрансляцией очевидно у ТС-а на шине нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, jcxz said:

В смысле? А почему они должны приняться не в том порядке, в котором следуют по шине? Никаких роутеров, с ретрансляцией очевидно у ТС-а на шине нет.

Хорошая теория. Но в жизни - иначе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 минут назад, adnega сказал:

Примет, разложит по mailbox`ам. Как узнать какой mailbox принят раньше?

Зависит от конкретного МК и от протокола. Могу сказать как в XMC4xxx. Надо?

В XMC4xxx достаточно для каждого mailbox-а указать маску адреса - какие CAN-ID в него принимать. А если все кадры - с одинаковыми CAN-ID, то можно например соединить mailbox-ы в цепочку FIFO. Которое будет заполняться по порядку.

Ну и другие способы можно придумать.... например - при помощи DMA и FIFO уже в общей памяти. Хотя для XMC4700, с его 256 майлбоксами, это не нужно.

Это уж не говоря о том, что можно просто тупо реагировать на каждое прерывание о приёме каждого нового кадра. И делать всё программно.

6 минут назад, x893 сказал:

Хорошая теория. Но в жизни - иначе.

А как в жизни - расскажете? У вас биты по CAN гуляют сами по себе, куда вздумается?

11 минут назад, x893 сказал:

Велосипед с треугольными колесами v100500

Кроме пустых общих фраз, есть что по делу сказать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 минут назад, jcxz сказал:

А как в жизни

В жизни ни у всех есть аппаратный FIFO. У многих это просто три коробки. При приеме пакета выставляется флаг. Далее в обработчике смотришь какая коробка заполнена и помещаешь содержимое в программный FIFO. Бывает, что заполнено сразу несколько коробок - и вот это не гарантирует порядок пакетов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, adnega сказал:

В жизни ни у всех есть аппаратный FIFO. У многих это просто три коробки. При приеме пакета выставляется флаг. Далее в обработчике смотришь какая коробка заполнена и помещаешь содержимое в программный FIFO. Бывает, что заполнено сразу несколько коробок - и вот это не гарантирует порядок пакетов.

Тогда:

9 минут назад, jcxz сказал:

Это уж не говоря о том, что можно просто тупо реагировать на каждое прерывание о приёме каждого нового кадра. И делать всё программно.

не пропуская прерываний. Или вместо прерываний - DMA.

Ну или действительно - выделить часть CAN-ID под индекс кадра внутри мульти-кадра.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 7/22/2024 at 3:44 PM, x893 said:

Это если SDO blob transfer.

CiA 301

7.2.4.3.10 Protocol SDO block download sub-block

7.2.4.3.14 Protocol SDO block upload sub-block

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кста, я когда звук поверх CAN в низкоприоритетном потоке передавал сделал просто передачу четных и нечетных выборок в соседних пакетах. Т.е. при потере пакета просто полоса сигнала резалась. И, вроде, был у меня tog-бит в ID.. Но там можно было пакет потерять) И частота была небольшая, что несколько боксов с этим ID не забивались)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 7/22/2024 at 3:50 PM, Arlleex said:

Хреновенько. Жаль. Тогда буду отводить байт под некий счетчик последовательности и остальные 7:sad: байт юзать под данные.

https://en.wikipedia.org/wiki/ISO_15765-2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 minutes ago, jcxz said:

не пропуская прерываний. Или вместо прерываний - DMA.

DMA для CAN  не везде есть
Прерывания никто и не пропускает. Но это не помогает.

 

32 minutes ago, jcxz said:

А как в жизни - расскажете? У вас биты по CAN гуляют сами по себе, куда вздумается?

В жизни есть протоколы (canopen/ isobus / ...), для коня в вакууме делайте как хотите.

Мне в вакууме не надо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, x893 сказал:

Прерывания никто и не пропускает. Но это не помогает.

Почему не помогает? Если в МК имеется 2+ шт. MO для приёма, то этого достаточно для двойной буферизации. И если не пропускать прерывания, то порядок приёма не будет нарушен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 7/22/2024 at 3:50 PM, Arlleex said:

Хреновенько. Жаль. Тогда буду отводить байт под некий счетчик последовательности и остальные 7:sad: байт юзать под данные.

Заюзайте CAN-FD, а лучше CAN-XL

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...