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

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

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

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

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

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

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

 
Опции темы
Непрочитано 22.03.2009, 18:53  
Jendoss
Временная регистрация
 
Регистрация: 28.05.2007
Адрес: Москва
Сообщений: 66
Сказал спасибо: 23
Сказали Спасибо 54 раз(а) в 12 сообщении(ях)
Jendoss на пути к лучшему
По умолчанию Программное определение типа EEPROM

Здравствуйте, уважаемые коллеги!
Хочу попросить у вас совета.
В текущем проекте используется микросхема serial EEPROM типа 24c64 (8k*8бит), используется для хранения 8-байтных кусочков информации (ID,логи). В хвосте лежит конфигурация устройства, настройки и т.п. (тоже 8 байт).
Шеф попросил сделать устройство гибче, дабы можно было втыкать туда микросхемы от 24с32 до 24с512, а программа бы сама определяла - что воткнуто - и работала с тем объемом хранения, который определила.
Я долго штудировал pdf-ы, надеясь, что компания-разработчик таки предусмотрела какую-нибудь метку, какой-нибудь DeviceID. Не нашел.
Ситуация осложняется тем, что втыкаемая микросхема уже может содержать важную информацию и методом записи с отловом noAck не подходит - можно повредить имеющиеся записи.
Пробовал читать предпоследнюю ячейку, постепенно увеличивая адрес - так мелким EEPROM-ам совершенно пофигу старшие биты большого адреса - они их игнорируют.
Подскажите, может есть какой-то другой способ определить тип (объем) воткнутой EEPROM-ки программным способом, не прибегая к конфигурационным перемычкам?
Заранее спасибо!
Реклама:
Jendoss вне форума  
Непрочитано 22.03.2009, 22:03  
Ironium
Гражданин KAZUS.RU
 
Аватар для Ironium
 
Регистрация: 02.03.2005
Сообщений: 923
Сказал спасибо: 155
Сказали Спасибо 444 раз(а) в 202 сообщении(ях)
Ironium на пути к лучшему
По умолчанию

Например читаем-пишем последнюю ячейку как для 24с64, и сразу проверяем последнею, как для 24с32 - если переписалась, значить 24с32. и так далее. Выяснив объем еепром - нетрудно восстановить байт. Можно попробовать сначало определить - чистая еепром или что на ней записано. Если чистая - пишем читаем без проблем. если есть информация: например минимальный объем 4 кило, читаем как 8 кило, подсчитываем CRC для младших 4 кило и для старших 4 кило, если CRC совпадают - вернее всего это 4 кило еепром, или 8 - но с одинаковыми блоками. И так далее . Может лучше читать как 512, подсчитываем CRC для каждых 4 кбайт, сравнением CRC определяем - какой объем.
Ironium вне форума  
Непрочитано 23.03.2009, 09:10  
Jendoss
Временная регистрация
 
Регистрация: 28.05.2007
Адрес: Москва
Сообщений: 66
Сказал спасибо: 23
Сказали Спасибо 54 раз(а) в 12 сообщении(ях)
Jendoss на пути к лучшему
По умолчанию

Спасибо!
Про CRC я как-то сразу не подумал...
только вот при чистой или свежеобнуленной памяти блоки будут одинаковые Придется заполнять их случайными байтами...
Jendoss вне форума  
Непрочитано 24.03.2009, 18:44  
Ironium
Гражданин KAZUS.RU
 
Аватар для Ironium
 
Регистрация: 02.03.2005
Сообщений: 923
Сказал спасибо: 155
Сказали Спасибо 444 раз(а) в 202 сообщении(ях)
Ironium на пути к лучшему
По умолчанию

Сообщение от Jendoss
Спасибо!
Про CRC я как-то сразу не подумал...
только вот при чистой или свежеобнуленной памяти блоки будут одинаковые Придется заполнять их случайными байтами...
Не проблема, генератор псевдослучайной последовательности - если не сталкивались, можно хотя бы у Хоровица Хилла посмотреть. лет надцать назад - самый удачный тест для оперативной памяти Спектрума был на псевдослучайной последовательности, остальные тесты на классических алгоритмах типа бегущая строка, столбец, шахматы и многие другие, пропускали дефектные ячейки. Если CRC соответсвует памяти заполненой FF или 00, тогда смело заполняем псевдослучайной последовательностью, и проверяем CRC. Объем памяти определить тут уже элементарно, заодно и хороший тест на битые ячейки.
Ironium вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программное отключение напряжения USB Gordey Ремонт оргтехники 2 17.04.2009 22:47
Программное управление alkapone Источники питания и свет 2 10.02.2008 17:50
Определение порядка фаз GeorgeScar Источники питания и свет 1 31.05.2007 14:01
Программное избавление от дребезга контактов. bopohok Микроконтроллеры, АЦП, память и т.д 10 06.04.2007 14:26
[Решено] Определение позиции. Святослав Автоматика и аппаратура связи 2 22.01.2006 00:39


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


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