реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Посоветуйте простой протокол передачи данных
MrYuran
сообщение Nov 30 2010, 13:50
Сообщение #16


Беспросветный оптимист
******

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



А SPI чем не подходит?
Тем более, что запасная линия есть (это которая под переключение направления - зачем?)

А так - да, манчестер очень даже подходит, но там есть нюанс - для правильной синхронизации необходима преамбула.
В принципе, если брать стандартные решения - то это протокол МКИО (MIL STD 1553)


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
stells
сообщение Nov 30 2010, 14:25
Сообщение #17


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(MrYuran @ Nov 30 2010, 16:50) *
А так - да, манчестер очень даже подходит

если бы была только 1 нога свободна и требовалась синхронизация, то да, только Манчестер. а в данном случае лучше отдельная синхролиния, ее можно на прерывание завести и спокойно работать
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Nov 30 2010, 14:47
Сообщение #18


Профессионал
*****

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



Спасибо за проявленное внимание!
Внутренне тактирование определено тем, что небыло необходимости в точных интервалах. UART не планировался изначально.
SPI с заведенным на прерывание синхроимпульсом мне видится не очень надежным, любая "иголка" вызовет ненужное прерывание.
Манчестер да, спасибо! Видимо оптимум, на нем пока и остановлюсь.
Вторая нога - ну лишней не будет, по крайней мере можно возложить функцию, определяющую продолжительность посылки или что либо еще. Я же еще не определился с протоколомsmile.gif


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
stells
сообщение Nov 30 2010, 16:58
Сообщение #19


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(Pyku_He_oTTyda @ Nov 30 2010, 17:47) *
Манчестер да, спасибо! Видимо оптимум, на нем пока и остановлюсь.

Вы все-таки не забудьте про интерфейс типа I2C. после того, как помучаетесь с софтовым Манчестером, после ловли синхросигнала и оценки оставшихся ресурсов (временнЫх) контроллеров может сильно пригодиться smile.gif
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Nov 30 2010, 17:57
Сообщение #20


Профессионал
*****

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



Конечно, я приму во внимание I2C. Вы, насколько я понимаю, работали с тем и другим. Чем плох манчестер в моем случае?
У меня нажал пальцем кнопку- передал восьмибитное число, отпустил-передал нули. Собственно больше ничего не требуется, кроме надежности и однозначности.


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
stells
сообщение Nov 30 2010, 18:29
Сообщение #21


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(Pyku_He_oTTyda @ Nov 30 2010, 20:57) *
Чем плох манчестер в моем случае?

только тем, что обработать его программно гораздо сложнее, чем принимать бит по прерыванию от синхросигнала. а так сам по себе вариант интересный: сэмулировать открытый сток (коллектор), подтянуть шину резистором и получить эдакую однопроводную синхронную магистраль с одним мастером или передачей приоритета

да и надежность пожалуй пониже будет. вот и rx3apf написал не "абсолютно", а "вполне":
Цитата(rx3apf @ Nov 30 2010, 16:37) *
Синхронизация, данные, CRC - вполне надежно.


Сообщение отредактировал stells - Nov 30 2010, 18:32
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 30 2010, 19:45
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Есть еще такая забытая штука как ACCESS.bus. Протокол поверх аппаратной шины I2C.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Nov 30 2010, 19:51
Сообщение #23


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(stells @ Nov 30 2010, 21:29) *
только тем, что обработать его программно гораздо сложнее, чем принимать бит по прерыванию от синхросигнала. а так сам по себе вариант интересный: сэмулировать открытый сток (коллектор), подтянуть шину резистором и получить эдакую однопроводную синхронную магистраль с одним мастером или передачей приоритета

да и надежность пожалуй пониже будет. вот и rx3apf написал не "абсолютно", а "вполне":

Это лишь оборот речи. Можно ведь и 64-битную CRC, например, добавить - будет абсолютно надежно. Тут скорее надо думать о надежности физического уровня. А протокол - это самое простое.
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Dec 1 2010, 03:23
Сообщение #24


Профессионал
*****

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



Вот именно железная часть и интересует. Крайнее опосение, как я писал выше, вызывает работа по прерываниям в условиях помех от коммутации ДПТ, даже если линию отслеживающую перывание, "задавить" резистором на грани нагрузочной способности пина.
Все равно необходима будет либо временная синхронизация, либо линия определяющая период передачи команды.
Иначе возможная помеха, если она вызовет прерывание, делает всю команду неверной и вероятен случай, даже при использовании контрольной суммы, никогда не принять верную команду.


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
stells
сообщение Dec 1 2010, 06:17
Сообщение #25


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(Pyku_He_oTTyda @ Dec 1 2010, 06:23) *
Крайнее опасение, как я писал выше, вызывает работа по прерываниям в условиях помех от коммутации ДПТ

Вы перегибаете, "волков бояться - в лес не ходить", задавить резистором и пассивным фильтром вполне реально. и потом, в начале обработки прерывания всегда можно проверить вход прерывания на "дребезг".
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Dec 1 2010, 06:33
Сообщение #26


Профессионал
*****

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



Цитата(stells @ Dec 1 2010, 09:17) *
Вы перегибаете, "волков бояться - в лес не ходить", задавить резистором и пассивным фильтром вполне реально. и потом, в начале обработки прерывания всегда можно проверить вход прерывания на "дребезг".

Скорее всего Вы правы! Я еще раз проанализировал ситуацию и решил связать по I2C. Дальше видно будет.


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Dec 2 2010, 13:34
Сообщение #27


Профессионал
*****

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



Не нашел для себя ответа на вопрос: если помеха будет воспринята за стартовую посылку, как распознать этот момент?


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
stells
сообщение Dec 2 2010, 13:38
Сообщение #28


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(firstvald @ Nov 30 2010, 12:09) *
... вам нужен символьный протокол. В нем существуют определенные символы-байты за которыми закреплены определенные значения. Важно что это позволяет четко определить начало посылки и ее окончание.
В вашем случае можно сделать так:
команда начинается символом ":"
команда заканчивается символом "cr"
Если вам надо передать просто байт один, то дальше ничего не надо выдумывать, а просто между символами начала и конца передаем дважды в hex виде этот байт, т е четыре символа. Мы фактически вместо контрольной суммы просто повторим байт. При передаче бывает полезно по разным причинам перед символом ":" передать 3-4 байта 0xFF (если смотреть терминалом что происходит в линии вы их увидете как буквы "я").
По окончании передачи тоже полезно после "cr" передавать "lf", это все упростит отладку.

Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Dec 2 2010, 15:20
Сообщение #29


Профессионал
*****

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



Нет, проблема не в этом.
Стартовым условием в посылке I2C считается спад уровня SDA при высоком SCL. Предположим, помеха вызвала условие "старт", мастер естественно молчит. Что делать слейву? Зависать в ожидании посылки?
Вот этот момент меня заботит на данный момент.


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
stells
сообщение Dec 2 2010, 16:06
Сообщение #30


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(Pyku_He_oTTyda @ Dec 2 2010, 18:20) *
Что делать слейву? Зависать в ожидании посылки?

проверить еще раз условие старта (у Вас же все ноги доступны для чтения), если оно подтверждается, то считать истинным
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 13:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01506 секунд с 7
ELECTRONIX ©2004-2016