Подключение к EEPROM DS2436 по 1Wire

vasya00
Offline
Зарегистрирован: 30.05.2016

Здравствуте, пытаюсь подключится к DS2436 Battery Identification/Monitor Chip, прочитать из нее что нибудь внятное, и если получится подправить немного. Пользуюсь библиотекой OneWire.h. Примеров работы конкретно с DS2436 не нашел. Но в целом почитав даташит понял что это должно выглядить примерно так:

#include <OneWire.h>
#define POWER_MODE  1 // режим питания
OneWire ds (11);
byte data[100]; // сюда будем сохранять данные
byte adr[8]; // здесь можно хранить адрес
void setup(void) {
Serial.begin(9600);
}
void loop(void) {
  ds.reset();  // сброс шины
  ds.write(0x33, POWER_MODE); // отправляем  READ ROM
 // ds.write(0xD2, POWER_MODE); // можно обновить данные с датчика температуры
  ds.write(0xB2, POWER_MODE); // читаем Read Registers
  ds.write(0x80, POWER_MODE); // с ячейки 60 где хранится температура
  for (int i = 0; i < 99; i++) { 
    data[i] = ds.read(); // читаем то что получилось
    Serial.print(data[i], HEX);
    Serial.print(" ");
  } 
  delay(3000);
  Serial.println();
}

Но при таком раскладе ничего вразумительного прочитать не удается, то есть что то читаю, но не понимаю что.. Вот после 0x33, получаю 1B 22 81 56 0 0 0 42 FF FF FF FF... После остальных команд приходит что то, и после 0xB2 приходит всегда одно и тоже, вне зависимости от того с какой ячейки читаю.. Вообщем явно я что то недопонимаю. Подскажите, пожалуйста!

vasya00
Offline
Зарегистрирован: 30.05.2016

Нашел библиотеку для DS2438, но видимо они отличаются от 2436..

Старый
Offline
Зарегистрирован: 09.10.2016

DS2436 и DS2438 сильно различаются. В первом - 5 страниц памяти , а во  2-ом - 7 страниц. Тоже пытался прочесть  2436 - ноль,не хватает знаний.

Адреса регистров DS2436 есть .

#define _1W_READ_SCRATCHPAD 0x11
#define _1W_WRITE_SCRATCHPAD 0x17
#define _1W_COPY_SP1_TO_NV1	0x22
#define _1W_COPY_SP2_TO_NV2	0x25
#define _1W_COPY_SP3_TO_NV3	0x28
#define _1W_COPY_NV1_TO_SP1 0x71
#define _1W_COPY_NV2_TO_SP2 0x77
#define _1W_COPY_NV3_TO_SP3 0x7A
#define _1W_LOCK_NV1 0x43
#define _1W_UNLOCK_NV1 0x44
#define _1W_CONVERT_T 0xD2
#define _1W_CONVERT_V 0xB4
#define _1W_READ_REGISTERS 0xB2
#define _1W_INCREMENT_CYCLE 0xB5
#define _1W_RESET_CYCLE_COUNTER 0xB8

#define _ADDRESS_TEMPERATURE 0x60
#define _ADDRESS_VOLTAGE 0x77
#define _ADDRESS_CYCLES 0x82

Но как правильно прочитать -не знаю.По методу DS18B20 не катит - там проще, нет многостраничной памяти. Библиотеку для DS2438 ковырял - переделывал. Результат -ноль.

Нашел на ГитХабе эмулятор различных ОнеВаре датчиков.DS18B20  эта библиотека эмулирует(одна ардуина прикидывается датчиком , а вторая -читает) .Вроде эмулирует и DS2438. Но и из эмулятора 2438 не смог ничего прочитать.