Алгоритм поиска. ATmega32.

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Алгоритм поиска. ATmega32.

Сообщение ibiza11 »

Всем доброго времени суток. Необходима помощь с алгоритмом поиска заданного значения в памяти .
Есть некое число размером в 10 байт (ориентировочно, но порядок такой), которое поступает в контроллер по последовательному интерфейсу (тут на самом деле неважно, как и откуда поступают эти 10 байт), есть микросхема памяти EEPROM 256 килобит, разбитая на ячейки по 10 байт (тоже не принципиально), в каждую ячейку которой записаны некоторые числа.
Необходимо как можно быстрее определить, есть ли вновь поступившее 10-ти байтное число в памяти и в какой ячейке оно находится.
Думаю самым простым способом будет перебор всех ячеек, но это очень долго. EEPROM подключена по i2c и тактируется на частоте 200кГц. Есть способ посложнее с подгрузкой в RAM контроллера части EEPROM с дальнейшим перебором и сравнением значений уже в памяти контроллера, думаю будет быстрее, но все же может есть способ побыстрее? может алгоритм какой нибудь хитрый? подскажите, кто что думает.
Ставим плюсы: )
Аватара пользователя
РадиоЛоматель
Мудрый кот
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)
Контактная информация:

Re: Алгоритм поиска. ATmega32.

Сообщение РадиоЛоматель »

А если обнаруживать его при поступлении в контроллер по последовательному интерфейсу, а потом запоминать, куда оно будет записанно?
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Алгоритм поиска. ATmega32.

Сообщение ibiza11 »

как вы себе это представляете? опишите по пунктам.
Ставим плюсы: )
Аватара пользователя
NiTr0
Друг Кота
Сообщения: 3051
Зарегистрирован: Пт авг 10, 2007 12:49:55
Откуда: kr.ua
Контактная информация:

Re: Алгоритм поиска. ATmega32.

Сообщение NiTr0 »

Если числа лежат в еепром неупорядочено - то никак.
Вычитывать первое число каждой "ячейки", сравнивать, если оно - читать/сравнивать дальше, не оно - к следующей ячейке.
Аватара пользователя
РадиоЛоматель
Мудрый кот
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)
Контактная информация:

Re: Алгоритм поиска. ATmega32.

Сообщение РадиоЛоматель »

Ну вы сказали, что числа изначально попадают в систему контроллер+еепром через последовательный интерфейс, значит, делаем вывод, что они записываются в память контроллером уже самостоятельно. На данном этапе значительно проще обнаружить нужное число, т.к оно одно (до прихода следующего) и находится в памяти контроллера. Затем запомнить его адрес в еепром. Но если "нужное число", то, которое надо найти, возникает уже после записи, то тогда так, как предложил Нитро.
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Shplv
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Пт июн 04, 2010 19:24:26

Re: Алгоритм поиска. ATmega32.

Сообщение Shplv »

ibiza11 писал(а): может алгоритм какой нибудь хитрый? подскажите, кто что думает.

Всё уже придумано до нас: хеширование и хранение данных с одинаковым хеш-кодом "отдельно" от других данных.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Алгоритм поиска. ATmega32.

Сообщение ibiza11 »

Спасибо. Ночью с другом тоже нашли информацию о хешировании данных. Буду делать таблицу хеша при поступлении данных. Это облегчит поиск. :beer:
Ставим плюсы: )
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»