Перейти к содержанию

Работа С Eeprom - Помогите Считать Данные


Рекомендуемые сообщения

Привет, хочу считать данные с такого чипа: (http://www.gaw.ru/ht...tton/ds1971.htm)

DS1971 - 256 бит EEPROM + 64 бита

особенности:

256 бит перезаписываемой энергонезависимой памяти

EEPROM организована как одна 256 байтная страница

64 бит одноразово программируемой памяти, которая автоматически защищается от записи после программирования

Контроль, адресация и питание по одному проводу

8 битный идентификационный код семейства DS1971 для идентификации ридером

Диапазон напряжения питания от 2,8 В до 6,0 В во всем температурном диапазоне от -40°C до +85°C

Пробовал разобраться используя статью http://robocraft.ru/...rduino/118.html, но все глухо.

Нашел документ по этому чипу http://www.ibutton.r...1991_ru_new.pdf

Это так-же подходит для этого чипа:

первые 8 бит — номер серии устройства (01h)

следующие 48 бит — уникальный серийный номер

последние 8 бит — CRC-код предыдущих 56 бит информации :)

#include <OneWire.h>
OneWire ds(10); // на digital pin 10
void setup(void) { Serial.begin(9600); }
void loop(void) {
byte i; byte present = 0; byte data[12]; byte addr[8];
if ( !ds.search(addr))[color=#0000BF] // по описанию функция ищет устройство, и записывает в addr 8 byte этого устройства.[/color]
{
Serial.print("No more addresses.\n");
ds.reset_search(); [color=#0000BF]// начинаем новый поиск устройства[/color]
return;
}
Serial.print("R="); for( i = 0; i < 8; i++) { Serial.print(addr[i], HEX); Serial.print(" "); }
[color=#0000BF]//(Cyclic redundancy code, CRC — циклический избыточный код) —
//способ цифровой идентификации некоторой последовательности данных, который заключается в
//вычислении контрольного значения её циклического избыточного кода.
//OneWire::crc8 - не совсем понятно, зачем делаем и почему результат сравниваем с addr[7]
//Могу предположить что проверяется, это Dallas устройство или нет, по скольку в коде видно что данные проверяются из массива dscrc_table
//но понимания пока нет, почему addr[7], хотя можно предположить что там лежит crc код...[/color]
if ( OneWire::crc8( addr, 7) != addr[7]) { Serial.print("CRC is not valid!\n"); return; }
if (addr[0] == 20) { Serial.print("Device is a DS1991 family device.\n"); [color=#0000BF]//не знаю на сколько это правда, но у меня так[/color]}
else if(addr[0] == 0x1) {Serial.print("Device is a DS1990A family device.\n"); }
Serial.println(); ds.reset(); delay(1000);}

В коде выше выводится серийный номер устройства.

А как прочитать EEPROM не могу найти.

Изменено пользователем admin
Тэгом CODE Не учили пользоваться?
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...