|
Вопрос по алгоритму |
|
|
|
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 1 2006, 13:10
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(bodja74 @ Jun 1 2006, 15:45)  Три выборки на бит прекрасно подойдут для фиксированной скорости и для одного канала, спору нет,но не для шести с произвольным сдвигом посылок и разной погрешностью +/- 10%. Подумайте сами ,если мы прекрасно настроимся даже на один канал,у нас будет накапливаться ошибка на остальных,и достаточно не слабая. Давай определимся. Я говорю об rs232. Это так? Если так, то Вы так и не поняли принцип. Погрешность не зависит от числа каналов. Не надо ни на что настраиваться! Идёт выборка с частотой в 16 раз превышающая. Ты начинаешь отсчёт. В ОДНОМ прерывании от таймера. Считываешь ВСЕ каналы. Я тебе про это писал и др. чел. тоже писал, просто уточнил что он вешил все каналы на 1 порт. Это чтобы одной командой читать. Теперь представь что первый канал попал на 10% от начала. А пятый на 70%. Ну и что. Значит следующий импульс попадёт на теже самые проценты и так пока на закончится посылка. Т.е все 10 бит! Поскольку таймер у тебя привязан к кварцу, то погрешность вызыва прерываний не превысит погрешность кварца. Единственно что у тебя может прерывание быть задержано на 1-2 такта (если не использовать MUL и т.п.). Но эта погрешность не накапливается! Давай её посчитаем. На частоте 14372800 такт сотавляет ~70нс. Два такта 140нс. На частоте 4800 1 бит составит 208333нс. Таким образом погрешность составит менее 1%. Так где Вы обнаружили 25%? Или Вам нарисовать?
|
|
|
|
|
Jun 1 2006, 16:37
|
Знающий
   
Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984

|
Цитата(SasaVitebsk @ Jun 1 2006, 16:10)  Идёт выборка с частотой в 16 раз превышающая. Ты начинаешь отсчёт. В ОДНОМ прерывании от таймера. Считываешь ВСЕ каналы. Я тебе про это писал и др. чел. тоже писал, просто уточнил что он вешил все каналы на 1 порт. Это чтобы одной командой читать. Теперь представь что первый канал попал на 10% от начала. А пятый на 70%. Ну и что. Значит следующий импульс попадёт на теже самые проценты и так пока на закончится посылка. Т.е все 10 бит! 16 выборок на бит ,другое дело.  По идее можно вписатся в погрешность,вопрос остается хватит ли нам оперативки? Если передача действительно идет,как описал автор темы,то мы даже впишемся в 320 байт. Я думал про непрерывную передачу и однозначно решил что поллинг не проидет,так что извинямс  На асме можно и без прерывания обойтись,если других задач не нужно, в цикле читать порты,если какой рыпнется,сливать всю посылку в оперативку,а потом пережовывать. Главное что бы между посылками контроллер успел обработать полученные данные. После пережовывания опять ждать следующую посылку. Короче ,думаю,на 16 выборках на бит сделать можно.  
|
|
|
|
Сообщений в этой теме
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  defunct Цитата(SasaVitebsk @ Jun 1 2006, 16:10) Т... Jun 1 2006, 14:25 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 bbill Не знаю схемотехнику датчиков, залиты, есть разъем... Jun 2 2006, 22:10 defunct Цитата(bbill @ Jun 3 2006, 01:10) Самое ... Jun 2 2006, 22:36 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
|
|
|