MicroCHIP.RU
Главная Документация Отладочные средства Справочник Поиск Ссылки
 Новости   Конференция   Контакты 
 

Синхронизация программного UARTa

 Нoвaя темa  |  Наверх  |  Перейти к теме  |  Поиск  |  Правила  |  Вход 

ВНИМАНИЕ!
Вы просматриваете архив форума.

Этот форум работает только в режиме просмотра и поиска.

Действующий форум переведен на новый движок и
находится по адресу www.microchip.su

 Синхронизация программного UARTa
Автор: win98 ()
Дата:   23/02/2007 02:01

Собственно, как это сделать? В примерах реализации программного UARTa - синхронизация по спадающему фронту
старт-бита. Но ведь возможна ситуация, когда был пропущен старт-бит(например, контроллер сбросился), и за старт-
бит был принят перепад из 1 в 0 информационного бита в посылке. Тогда будут приходить корявые данные(сдвинется приём
старт-бита). Для сети контроллеров это не есть ГУД.
Может, я зря беспокоюсь по этому поводу?


 
 может и зря (+)
Автор: Alex B. ()
Дата:   23/02/2007 02:20

проверяйте корректность stop бита (всегда должен быть единицей)


 
 Re: Синхронизация программного UARTa
Автор: igorwdq ()
Дата:   23/02/2007 11:57

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


 
 Re: Синхронизация программного UARTa
Автор: win98 ()
Дата:   23/02/2007 14:08

Так в этом и вопрос. Какие ошибки могут возникнуть кроме неправильного стоп-бита? А ведь даже его проверка не
гарантирует, что дальше данные начну принимать правильно.
Как вообще это всё делает аппаратный UART?
Интересный момент: если на компе СОМ-порт настроить при приёме на "неправильную формулу", то данные всё равно
принимаются, но неверные(естественно).
Похоже, что всё будет решаться самими протоколом передачи, а не видом посылки.


 
 Re: Синхронизация программного UARTa
Автор: Alexeyslav ()
Дата:   23/02/2007 16:38

Тут вы что-то мутите, во первых стартовый и стоповый биты имеют ширину в 1.5 раз больше чем
информационные, во вторых - описываемый сбой может произойти если идет сплошной поток данных
непрерывно, даже не разбитый на пакеты.
Впрочем, если существует такая проблема, то нужно применять не UART а другой вид помехоустойчивой
передачи, где синхронизация происходит автоматически даже если произошел сбой. В любом случае часть
данных будет потеряна.


 
 Неправда!!
Автор: igorwdq ()
Дата:   23/02/2007 18:37

Длительность стартовых и стоповых и информационных битов одинаковая на одной
скорости передачи. ИМХО.


 
 а может и не зря
Автор: Greg ()
Дата:   23/02/2007 18:52

win98 писал(а):
> Может, я зря беспокоюсь по этому поводу?

можно делать (изредка) паузы длительностью больше байта
всё войдёт в синхронизм


 
 Шли инфу (+)
Автор: Petr_ ()
Дата:   23/02/2007 19:01

пакетами по N байт. С малыми зазорами между байтами.
Если CRC пакета не сошелся - думай чо делать.
А между пакетами пауза больше байта - для гарантированной синхронизации.

Самое пошлое решение (и самое правильное)