|
Посоветуйте простой протокол передачи данных |
|
|
|
Nov 30 2010, 08:48
|

Профессионал
    
Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360

|
Нуждаюсь в связи двух МК между собой. Скорость практически не важна (необходимо передать 8ми битную уставку при нажатии\отпускании кнопки без раздражающей человека задержки). Однако важна помехозащищеннось, так как один из МК трудится на плате управления ДПТ с импульсными токами до 6А и осуществляет PWM управление этим двигателем без гальванической развязки. Команду необходимо передать четко, громко и без искажений, как лай караульной собаки  Процессор интерфейса находится на отдельной плате, но также гальванически не развязан и питается от того же источника, что и МК управляющий мотором, так что возможны "иголки". Протокол нужен софтовый, так как для связи используются выводы, не несущие альтернативных функций протоколов связи. На целевом МК доступно внешнее прерывание на одном из выводов. Оба МК тактируются от внутренней RC и будут работать не только в комнатных условиях. Какой интерфейс посоветуете (хоть стандарт, хоть самодельный)?
--------------------
Андрей Смирнов
|
|
|
|
|
Nov 30 2010, 09:19
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(firstvald @ Nov 30 2010, 12:09)  В вашем случае можно сделать так: Тогда уж проще взять Modbus ASCII и вообще ничего не изобретать. И на терминале будет не буква "я", а HEX-коды переданных байтов. Можно немного упростить, выкинув поле адреса и кода команды (если они не нужны). Но не стоит экономить 1 байт на CRC Готовая библиотека freemodbus имплементируется в 3 шага за полчаса.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Nov 30 2010, 09:45
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(firstvald @ Nov 30 2010, 12:34)  Нужен простой протокол, который легко отладить и написать. Да уж куда проще... А Modbus - промышленный стандарт. К тому же готовый - и писать ничего не надо. Множество открытых библиотек - как для контроллеров (разных), так и для PC. Межприборным обменом занимаюсь непрерывно. В данный конкретный момент выковыриваю самописные велосипеды и переделываю на модбас РТУ, ибо проще, логичнее, универсальнее и к тому же куча готовых тулзов.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Nov 30 2010, 13:29
|
Знающий
   
Группа: Свой
Сообщений: 608
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111

|
Цитата(Pyku_He_oTTyda @ Nov 30 2010, 16:23)  UART не хотелось бы из-за тактирования МК от RC внутренних и широкой температуры использования. Чем обосновано внутреннее тактирование? Ведь если начнет плыть - то уже почти ничего не спасет, разве только параллельной шиной завязав источниками внешних прерываний оба МК. Но такое решение - изврат на мой взгляд
|
|
|
|
|
Nov 30 2010, 13:37
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(Pyku_He_oTTyda @ Nov 30 2010, 16:23)  UART не хотелось бы из-за тактирования МК от RC внутренних и широкой температуры использования. Используйте что-нибудь самосинхронизирующееся, "Манчестер" или бифазное кодирование. Тогда нет никаких проблем работать хоть при изменении битовой скорости на порядок, лишь бы за время передачи бита скорость не уходила больше чем 50% (но проще, если на время всей посылки, тогда подстройку скорости достаточно делать один раз, при начальной синхронизации). Чисто программно это не очень приятно делать (высчитывать по тактам), лучше, когда есть таймер с аппаратным выходом и захватом. Но можно и программно. Синхронизация, данные, CRC - вполне надежно.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|