Подключение к EEPROM DS2436 по 1Wire
- Войдите на сайт для отправки комментариев
Ср, 26/09/2018 - 00:34
Здравствуте, пытаюсь подключится к 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 приходит всегда одно и тоже, вне зависимости от того с какой ячейки читаю.. Вообщем явно я что то недопонимаю. Подскажите, пожалуйста!
Нашел библиотеку для DS2438, но видимо они отличаются от 2436..
DS2436 и DS2438 сильно различаются. В первом - 5 страниц памяти , а во 2-ом - 7 страниц. Тоже пытался прочесть 2436 - ноль,не хватает знаний.
Адреса регистров DS2436 есть .
Но как правильно прочитать -не знаю.По методу DS18B20 не катит - там проще, нет многостраничной памяти. Библиотеку для DS2438 ковырял - переделывал. Результат -ноль.
Нашел на ГитХабе эмулятор различных ОнеВаре датчиков.DS18B20 эта библиотека эмулирует(одна ардуина прикидывается датчиком , а вторая -читает) .Вроде эмулирует и DS2438. Но и из эмулятора 2438 не смог ничего прочитать.