Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 04.03.2010, 00:12  
Zemlyanov
Гражданин KAZUS.RU
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию Сравнение массивов .Как лучше сделать?

В мк по RS-485 приходят пакеты данных с разных устройств. Пакет данных представляет собой массив из 80 байт . МК получивший массив обрабатывает эти данные и отсылает обратно ответ 20 байт устройству, которое прислало пакет данных.
В массиве имеется 79 байт данных и 1 байта, которые определяют, какой вид расчета нужно провести МК с полученными данными. Видов расчетов может быть 50.
Проблема в том, что разные устройства могут присылать одни и те же массивы данных с одинаковыми видами расчета, а расчёт занимает довольно много времени. Поэтому я хочу, чтобы МК выполняющий расчеты не повторял расчет, который уже был, а отправлял готовый ответ.
Думаю сделать так - Для каждого типа расчета создать свой массив в этот массив буду записывать результаты расчета и первых 3 байта данных, над которыми производился расчет. Итого у меня будет 50 массивов по 23 байта. Теперь, когда МК получает данные для расчета он сравнивает первые 3 байта с теми байтами, которые хранятся в массиве для данного типа расчета и если они совпадают, то отправляет устройству ответ, а если нет, то полученные данный начинают обрабатываться .
Правильно я хочу сделать или можно как то проще? Может есть какие то другие варианты сравнения, типа контрольной суммы или ещё как то . Меня сомнения терзаю по поводу количества байт для сравнения, а вдруг 3 байта это мало и может произойти совпадение. А больше делать не хочется, будет теряться драгоценное время, мк и так будет работать в захлеб .
Короче нужно сделать максимально быстрое сравнение. Может, кто что посоветует ?
Реклама:
Zemlyanov вне форума  
Непрочитано 04.03.2010, 00:31  
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,530
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
realid на пути к лучшему
По умолчанию Re: Сравнение массивов .Как лучше сделать?

В пакете поле CRC. Сравнивать его.
realid вне форума  
Непрочитано 04.03.2010, 02:15  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Сравнение массивов .Как лучше сделать?

Сообщение от Zemlyanov Посмотреть сообщение
Короче нужно сделать максимально быстрое сравнение. Может, кто что посоветует ?
Чего сравнивать то? Необработанный пакет с результатами обработки???
Или с результатами и необработанный пакет хранить? Так памяти не хватит. Вспоминая недавнюю тему - ведь мозгом является АВР? Тогда 50 видов просто не сохранить, памяти не хватит. Проще всего считать в лоб, с оптимизацией расчета по скорости. Что хоть за расчет? Если он будет выполняться быстрее, ем наберется следующий пакет, то проблем не будет. На 115200 80 байт это примерно 70мс. При частоте 8МГц ~ 560 тысяч тактов. Это довольно много.
kison вне форума  
Непрочитано 04.03.2010, 11:38  
Zemlyanov
Гражданин KAZUS.RU
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию Re: Сравнение массивов .Как лучше сделать?

Сообщение от kison Посмотреть сообщение
Чего сравнивать то? Необработанный пакет с результатами обработки???
Или с результатами и необработанный пакет хранить?
Сравнивать выборку из 3 байт пришедшего с 3 байтами выборки уже обработанного пакета. Пакеты не сохраняются, сохраняется только результат расчетов и три 3 байта выборки из пакета который был обработан, для идентификации, я написал выше . Расчет - это декодирование данных по определенному алгоритму, на данный момент МК обрабатывает пакеты без сравнения и входящий буфер загружен на 100%, 40 % входящих пакетов повторяются, поэтому и стала задача отфильтровывать повторяющиеся пакеты , чтобы не повторять один и тот же расчет а сразу отправлять готовый ответ.
Zemlyanov вне форума  
Непрочитано 04.03.2010, 11:48  
MisterDi
Почётный гражданин KAZUS.RU
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Сравнение массивов .Как лучше сделать?

Сообщение от Zemlyanov Посмотреть сообщение
Сравнивать выборку из 3 байт пришедшего с 3 байтами выборки уже обработанного пакета
Если Вы уверены, что совпадений не будет, то можно, иначе - только контрольной суммой, которая вычисляется сразу по приходе очередного байта пакета, чтобы не тратить время на цикл подсчета. К тому тому же один-два байта КС займут меньше памяти
MisterDi вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
RS 232 >AVR>Ethernet.Как лучше сделать? Zemlyanov Микроконтроллеры, АЦП, память и т.д 33 11.03.2010 01:21
сравнение массивов байт ESWANT Микроконтроллеры, АЦП, память и т.д 10 16.10.2009 17:18


Часовой пояс GMT +4, время: 10:53.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot