|
Вопрос по алгоритму |
|
|
|
May 30 2006, 23:12
|
Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 21-10-05
Пользователь №: 9 941

|
День добрый. Поставлена задача: прием последовательного кода от семи датчиков, для каждого своя линия порта. Формат передачи: старт-бит, 8 бит данных, 1 стоп. Скорость передачи 2400 или 4800 бод. Передача от датчиков НЕ синхронизирована. Сдвиг между каналами от 0 до ∞ (минуты). Старт-бит необходимо использовать для определения точной скорости передачи от датчиков (по длительности бита), т.к. разброс/временной уход? частоты различных каналов составляет до ±10%. Процессор m8 или m88, частота 8МГц. Датчики однонаправленные, не адресные, из-за расстояния (50-100м), сигнал развязывается через оптроны и на свой пин.
Вопрос: как организовать алгоритм приема посылок от датчиков, при одновременном их поступлении и сдвиге между ними менее длины посылки.
Принимаем, что первым начинается прием канала 1.
..... _________ ___|..10бит.....|_____________________ - канал 1 ...................__________ __________|..10бит......|_____________ - канал 2 ……… ......................... _________ ______________|..10бит....|_________ -канал 6 ............___________ ______|..10бит........|_______________ - канал 7
|
|
|
|
|
 |
Ответов
|
Jun 2 2006, 22:10
|
Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 21-10-05
Пользователь №: 9 941

|
Не знаю схемотехнику датчиков, залиты, есть разъем и параметры выходных сигналов. И все. Все вопросы к заказчику...., моему. Знаком я с УАПП. Но если присутствует разброс по скорости, как привязаться? И дрейф. Измеряя длительность старт-бита я привязываюсь точно. Так и поступал когда работал с одним или двумя датчиками. Мне кажется все потеряли условие: разброс скоростей датчиков от номинала ±10%, а не разные скорости. Или не правильно выразился, как написал. defunct Я принял примерно тоже, но так подробно не расписывал. Вот только не уверен, что успею обработать прием по ходу, поэтому скидываю в буфер. 10. В обработчике таймера увеличивал бы номер текущего цикла "циклически" (0, 1, 2, 3, 4, 0, 1 ... ). Это 4800*5 и счетчик. Я правильно понял. Цитата(defunct @ Jun 3 2006, 00:23)  Цитата(GetSmart @ Jun 3 2006, 00:02)  Цитата Схемотехника датчика мне неизвестна, да и какая разница, плясать будем от того, что есть. Непонятно, скорость стабилизирована кварцем? Может принимать только стандартные значения? Или вообще любая +-200% с шагом до 1%. Непонятно! Я думаю здесь "схемотехника датчика неизвестна" можно трактовать как - "датчик покупной". А покупной датчик обязан придерживаться стандартного допуска к отклонению (2%). Цитата Еще мне минус, в конфе fulcruma я указал на уточнение облегчающее мне жизнь: данные в посылке занимают 7 бит, старший бит нулевой, ВСЕГДА. Поэтому мне очень удобно измерять длительность старт-бита. Извините, а какая связь может быть между нулевым старт-битом и нулевым старшим битом, который к тому же является последним битом данных в кадре и идет прямо перед стоп битом. Как это могло вам помочь в определении скорости? Вы пример( здесь) хоть скачали и посмотрели уже? Самое "смешное", после старт-бита идет старший и в инверсном коде. Это наверное роли не играет, протокол дан.
|
|
|
|
|
Jun 2 2006, 22:36
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(bbill @ Jun 3 2006, 01:10)  Самое "смешное", после старт-бита идет старший и в инверсном коде. Это наверное роли не играет, протокол дан. Самое "смешное", что протокол дан Вам, а на обсуждение вы его не представили. И это действительно смешно. Последнее Ваше уточнение является определяющим. Теперь точно можно сказать, что задача поставленная в первом посте - решаема на AVR как есть, с автоопределением скоростей. Только для отклонений в +-10% придется брать не 5 и тем более не 3 отстчета, а хотя бы 15-25 отсчетов. Опорная частота таймера (4800 * 15) - (4800 * 25) Гц... Столько отсчетов просто необходимо для компенсации 10% отклонения передатчика, которое для 10-ти бит выливается в +-100% отклонение. Соответвенно частота МК у вас должна быть не 8Mhz, а как можно выше - 14.7456 - 20Mhz чтобы справляться с этой задачей. Цитата Это 4800*5 и счетчик. Я правильно понял. да правильно, счетчик момента считывания, моментов всего 5 т.к. частота завышена в 5 раз, только это для допуска 2%, у вас же допуск отклонения 10% соответвенно моментов должно быть больше в 10%/2% раз. И алгоритм приведенный выше придется подкорректировать (номера п. соответвуют вышеприведенному посту): 1. Таймер завести на 4800*15 гц 1.1. Добавить байт-коррекции цикла считывания. 8.1. При обнаружении старт-бита установить флаг "ведется прием" для этого канала, 8.2. одновременно установить номер цикла чтения бита как номер текщего цикла +7. 8.3. Определить количество циклов удержания старт-бита. 8.4. Записать байт-коррекции номера цикла чтения бита для текущего канала как: "15 - (минус) количество циклов удержания старт-бита". 11.1 При условии ("установлен флаг приема" AND (номер цикла = текущий цикл)) занести принятый бит с канала в сдвиговый регистр и увеличить счетчик текущего бита. 11.2. Подправить "номер цикла чтения бита" на величину хранящуюся в байте-коррекции канала. пп 14-17 - удалить. остальные пункты без изменений.
|
|
|
|
Сообщений в этой теме
bbill Вопрос по алгоритму May 30 2006, 23:12 _Bill Цитата(bbill @ May 31 2006, 02:12) День д... May 31 2006, 07:40 bbill Железо уже готово... May 31 2006, 07:45 _Bill Цитата(bbill @ May 31 2006, 10:45) Железо... May 31 2006, 07:56 beer_warrior Наверное можно поступить следующим образом:
Есть A... May 31 2006, 08:48 SasaVitebsk Я делал аналогичное и менее оптимистичен.
1) Надо ... May 31 2006, 09:50 prottoss Привет! Делал (Создавал ПО) два варианта таких... May 31 2006, 11:19 bodja74 Да,без фиксации скорости это не реально сделать..... May 31 2006, 11:58 GetSmart Я вас умаляю!
При желании всё это можно сделат... May 31 2006, 12:24 ksv198 Цитата(GetSmart @ May 31 2006, 16:24) Я в... May 31 2006, 13:21 SasaVitebsk Цитата(GetSmart @ May 31 2006, 15:24) Я в... Jun 1 2006, 11:06 _4afc_ Цитата(bbill @ May 31 2006, 03:12) Вопрос... May 31 2006, 14:20 bodja74 Цитата(_4afc_ @ May 31 2006, 17:20) 2. Сч... May 31 2006, 15:30 defunct Цитата(_4afc_ @ May 31 2006, 17:20) 2. Сч... May 31 2006, 20:34 GetSmart Да я бы сделал эту прогу баксов за 300-500.
Думаю ... May 31 2006, 15:31 bodja74 А я бы лучше отдал лишних 10$ за контроллер... May 31 2006, 15:46 Laksus для bbill
Ну раз Вы перешли сюда с
http://www.fu... May 31 2006, 19:07 Laksus И еще забыл спросить.
-А какая нестабильность по в... May 31 2006, 19:41 bbill От датчика посылки поступают по одному байту, мини... May 31 2006, 20:58 defunct Цитата(bbill @ May 31 2006, 23:58) И очен... May 31 2006, 21:04 mse ЦитатаЕсли решать задачу с помощью поллинга, то не... Jun 1 2006, 07:40 SasaVitebsk Цитата(mse @ Jun 1 2006, 10:40) Цитата Ес... Jun 1 2006, 11:16  defunct Цитата(SasaVitebsk @ Jun 1 2006, 14:16) А... Jun 1 2006, 11:45   SasaVitebsk Цитата(defunct @ Jun 1 2006, 14:45) Помое... Jun 1 2006, 12:29 bodja74 Три выборки на бит прекрасно подойдут для фиксиров... Jun 1 2006, 12:45 SasaVitebsk Цитата(bodja74 @ Jun 1 2006, 15:45) Три в... Jun 1 2006, 13:10  defunct Цитата(SasaVitebsk @ Jun 1 2006, 16:10) Т... Jun 1 2006, 14:25  bodja74 Цитата(SasaVitebsk @ Jun 1 2006, 16:10) И... Jun 1 2006, 16:37 bzx to bbill
Я могу Вам сделать за определённый интере... Jun 1 2006, 13:21 GetSmart bbill
Скажите, у вас скорость связи датчиков стаби... Jun 1 2006, 13:22 bbill GetSmart:
Схемотехника датчика мне неизвестна, да ... Jun 1 2006, 18:59 SasaVitebsk Цитата(bbill @ Jun 1 2006, 21:59) GetSmar... Jun 2 2006, 10:02 defunct Цитата(bbill @ Jun 1 2006, 21:59) Алгорит... Jun 2 2006, 19:07 dimka76 от каждого датчика посылки поступают довольно редк... Jun 2 2006, 10:51 GetSmart Оказывается я так и не написал важную мыслю. Хотя ... Jun 2 2006, 20:28 defunct Цитата(GetSmart @ Jun 2 2006, 23:28) Чтоб... Jun 2 2006, 20:49 GetSmart Цитатаи с чем бы это дело было совместимо интересн... Jun 2 2006, 21:02 defunct Цитата(GetSmart @ Jun 3 2006, 00:02) Цита... Jun 2 2006, 21:23 bbill Я перечитал текст своего вопроса: Формат передачи:... Jun 2 2006, 21:18 SasaVitebsk Цитата(bbill @ Jun 3 2006, 00:18) Я переч... Jun 3 2006, 16:08 GetSmart Да, pin chang намного жизнь упростит. Именно он до... Jun 2 2006, 21:31 GetSmart 10% ???
Это очень подозрительно. Обычно 2..5%, но ... Jun 2 2006, 22:40 bbill Это говорит о том, что я излагаю совсем не точно н... Jun 3 2006, 20:16 dimka76 А что это за датчики такие интересные, передают да... Jun 5 2006, 06:11  SasaVitebsk Цитата(dimka76 @ Jun 5 2006, 09:11) А что... Jun 5 2006, 13:51   dimka76 Цитата(SasaVitebsk @ Jun 5 2006, 17:51) Ц... Jun 6 2006, 11:49    defunct Цитата(dimka76 @ Jun 6 2006, 14:49) Вопро... Jun 6 2006, 19:06
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|