решил я использовать вот такой код 1111111100000010 первая кнопка 1111111100000100 вторая кнопка 1111111100000110 третья ... 1111111100101000 двадцатая кнопка первые восемь единиц это старт байт затем два нуля и код состоящий из пяти битов, затем снова нуль которым заканчивается команда любой кнопки (итого опять восемь символов)
_________________ не зная броду не лезь к вольтмоду
Последний раз редактировалось uwrtey Ср сен 21, 2011 15:21:51, всего редактировалось 1 раз.
как лучше защитить от помех - несколько раз повторять этот код или дописать к коду контрольную сумму? например вот так 1) повторяющаяся команда в коде 11111111 00000010 00000010 (естественно без пробелов - здесь они для удобства чтения)
2) повторяющийся код 11111111 00000010 11111111 00000010
3) с контрольной суммой 11111111 00000010+00101000 (контрольная сумма 21)
ЗЫ самому больше нравится первый вариант! сойдет???
_________________ не зная броду не лезь к вольтмоду
с контрольной суммой как то сложнее получается а вот первый вариант вполне экономичней посылается код состоящий из стартовых бит и несколько раз (минимум два) повторяющейся команды приемник сравнивает первую и вторую команду и в случае их совпадения выполняет ее. в противном случае сканирует эфир сначала.... Уважаемые Гуру,такой вариант сойдет?
_________________ не зная броду не лезь к вольтмоду
с контрольной суммой как то сложнее получается а вот первый вариант вполне экономичней посылается код состоящий из стартовых бит и несколько раз (минимум два) повторяющейся команды приемник сравнивает первую и вторую команду и в случае их совпадения выполняет ее. в противном случае сканирует эфир сначала.... Уважаемые Гуру,такой вариант сойдет?
Кому может повредить контрольная сумма? Весь мир применяет и не жалуется. Я в одной из своих поделок блок данных, сопровождаемый КС, совал в пакет в 3 экземплярах, работало на ура. Теперь представьте : посылаете в пакете 3 одинаковых ( но без КС ) блока, два побились, а один нормальный. Несмотря на это, перезапраашиваем, хотя в пакете блок с корректными данными уже есть. Потеря времени, задержка реакции.
согласен, обдумаю. просто хотел посылать две одинаковых команды и сравнивать между собой а с контрольной суммой не мог бы ты выложить свой кусок кода одной команды? (хочу посмотреть как другие делают)
_________________ не зная броду не лезь к вольтмоду
Если число команд небольшое и они без параметров, то можно сделать проще : не рассчитывать КС, а к команде прицеплять готовый код подтверждения, что-то грубо вроде "цифровой подписи". Например, команда 1 : включить устройство 1, к ней прикручиваеи : допустим, '7tRR', к команде 2 - 'z8J6' и т.д. И это повторяем в пакете 3 раза. На приемном конце устройства знают правильные значения этих кодов подтверждения и номера команд, которым они соответствуют, и если в 3 блоках пакета найдется хотя бы один кусок с совпадающими этими реквизитами, то команда детектирована верно. Для передачи команд с параметрами , набор которых неограничен, нужно считать КС. Для повышения ерундиции в данном вопросе стоит почитать : http://www.piclist.ru/S-CRC16-RUS/CRC16.html или любю другую статейку, что выдаст Яндекс по запросу CRC16. Достаточно вменяемая статея в Википедии. Я ее даже приятелю в научный отчет влимонил ( договор подряда у них подхалтуривал ) .
число команд должно быть от 20, можно конечно и больше - но пока остановлюсь на 20
Jack_A писал(а):
Если число команд небольшое и они без параметров, то можно сделать проще : не рассчитывать КС, а к команде прицеплять готовый код подтверждения, что-то грубо вроде "цифровой подписи".
если не сложно то накалякай плиз кусочек кода на русском... (а то я совсем профан в передаче данных, а с микроконтролерами только начал)
_________________ не зная броду не лезь к вольтмоду
как правильно подобрать частоту кварца? мне кажется, что стоит повесить кварц на 20 мегагерц, а передачу/опрос информации производить с частотой 5 килогерц (вход в радио-передающий модуль 6 килогерц по датащиту) частоту передачи/опроса ин-фы задавать с помощью зацикливания ... как?
_________________ не зная броду не лезь к вольтмоду
если не сложно то накалякай плиз кусочек кода на русском... (а то я совсем профан в передаче данных, а с микроконтролерами только начал)
Не, я описал общий подход к повышению помехоустойчивости, а дальше уж, как говорят -- вот тебе удочка, а лови сам. На чужом коде программить не научишься, придется шишки набивать самолично. К тому же на русском языке я кодить не умею, в основном - на ассемблере
ну дак как на счет помехоустойчивости такого принципа кодирования сигнала?
Какого - "такого" ? Тут было обсуждение с полдюжины разных способов. Можно вопрос мусолить до второго пришествия марсиан - а толку? Зависит от уровня помех в конкретном месте, от требуемого уровня надежности передачи. Определись - и пробуй. Передать команду из фиксированного не очень большого набора - задача не семи пядей во лбу.
во первых инициализация стека обязательна, а во вторых вам уже отвечали что для вашего случая не нужно никакого кодирования, способов кодирование от помех много, вы замучаетесь кодировать и декодировать его, для вашего случая выше крыши будет дублирование команды, 2,3 или 4 раза как вам нравиться, но хватит и 2... сделайте такой пакет, (преамбула--идентификатор--команда--команда--..--) и не париться с CRC и кодированием
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения