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

2-11-2012, 15:07 От: admin Посмотрели: 1065
Привет, хочу считать данные с такого чипа: (http://www.gaw.ru/html.cgi/txt/ic/Maxim/ibutton/ds1971.htm)

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

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

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

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

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

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

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

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



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



Нашел документ по этому чипу http://www.ibutton.ru/pdf/Dallas_Sem/ibutton/rus/DS1991_ru_new.pdf



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

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

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

последние 8 бит — CRC-код предыдущих 56 бит информации Работа С Eeprom - Помогите Считать Данные




#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)) // по описанию функция ищет устройство, и записывает в addr 8 byte этого устройства.

{

Serial.print("No more addresses.\n");

ds.reset_search(); // начинаем новый поиск устройства

return;

}

Serial.print("R="); for( i = 0; i < 8; i++) { Serial.print(addr[i], HEX); Serial.print(" "); }

//(Cyclic redundancy code, CRC — циклический избыточный код) —

//способ цифровой идентификации некоторой последовательности данных, который заключается в

//вычислении контрольного значения её циклического избыточного кода.

//OneWire::crc8 - не совсем понятно, зачем делаем и почему результат сравниваем с addr[7]

//Могу предположить что проверяется, это Dallas устройство или нет, по скольку в коде видно что данные проверяются из массива dscrc_table

//но понимания пока нет, почему addr[7], хотя можно предположить что там лежит crc код...


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"); //не знаю на сколько это правда, но у меня так}

else if(addr[0] == 0x1) {Serial.print("Device is a DS1990A family device.\n"); }

Serial.println(); ds.reset(); delay(1000);}



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



А как прочитать EEPROM не могу найти.
Раздел: Arduino

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться, либо войти на сайт под своим именем.

Обсудить на форуме


На момент добавления Работа С Eeprom - Помогите Считать Данные все ссылки были рабочие.
Все публикации статей, книг и журналов, представлены на этом сайте, исключительно для ознакомления,
авторские права на эти публикации принадлежат авторам статей, книг и издательствам журналов!
Подробно тут | Жалоба

Добавление комментария

Ваше имя:*
E-Mail:*
Текст:
Вопрос:
Решите уравнения x+2x=789
Ответ:*
Введите два слова, показанных на изображении:



Опрос

Ваши предпочтения в TRX


Одинарное преобразование
Двойное преобразование
Прямое преобразование
SDR
Другое
Мне всё равно

Календарь новостей
«    Апрель 2024    »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930