Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Зависание микроконтроллера
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Страницы: 1, 2, 3
=AK=
Цитата(defunct @ May 12 2008, 08:53) *
Первый байт, а не второй "прочищает" приемник.
...
Допустим искаженный байт 0xFF в результате воздейтсвия помехи совпадет с первым байтом открывающей стаффинг последовательности, но и в этом случае приемник приняв за ним такой же байт, и по условию "принято 0 байт данных" пакета, просто "переоткроет" прием пакета повторно.

Нy вот, значит, все-таки второй байт "прочистит приемник", правда? А то, что этот байт у вас не равен 0xFF - это нюанс, о котором догадаться по вашим отрывочным сообщениям было трудно. Собственно, вам ничего не мешает старт-байт сделать равным 0xFF, чтобы не плодить лишние сущности, я-то подразумевал именно этот вариант.

Все равно, как я и говорил, в начале вам надо передать два служебных байта, что по времени займет как минимум два байт-интервала.
defunct
Цитата(=AK= @ May 12 2008, 07:23) *
Нy вот, значит, все-таки второй байт "прочистит приемник", правда? А то, что этот байт у вас не равен 0xFF - это нюанс, о котором догадаться по вашим отрывочным сообщениям было трудно. Собственно, вам ничего не мешает старт-байт сделать равным 0xFF, чтобы не плодить лишние сущности, я-то подразумевал именно этот вариант.

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

Ок моя вина, сильно быстро пытался изложить суть.
Да, минимум два служебных байта, да займет два байт-интервала, но...
во первых, это ровно столько же сколько и по стандарту modbus, во вторых, не нужно никакого отдельного таймера для выдержки этого интервала. В третьих, не нужен межпакетный интервал, а по стандарту modbus этот интервал не так уж и мал - минимум 3.5 байтовый. Т.е. в идеале можно добиться более высоких скоростей чем на основе modbus rtu протокола, не теряя при этом в помехоустойчивости.

PS: за идею сделать старт байт равным 0xFF спасибо. Получится очень удобно, тем более что RTU пакет начинается с адреса устройства и можно просто наложить ограничения на количество адресов 0x00..0xFE.
=AK=
Цитата(defunct @ May 13 2008, 05:03) *
во первых, это ровно столько же сколько и по стандарту modbus, во вторых, не нужно никакого отдельного таймера для выдержки этого интервала. В третьих, не нужен межпакетный интервал, а по стандарту modbus этот интервал не так уж и мал - минимум 3.5 байтовый.

В самом Модбасе стартовая пауза тоже равна 3.5 байт-интервала. Однако я не знаю причин, почему в Модбас-подобном протоколе нельзя было бы уменьшить межпакетную паузу до, скажем, одного или даже половины байт-интервала, а стартовую - скажем, до полутора байт-интервалов. После этого, с учетом того, что потери времени на байт-стаффинг отсутствуют, средняя скорость получится немного выше, чем в вашем варианте. Который, несомненно, обладает своими преимуществами. a14.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.