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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> SPI интерфейс мк-мк, но как устроен протокол?, Пакет из 6 посылок по 8 бит. поллитра захватите :)
Alexandr
сообщение Jan 15 2009, 12:46
Сообщение #16


Знающий
****

Группа: Модераторы
Сообщений: 804
Регистрация: 1-12-04
Пользователь №: 1 283



Alexeus все достаточно просто. Так как вы предложили тоже можно сделать, но тогда придется работать с битами. Проще работать с байтами. Вы принимаете все байты подряд, но стартовый байт Вашей последовательности имеет 0 в 7-ом разряде, 1 в 3-ем. Именно эти два разряда являются для нас значимыми. Поэтому мы делаем операцию AND с маской стартового байта (10001000). Получаем байт Х000Y000, где Х и Y интересующие нас биты. При этом для нас важно чтобы Х=0, Y=1. Для этого мы делаем операцию XOR данного байта и байта 00001000. Если результат операции равен 0 - значит принятый нами байт может являеться стартовым (я исхожу из того, что в линии может идти сплошной поток данных из которого нам надо выдрать только 6 байт). Далее принимаете и подсчитывае контрольную сумму (операцией xor или есть специальнвй алгоритм?) следующих 5 байт и сравниваете с контрольной суммой, принятой последней, как и предложил Палыч. Но можно и каждый принятый байт анализировать методом описанным в начале только маски будут меняться 10010010 10100000 10000010 11000000 10000000


--------------------
Иван Сусанин - первый полупроводник
Go to the top of the page
 
+Quote Post
Alexeus
сообщение Jan 15 2009, 12:52
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 14-01-09
Пользователь №: 43 345



Палыч, Александр, спасибо, действительно, опираясь на ваши подсказки вычислил, что если складывать все 6 байт пакета, как раз как предложил Палыч, отлавливая последний байт по старшему биту в 1, то при сложении всех 6ти, всегда получаю 0х80 или 0b10000000 !!!

Круто smile.gif Спасибо.

/а я голову ломал, что за данные в этом 6том байте...

Сообщение отредактировал Alexeus - Jan 15 2009, 12:53
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 15 2009, 12:58
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Alexeus @ Jan 15 2009, 15:52) *
всегда получаю 0х80 или 0b10000000 !!!
Подозреваю, что можно получить и просто 0.
Go to the top of the page
 
+Quote Post
Alexeus
сообщение Jan 15 2009, 13:32
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 14-01-09
Пользователь №: 43 345



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

В данном случае в действительности есть стартовые биты пяти байт равные "0" и шестой равный "1" и, как подсказал Палыч, сохраняя пять байт с "0" и при поступлении шестого со стартовым битом в "1", нужно проверять их сумму (всех 6ти байт) если она равна 0х80 (0b10000000) то пакет считается принятым удачно, и из него берется информация... (пробовал суммировать на пакетах, содержащих информацию о разных режимах)

За что ему большое спасибо! smile.gif

Цитата(Палыч @ Jan 15 2009, 15:58) *
Подозреваю, что можно получить и просто 0.


Ну возможно... Все варианты я не проверял, но в тройке выборочно получил именно 10000000 или если идет младшим битом вперед, то просто еденицу.

Сообщение отредактировал Alexeus - Jan 15 2009, 13:02
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 09:18
Рейтинг@Mail.ru


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