|
Домофон (СКД, сигнализация) на АВР, Или как работать с массивом данных |
|
|
|
Jun 5 2007, 01:00
|
Частый гость
 
Группа: Свой
Сообщений: 130
Регистрация: 15-01-06
Пользователь №: 13 190

|
Попался тут на глаза сломанный прибор от СКД, вот и подумал считыватель вигант есть, даллосовские ключи тоже, память на и2сишную на 10кБайт щас вытащу из прибора. С ключами и считывателями в принцепе не трудно разобраться, а вот сам вопрос состоит в том что не работал никогда с памятью, а соответственно и с массивом данных, ведь здесь не 10 ключей как в домофоне, а хочется ,чтобы научится работать с такими вещами, забить всю память т.е 1000 ключей.
Подскажите пожалуйста, если ктонибудь реализовывал плдобное, как лучше осушествлять поиск, сортировку, хранение, а еще лучше помогите примером,если не жалко конечно.
Принцып я так понимаю такой в памяти хранится 7 байт ключа ( КС 1байт -доп ко кода далласа 3байта-серия 1байт -номер 2байта, 8-мой можно выкинуть - код ключа=01, и 3 байта параметров ключа - ну например срок действия, временное окно и др. После добавлени ключей таблица сортируется по номеру серии и по номеру ключа, а далее стоит вопрос как будет быстрее если в ЕЕПРОМ сохранить номера серии ключей и соответствующие им диапазон ячеек в памяти и осуществлять поиск по номеру ключа уже внутри этого диапазона адресов памяти т.е. чтото типо хэширования , или просто при считывание ключа сначало ищем в памяти номер серии а потом в найденном диапазоне значений код ключа. Подскажите как все это решить. П.С. Помощь в этом вопросе очень сильна нужна в связи с весенней депресией, или творческий застой - как хотите это называйте, просто какаято апатия ко всему, даже купленнае месяц назад АТ90ЮСБ валяются без дела, сам я просто наврятли в ближайшее время начну проект, а так если будет пример хоть поковыряюсь и дипрессия спадет.
|
|
|
|
|
 |
Ответов
|
Jun 7 2007, 11:47
|

Частый гость
 
Группа: Свой
Сообщений: 175
Регистрация: 16-03-07
Из: Москва
Пользователь №: 26 228

|
Что бы поиск осуществлялся быстрее - можно память побыстрее выбрать, я использую атмеловскую SPI-ную. Ещё такой совет, например, применяя далосовские таблеточки, можно заметить, что первые байты у большинства одинаковые, а отличаются они последними, т.е. когда клиент покупает СКУД, он, как правило, в довесок берёт кучу таблеточек, обычно они из одной партии, в которой номера идут по порядку, т.е. инкрементируются. Записываем их в память в любом порядке, без сортировки. Когда появляется необходимость поиска ключа (приложили к контактеру и надо проверить пускать или нет) , запускаем такой алгоритм. Мы знаем длинну ключа (например 6 байт), знаем что младшие разряды меняются чаще, чем старшие (легко увидеть, если набрать некоторое кол-во таблеточек и поглядеть какими разрядами они отличаются), значит считываем из первого записанного ключа в память младший байт, сравниваем, совпадает - качаем оставшиеся 5, сравниваем, если не совпали - поворяем операцию для следующего ключа. При такой реализации для МК MSP430, 4МГЦ и SPI-ной памяти, 1000-ный ключик ищется 0,5 сек. вполне приемлимое время...
--------------------
Быстро, Дёшево, Качественно-выбери любые 2 пункта
|
|
|
|
Сообщений в этой теме
impuls-v Домофон (СКД, сигнализация) на АВР Jun 5 2007, 01:00 Dog Pawlowa Цитата(impuls-v @ Jun 5 2007, 04:00)... Jun 5 2007, 01:46 vesago Если ключей мало можно тупым перебором. Можно коне... Jun 7 2007, 09:13 GDI почему бы не сортировать ключи во время операции д... Jun 7 2007, 12:08 rumit2000 Цитата(GDI @ Jun 7 2007, 16:08) ... а доб... Jun 8 2007, 06:39 GDI ЦитатаИ если ключ будет записыватся значительное в... Jun 8 2007, 07:52 rumit2000 Цитата(GDI @ Jun 8 2007, 11:52) ...для ма... Jun 8 2007, 08:14 adnega Во время записи:
- оператор начинает сеанс записи;... Jun 8 2007, 08:24
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|