|
Синхро сигнал, проблеммы., Clock + Data |
|
|
|
Jan 24 2009, 13:31
|
Частый гость
 
Группа: Новичок
Сообщений: 85
Регистрация: 2-10-08
Пользователь №: 40 646

|
У меня такя проблемма, на ноги мк идёт два синала, clock для синхронизации и data. Данные достоверны когда сигнал clock принимает лог.0 так вот если оборвать, сигнал, а потом запустить, то данные уже идут не синхронизировано и искажаются. Как это можно иправить, честно только столкнулся с этим, и даже не знаю куда капнуть, и что почитать, про эти синхро сигналы?
|
|
|
|
|
 |
Ответов
|
Jan 24 2009, 20:04
|
Местный
  
Группа: Свой
Сообщений: 256
Регистрация: 3-05-05
Из: г. Волжский
Пользователь №: 4 714

|
Подробно. Вы принимаете данные все хорошо, вдруг у Вас пропадает клок. Выставляете флаг аварии "пропал клок" и ждете появления клока. С этого момента никакого приема данных не будет до появления клока как минимум. Ждем. Появился клок, по клоку начинаем снимать данные с линии данных, допустим она тоже лежит. Считываем данные с "мертвой линии", но мы этого пока не знаем. Итак считаем клоки пока линия данных в "0". Досчитали до 17. А линия данных лежит по прежнему. 18,19,20. и т.д. После 17 такта клока понимаем, что линия данных нерабочая. Выставляем другой флаг "авария на линии данных" и ждем чтобы она начала шевелиться, опа линия зашевелилась, т.е. перешла из 0 в 1, не торопимся принимать данные, ждем новой паузы в 17 тактов, пришла наконец пауза в 17 тактов и после нее переход из 0 в 1, а затем ровно через два такта(длина старт строба) переход обратно из 1 в 0, все теперь пойдут точно данные, снимаем флаги аварий и принимаем данные. Приняли байт данных, записали в память. Ждем паузу в 17 тактов, затем строб в два такта, следующий байт записали в память и так далее. Далее, все нормально принимаем, бац пауза не 17, а 14 тактов или 16, и после нее сразу строб, можно посчитать это нормальной ситуацией и принять 8 бит данных. Так и делаем, принимаем 8 бит данные, после чего ждем паузу. Если пауза нормальная, все в порядке продолжаем прием. Бац после принятия данных пауза короткая, бракуем принятый байт и на ожидание нормальной паузы. Теперь, чтобы все это понять, нужно взять карандашик и порисовать. Сразу все станет понятно.
PS: Пока писал увидел про 50 байт и контроль четности. Тут не контроль четности нужен, а нечто типа NRZ, потому что у Вас может быть 50 байт нулей, и четность каждых 4 бит тоже будет ноль. Ну и кто это придумал? Обязательно должен быть перепад уровня. Нельзя гнать массив нулей такой длины в линии и контроль делать тоже нулем. Меняйте протокол или делайте паузу не 17 нулей, а чтобы она была длиннее всего массива из 50 байт со всеми четностями. Иначе никакой синхронизации не получится.
Сообщение отредактировал vvvv - Jan 24 2009, 20:08
|
|
|
|
Сообщений в этой теме
Xenom0rph Синхро сигнал, проблеммы. Jan 24 2009, 13:31 yagger Так если это микроконтроллер, то можно организоват... Jan 24 2009, 13:59 rezident Синхронизацию фреймов в синхронных интерфейсах обы... Jan 24 2009, 14:53 Xenom0rph 2yagger
нельзя терять не одного бита, там суть так... Jan 24 2009, 16:14  rezident Цитата(Xenom0rph @ Jan 24 2009, 21:14) 2r... Jan 24 2009, 18:34   Xenom0rph Цитата(rezident @ Jan 24 2009, 21:34) А P... Jan 24 2009, 18:59    VShaclein А можна так сделать ?
Jan 24 2009, 19:20    vvvv Цитата(Xenom0rph @ Jan 24 2009, 21:59) А ... Jan 24 2009, 19:32     Xenom0rph 2А можна так сделать ?
Можно... но мне хочется не ... Jan 24 2009, 19:53      smac Цитата(Xenom0rph @ Jan 24 2009, 22:53) Ка... Jan 25 2009, 08:31       Xenom0rph Цитата(smac @ Jan 25 2009, 11:31) вы случ... Jan 25 2009, 12:46 vvvv Ваша логика синхронизации работать не будет, и вот... Jan 24 2009, 18:24 vvvv Абсолютно неважно, кто там и как возобновится, сра... Jan 24 2009, 20:32 Xenom0rph ну там не получиться два байта нулей, т.к. как даж... Jan 24 2009, 21:31
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|