|
Сориентируйте по протоколам/транспортам для связи 2 микроконтроллеров |
|
|
|
Sep 22 2018, 18:51
|
Участник

Группа: Участник
Сообщений: 68
Регистрация: 16-06-18
Из: СПб
Пользователь №: 105 099

|
https://easyeda.com/speed/DC_Motor_speed_co...8f540acd1a2f4bbhttps://easyeda.com/speed/Universal_speed_c...8f540acd1a2f4bbНужно сделать гальваническую развязку между высоковольтной частью регулятора скорости и внешними интерфейсами (индикатор, кнопки и т.п.). Как ни странно, но по деталькам проще всего оказывается поставить 2 микроконтроллера и свинтить их через что-то вроде adum1201. Понятно, что не особо сложно взять UART и схолхозить протокол типа modbus (запись/чтение по заданному виртуальному адресу). Но может на эту тему есть что-то стандартное, чтобы не изобретать лисапед? Я не готов выкатить полноценное ТЗ, но надеюсь по схемам и задачам примерно понятно, что может подойти. Все "мясо" - на силовом контроллере. На вспомогательном - только ручки и индикатор. Мне бы хватило, если бы вспомогательный был master-ом, и сам инициировал все опросы. Можно более сложные варианты, если есть готовые библиотеки, но не обязательно. Ну и конечно нужна какая-то минимальная защита от сбоев, чтобы обмен не затыкался. Какие есть варианты кроме самопального колхоза а ля модбас?
Сообщение отредактировал p_v - Sep 22 2018, 18:54
|
|
|
|
|
 |
Ответов
|
Sep 22 2018, 21:41
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (p_v @ Sep 22 2018, 21:51)  Понятно, что не особо сложно взять UART и схолхозить протокол типа modbus (запись/чтение по заданному виртуальному адресу). Но может на эту тему есть что-то стандартное, чтобы не изобретать лисапед? Я изобретаю под каждую задачу. Все мои протоколы поверх поверх УАПП (UART) чем-то похожи на WAKE, но выросли из нижнего уровня IrDA. modbus - кошмар для программиста.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Sep 23 2018, 10:32
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (jcxz @ Sep 23 2018, 11:06)  Если рассматривать только его механизм деления на кадры (а только он нужен для данной задачи), то что там такого страшного? Как минимум то, что механизм деления на кадры завязан на времянки и требует дополнительного таймера и весьма нетривиального алгоритма при использовании УАПП в связке с ПДП. Ну а верхние уровни, завязанные на передачу исключительно наборов битов или двухбайтовых чисел в формате больших индейцев - то еще счастье, особенно если пытаться натянуть сову на глобус его команды группового чтения/записи набора регистров на реальную систему.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Sep 23 2018, 11:26
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Сергей Борщ @ Sep 23 2018, 13:32)  Как минимум то, что механизм деления на кадры завязан на времянки и требует дополнительного таймера Для большинства МК - не требует, так как таймер входит в состав UART-периферии МК. И имеются и соответствующие статусные биты и прерывания. На приём конечно. На передачу тоже можно обойтись: дождавшись состояния "сдвиговый регистр TX пуст", перевести TX-ногу в режим GPIO в неактивный уровень, выплюнуть некоторое число символов, опять дождаться состояния "сдвиговый регистр TX пуст" и перевести ногу обратно. Цитата(Сергей Борщ @ Sep 23 2018, 13:39)  Среднестатистический пакет длиной в пару десятков байтов увеличивается на два-три байта. Меня это не напрягает. Неудобство-то не со среднестатическим, а с максимальным: все буфера под максимум нужно рассчитывать, да и время обработки тоже и таймауты всякие и пр. Если что-то будет не успевать или переполняться только в редких случаях, то то что "среднестатистически всё работает" - будет слабым утешением. Цитата(Сергей Борщ @ Sep 23 2018, 13:39)  Зато можно подключиться к приему хоть в середине пакета и войти в синхронизм уже на следующем пакете, не нужно передавать длину пакета, мизерный код для реализации приема и передачи. Про COBS слышал, как-то не возбудил (это чисто субъективно). Всё это имеет и COBS, но кроме того - не имеет такого большого оверхеда по объёму при кодировании. Раньше я тоже обычно использовал SLIP.  Цитата(AlexandrY @ Sep 23 2018, 13:39)  Но в управлении движками (а мы обсуждаем не коней в вакууме, если кто забыл) есть несколько циклов с фиксированным периодом. Вангую что кроме собственно управления движками у ТСа там ещё много чего надо будет передавать. О чём намекает упоминание кнопок и пр. И откуда и куда и каким образом это будет делаться - знает только он сам.
|
|
|
|
|
Sep 23 2018, 18:09
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (jcxz @ Sep 23 2018, 14:26)  Для большинства МК - не требует, так как таймер входит в состав UART-периферии МК. И имеются и соответствующие статусные биты и прерывания. На приём конечно. На передачу тоже можно обойтись: дождавшись состояния "сдвиговый регистр TX пуст", перевести TX-ногу в режим GPIO в неактивный уровень, выплюнуть некоторое число символов, опять дождаться состояния "сдвиговый регистр TX пуст" и перевести ногу обратно. Сколько символов надо выплюнуть, чтобы получить паузу в три с половиной байтовых интервала? Какие статусные биты и прерывания AVR, STM32, LPC2xxx позволяют отличать паузу в два с половиной байтовых интрвала от паузы в три с половиной байтовых интервала? QUOTE (jcxz @ Sep 23 2018, 14:26)  Неудобство-то не со среднестатическим, а с максимальным: все буфера под максимум нужно рассчитывать, да и время обработки тоже и таймауты всякие и пр. Я собираю и разбираю на лету, буфера не увеличиваются ни на байт. QUOTE (jcxz @ Sep 23 2018, 14:26)  Если что-то будет не успевать или переполняться только в редких случаях, то то что "среднестатистически всё работает" - будет слабым утешением. Видимо все дело в реализации.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
Сообщений в этой теме
p_v Сориентируйте по протоколам/транспортам для связи 2 микроконтроллеров Sep 22 2018, 18:51 Forger Цитата(p_v @ Sep 22 2018, 21:51) Какие ес... Sep 22 2018, 19:04 AlexandrY Цитата(p_v @ Sep 22 2018, 21:51) Можно бо... Sep 22 2018, 19:57 Forger Цитата(AlexandrY @ Sep 22 2018, 22:57) На... Sep 22 2018, 20:23  AlexandrY Цитата(Forger @ Sep 22 2018, 23:23) Вот т... Sep 23 2018, 07:37   Forger Цитата(AlexandrY @ Sep 23 2018, 10:37) Ес... Sep 23 2018, 07:59    mantech Цитата(Forger @ Sep 23 2018, 10:59) ETHER... Sep 23 2018, 08:04    AlexandrY Цитата(Forger @ Sep 23 2018, 10:59) ETHER... Sep 23 2018, 08:43     Forger Цитата(AlexandrY @ Sep 23 2018, 11:37) Вс... Sep 23 2018, 08:51     jcxz Цитата(AlexandrY @ Sep 23 2018, 11:43) Но... Sep 23 2018, 08:51      AlexandrY Цитата(jcxz @ Sep 23 2018, 11:51) Автору ... Sep 23 2018, 10:39    k155la3 Цитата(Forger @ Sep 23 2018, 10:59) . . .... Sep 23 2018, 14:28     Forger Цитата(k155la3 @ Sep 23 2018, 17:28) CAN ... Sep 23 2018, 14:42     AlexandrY Цитата(k155la3 @ Sep 23 2018, 17:28) В пр... Sep 23 2018, 17:32      Forger Цитата(AlexandrY @ Sep 23 2018, 20:32) Ес... Sep 23 2018, 17:52   jcxz Цитата(AlexandrY @ Sep 23 2018, 10:37) В ... Sep 23 2018, 08:02    Forger Цитата(jcxz @ Sep 23 2018, 11:02) ТСу нуж... Sep 23 2018, 08:15 kovigor Цитата(p_v @ Sep 22 2018, 21:51) Какие ес... Sep 22 2018, 20:57 jcxz Цитата(Сергей Борщ @ Sep 23 2018, 00:41) ... Sep 23 2018, 00:19  Сергей Борщ QUOTE (jcxz @ Sep 23 2018, 03:19) У SLIP-... Sep 23 2018, 10:39 scifi Цитата(Сергей Борщ @ Sep 23 2018, 00:41) ... Sep 23 2018, 07:53   scifi Короче, резюмируем так: как умеешь, так и делай, и... Sep 23 2018, 10:38    AlexandrY Цитата(jcxz @ Sep 23 2018, 14:26) Вангую ... Sep 23 2018, 11:59     jcxz Цитата(Сергей Борщ @ Sep 23 2018, 21:09) ... Sep 23 2018, 19:07 sidy Цитата(Сергей Борщ @ Sep 23 2018, 00:41) ... Sep 24 2018, 11:01  mantech Цитата(sidy @ Sep 24 2018, 14:01) Пояснит... Sep 24 2018, 12:29  Сергей Борщ QUOTE (sidy @ Sep 24 2018, 14:01) Пояснит... Sep 24 2018, 15:10 p_v https://github.com/speedcontrols/wifi-confi...doc/... Sep 23 2018, 19:08 jcxz Цитата(p_v @ Sep 23 2018, 22:08) Тут теку... Sep 23 2018, 19:20  p_v Цитата(jcxz @ Sep 23 2018, 22:20) JSON то... Sep 23 2018, 20:02   AlexandrY Цитата(p_v @ Sep 23 2018, 23:02) Почему б... Sep 23 2018, 20:08    p_v Вы всерьез считаете, что всем важно знать что вам ... Sep 23 2018, 20:48     AlexandrY Цитата(p_v @ Sep 23 2018, 23:48) Вы всерь... Sep 24 2018, 06:09      p_v Цитата(AlexandrY @ Sep 24 2018, 09:09) Зд... Sep 24 2018, 07:04   jcxz Цитата(p_v @ Sep 23 2018, 23:02) и не соо... Sep 24 2018, 10:28 p_v У меня вопрос по CAN. Не уверен, насколько вообще ... Sep 23 2018, 22:03 Forger Цитата(p_v @ Sep 24 2018, 01:03) Возможно... Sep 24 2018, 05:37 Alechek Цитата(mantech @ Sep 24 2018, 17:29) То ж... Sep 24 2018, 16:24 Сергей Борщ QUOTE (Alechek @ Sep 24 2018, 19:24) Или ... Sep 24 2018, 17:30  jcxz Цитата(Сергей Борщ @ Sep 24 2018, 20:30) ... Sep 24 2018, 18:50  p_v Цитата(Сергей Борщ @ Sep 24 2018, 20:30) ... Sep 24 2018, 22:44   AlexandrY Цитата(p_v @ Sep 25 2018, 01:44) Все упир... Sep 25 2018, 04:39   Forger Цитата(p_v @ Sep 25 2018, 01:44) Единстве... Sep 25 2018, 06:26    p_v Цитата(Forger @ Sep 25 2018, 09:26) Имхо,... Sep 25 2018, 11:23 scifi Никак не пойму, что не так с банальным оптроном? Sep 25 2018, 11:32 AlexandrY Цитата(scifi @ Sep 25 2018, 14:32) Никак ... Sep 25 2018, 12:08 p_v Цитата(scifi @ Sep 25 2018, 14:32) Никак ... Sep 25 2018, 15:16 scifi Ну не знаю... 2 оптрона - и будет UART. Хозяин - б... Sep 25 2018, 15:20 p_v Цитата(scifi @ Sep 25 2018, 18:20) Ну не ... Sep 25 2018, 17:30 scifi Ну и считайте. Я же не настаиваю Sep 25 2018, 17:43 p_v Цитата(scifi @ Sep 25 2018, 20:43) Ну и с... Sep 25 2018, 18:23
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|