реклама на сайте
подробности

 
 
> Вопрос по алгоритму
bbill
сообщение May 30 2006, 23:12
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bbill
сообщение Jun 2 2006, 22:10
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 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 бит, старший бит нулевой, ВСЕГДА. Поэтому мне очень удобно измерять длительность старт-бита.

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

Вы пример(здесь) хоть скачали и посмотрели уже?
Самое "смешное", после старт-бита идет старший и в инверсном коде. Это наверное роли не играет, протокол дан.
Go to the top of the page
 
+Quote Post
defunct
сообщение Jun 2 2006, 22:36
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 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 - удалить.

остальные пункты без изменений.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 12:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01436 секунд с 7
ELECTRONIX ©2004-2016