|
Вопрос по алгоритму |
|
|
|
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, 07:40
|
Знающий
   
Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693

|
Цитата Если решать задачу с помощью поллинга, то необходимо обеспечить ошибку не более 2%, что возможно только при 50-ти кратной частоте поллинга по сравнению с требуемым бод-rate'ом. А это IMHO уже накладно для AVR'ки. Ужас!!! ;О) Четырёхкратная выборка даст только отклонение от центра "бода" на 25% "вдаль". Кого это волнует? Тем более, если озвучена разница частот 2%. Правильно реализованая процедура непринуждённо принимает поток в 8 дудок по 9600 с тройной выборкой. Асинхронно, ессно.
|
|
|
|
|
Jun 1 2006, 11:16
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(mse @ Jun 1 2006, 10:40)  Цитата Если решать задачу с помощью поллинга, то необходимо обеспечить ошибку не более 2%, что возможно только при 50-ти кратной частоте поллинга по сравнению с требуемым бод-rate'ом. А это IMHO уже накладно для AVR'ки. Ужас!!! ;О) Четырёхкратная выборка даст только отклонение от центра "бода" на 25% "вдаль". Кого это волнует? Тем более, если озвучена разница частот 2%. Правильно реализованая процедура непринуждённо принимает поток в 8 дудок по 9600 с тройной выборкой. Асинхронно, ессно. По поводу 2%. Чёто Вы мешаете всё в одну кучу Уважаемые. 2% Вам обеспечит кварц (внимательно пост читайте) А выборок достаточно 3 как это делает аппаратно однокристалка 8051 да и любой др. послед. порт. (3-5). Увеличение числа выборок, я лично могу обосновать только дрожанием прерывания на один-два такта. И "ловить" начало стартового импульса, - абсолютно не надо! Это лишнее. За 10 бит выборки будут ложиться очень точно одна относительно одной! Что тут непонятного?
|
|
|
|
|
Jun 1 2006, 11:45
|

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

|
Цитата(SasaVitebsk @ Jun 1 2006, 14:16)  А выборок достаточно 3 как это делает аппаратно однокристалка 8051 да и любой др. послед. порт. (3-5). Увеличение числа выборок, я лично могу обосновать только дрожанием прерывания на один-два такта. И "ловить" начало стартового импульса, - абсолютно не надо! Это лишнее. За 10 бит выборки будут ложиться очень точно одна относительно одной! Что тут непонятного? Помоему вы заблуждаетесь. Выборок в аппаратных портах - 16. А что тут непонятного - реализуйте и увидите. Цитата(mse @ Jun 1 2006, 10:40)  Четырёхкратная выборка даст только отклонение от центра "бода" на 25% "вдаль". Кого это волнует? Все верно, вносим сюда еще погрешность кварца 8Mhz для четырех выборок и погрешность вносимую длиной кода и получим еще 2-3% на бит (для 4800), что в итоге приведет к сумманой погрешности 25% + (20..30%) = 45%-55% на 10 бит, а это уже фактически один бит точно потерян. Вот и глюк.
|
|
|
|
|
Jun 1 2006, 12:29
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(defunct @ Jun 1 2006, 14:45)  Помоему вы заблуждаетесь. Выборок в аппаратных портах - 16. А что тут непонятного - реализуйте и увидите. Уважаемый 'defunct'.  Вы как всегда почти правы и я не берусь спорить. Смотрел я это давно по книге. Может и заблуждаюсь. Если же верить PDF (а не верить ему сложно), то в AVR ядре действительно 16 выборок на бит, но решение принимается по трём 8-9-10 (возможно это и ввело меня в заблуждение). Если же смотреть PDF на at89c51 (книгу на неё я смотрел когда-то), то на рисунке изображено три выборки. Хотя, конечно, рисунок достаточно схематичный. Но всё-таки это АБСОЛЮТНО не меняет написанного. Если брать суть проблемы, то точность определяется кварцем. Начало импульса не нужно определять (т.е. нужно определять с точностью до выборки). Насчёт реализуйте - увидите. Давайте не опускаться, до банального. У меня нет сейчас такой задачи. Если будет - реализую. Возможно отойду в сторону от своего алгоритма. Но я его предложил! Предложил человеку! Так в чём меня упрекают? Что-то не понимаю? Если у Вас есть свой выложите! Если есть претензии к моему - напишите! А пустых фраз "знающего человека" - не надо! Просто не красиво это. По поводу второй части поста: Погрешность кварца составляет 0.25% и ей явно можно пренебречь. Ещё раз отмечаю не имеет значение положение относительно центра. Посмотрите PDF. Имеет значение погрешность выборок одна относительно другой - своей. Эта погрешность определяется кварцем и "плаванием прерывания" При правильно написанной проге "плавание" составит 1 максимум 2 такта. И ни какой длины кода!!! Погрешность не будет накапливаться! Подумайте сами. Погрешность кварца только накопительная!
Сообщение отредактировал SasaVitebsk - Jun 1 2006, 12:37
|
|
|
|
Сообщений в этой теме
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 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 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
|
|
|