Внешняя EEPROM по шине I2C

Использование внешней и внутренней EEPROM, а так-же SD card
Аватара пользователя
Sancho
Полковник
Сообщения: 3999
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 571
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешняя EEPROM по шине I2C

#21

Сообщение Sancho » 03.10.2017{, 10:14}

Уважаемый Sancho.
В часах DS3231 в регистре по адресу 0x10 находится компенсация точности хода.
Можно ли помощью вашего блока прочитать и изменить его значения.
Пробуй, надеюсь, знаешь назначения всех битов...
Вложения
DS3231_0x10_wri.ubi
(10.7 КБ) 75 скачиваний
DS3231_0x10_rea.ubi
(9.73 КБ) 79 скачиваний
Последний раз редактировалось Sancho 03.10.2017{, 10:16}, всего редактировалось 1 раз.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Iron
Рядовой
Сообщения: 26
Зарегистрирован: 23.11.2016{, 17:20}
Репутация: 1

Внешняя EEPROM по шине I2C

#22

Сообщение Iron » 04.10.2017{, 18:28}

Уважаемый Sancho.
Благодарю за ваше внимание!
Проверил оба блока. Пишут и читают изменения.
НО! 
При чтении вижу 0. Пишу 120, пишу 250 это не влияет на выход 32K. Частота остается неизменной 32,76кГц. Может я в чем то ошибаюсь. Но мне казалось что точность часов должна как то соответствовать с частотой на выходе 32К. Не могло быть ошибки с адресом в блоке.

Аватара пользователя
Sancho
Полковник
Сообщения: 3999
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 571
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешняя EEPROM по шине I2C

#23

Сообщение Sancho » 05.10.2017{, 09:45}

Iron писал(а):Проверил оба блока. Пишут и читают изменения.НО!
При чтении вижу 0. Пишу 120, пишу 250 это не влияет на выход 32K. Частота остается неизменной 32,76кГц. Может я в чем то ошибаюсь.
Посмотрим, что пишут о DS3231
" На DS3231 является серийным RTC обусловлен температурной компенсацией кварцевый генератор 32 кгц. В TCXO обеспечивает точность и стабильность опорного тактового сигнала, а также поддерживает часы реального времени с точностью ±2 минуты в год точность от -40°C до +85°C."
Что это значит?Показать
365 дней / 120 сек = 3 дня/сек; один день 0.3 сек; один день = 86400 сек.
86400    * 32768 = 2 831 155 200      норма(герц в день)
86400,3 * 32768 = 2 831 165 030,4    +0.3 сек в день
86400    * 32767 = 2 831 068 800        если станет 32767
Думаю, Вам теперь видна точность кварца после запятой( мили-доли герца) ?
А Вы пытаетесь уловить коррекцию частотомером за 1 секунду?
Надеюсь, не перегрузил циферками и понятно объяснил, насколько хороша DS3231.

Добавлено (05.10.2017, 09:13)
---------------------------------------------
P.S. Но Вы всё-таки можете проверить работу данного регистра другим способом:
Делаете счётчик импульсов либо частотомер с тактированием от выхода микросхемы, предварительно разделив его вначале на 32768, а затем, например, на 10. В итоге 10 сек интервал.
На вход устройства подаёте 10-50 МГц от высоко-стабильного образцового генератора.
При коррекции регистра изменения результатов будут видны, в герцах.

Добавлено (05.10.2017, 09:29)
---------------------------------------------
Блоки корректные, адреса тоже. Проверил на железе.

Добавлено (05.10.2017, 09:45)
---------------------------------------------
Возможно, также из даташита:
The offset register is added to the capacitance array during a normal temperature conversion, if the temperature changes from the previous conversion, or during a manual user conversion (setting the CONV bit).
Контрольный регистр (0Eh)
.
Бит 5: Температура преобразования (Conv). Установка этого бита равным 1 заставляет датчик температуры преобразовать температуру в цифровой код и выполнить алгоритм TCXO для обновления блока емкости генератора. Это может произойти только в том случае, если преобразование еще не выполняется. Пользователь должен проверить бит состояния BSY перед тем, как заставить контроллер запустить новое выполнение TCXO. Преобразование температуры, инициированное пользователем, не влияет на внутренний 64-секундный цикл обновления.
Пользователь инициировал преобразования температуры не влияет на BSY bit примерно 2мс. CONV bit остается на 1 от момента записи до завершения преобразования, в которой как раз и BSY bit идти к 0. Бит Conv должен использоваться при мониторинге состояния преобразования, инициированного пользователем
Перевод тындекса

Значение в регистре 10h со знаком
Пост будет удалён через пару дней - не к месту...
Последний раз редактировалось Sancho 05.10.2017{, 09:53}, всего редактировалось 1 раз.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Iron
Рядовой
Сообщения: 26
Зарегистрирован: 23.11.2016{, 17:20}
Репутация: 1

Внешняя EEPROM по шине I2C

#24

Сообщение Iron » 05.10.2017{, 11:26}

Спасибо Sancho.
По пунктам.
1.Циферками не перегрузили, все очень доходчево.  
2. Не выйдет по причине отсутствия оборудования  
3. За блоки вам большое спасибо, думаю они будут нужны не только мне.
4. Вот тут не все понятно, но постараюсь разобраться.

Gordon0007
Сержант
Сообщения: 137
Зарегистрирован: 19.04.2018{, 13:37}
Репутация: 13
Имя: Павел

Внешняя EEPROM по шине I2C

#25

Сообщение Gordon0007 » 23.04.2018{, 11:15}

Добрый день,
Я скажем так новичок в программирование. Пишу программу для дозатора где нужно управлять 6 насосами и запуску их в нужное время и конкретный день недели на нужное количество, все работает отлично и запускается идеально, но вот я дошел до таймеров и столкнулся с проблемой сохранения где нужно сохранять в ЕЕПРОМ 60 таймеров (это по 10шт на каждый насос).
Это:
- № Насоса (Byte)
- Час (Byte)
- Минуты (Byte)
- Доза (Integer)
- Пон (Boolen)
- Вторник (Boolen)
- СР (Boolen)
- Чт (Boolen)
- Пт (Boolen)
- сб (Boolen)
- Вс (Boolen)

Проблема в том если делать стандартными блоками это 11 блоков * 60 таймеров (660 блоков с индивидуальными именами), после создания 10 таймеров я потратил 2-3 часа и это я еще чтение не расставлял. Всего 1720 блоков нужно поставить если пользоваться стандартными блоками, да и комп начитает тормозить и появляется человеческий фактор что просто не то и не туда поставлю, а ваш блок должен очень сильно облегчить мне программу и заменить 1720 блоков на 2 блока.

Нашел ваш влок для сохранения "Внешняя EEPROM по шине I2C" и подумал может вы мне поможете в создание таких же блоков для записи и чтения.
Заранее спасибо!

П/С
Забыл что еще нужно будет стереть все при сбросе всех таймеров а это опять 660 блоков и того 2 блока вместо 1980шт. Да и количество таймеров будет ограничено не моими хотелками, а памятью чипа.
И еще один вопрос, как можно будет сохранять др данные не из таймеров?

А может кто знает как удобно сохранить в ЕЕПРОМ массив, тоже буду очень признателен

Аватара пользователя
Sancho
Полковник
Сообщения: 3999
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 571
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешняя EEPROM по шине I2C

#26

Сообщение Sancho » 23.04.2018{, 12:16}

Gordon0007 писал(а):
23.04.2018{, 11:15}
А может кто знает как удобно сохранить в ЕЕПРОМ массив, тоже буду очень признателен
Легко, но проблема к доступу к массиву извне - куча прослоек получается...
На С++ вообще легко отправлять и получать в цикле...
Использовать массив из программы - проблема с именем, постоянно меняется индекс при генерации кода, например _FLPArray225183772, где 225183772 и есть индекс...

Отправлено спустя 1 минуту 14 секунд:
- Пон (Boolen)
- Вторник (Boolen)
- СР (Boolen)
- Чт (Boolen)
- Пт (Boolen)
- сб (Boolen)
- Вс (Boolen)
Это один байт. :haha:
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
Sancho
Полковник
Сообщения: 3999
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 571
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешняя EEPROM по шине I2C

#27

Сообщение Sancho » 23.04.2018{, 16:08}

Sergios писал(а):
23.04.2018{, 15:36}
тут у меня есть вопрос, как можно использовать еепром в часах DS1307 ???
Как угодно - 56 байт.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
Sancho
Полковник
Сообщения: 3999
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 571
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешняя EEPROM по шине I2C

#28

Сообщение Sancho » 23.04.2018{, 16:51}

Sergios писал(а):
23.04.2018{, 16:35}
как я понимаю это 56 значений?
Это 56 байт 0-255
28 инт -32767 32767, или unsig 0-65536
14 флоат или лонг
или комбинации...
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
fsergei70
Капитан
Сообщения: 703
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 49
Откуда: Ессентуки-Кисловодск
Имя: Сергей

Внешняя EEPROM по шине I2C

#29

Сообщение fsergei70 » 06.07.2018{, 10:44}

О работе блоков с ESP8266
Sancho писал(а):
02.07.2018{, 11:19}
В коде изменить/добавить, пробуй
Wire.pins(0, 2); // sda, scl
Wire.begin();
Или
Wire.begin(0,2);
Вынес в отдельный блок вызов библиотеки и выбор пинов. Как сделать чтоб в блок номера пинов брались с входов а то каждый раз редактировать блок не удобно

Отправлено спустя 1 минуту 38 секунд:
При компиляции вылазит предупреждение , наверно что то еще не так
Вложения
ESP eeprom.flp
(211.13 КБ) 74 скачивания

Аватара пользователя
Sancho
Полковник
Сообщения: 3999
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 571
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешняя EEPROM I2C 24C32, 64....

#30

Сообщение Sancho » 06.07.2018{, 11:00}

fsergei70, Серёга, через параметры проще.

Отправлено спустя 2 минуты 13 секунд:
Убери лишнюю begin
Вложения
ESP eeprom_v1.flp
(173.98 КБ) 67 скачиваний
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
fsergei70
Капитан
Сообщения: 703
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 49
Откуда: Ессентуки-Кисловодск
Имя: Сергей

Внешняя EEPROM I2C 24C32, 64....

#31

Сообщение fsergei70 » 06.07.2018{, 11:06}

Sancho писал(а):
06.07.2018{, 11:00}
Серёга, через параметры проще.
Сань, если по умолчанию в каждом блоке поставить 4,5 пины можно будет одни и те же блоки и для ESP и для arduino юзать?

Аватара пользователя
Sancho
Полковник
Сообщения: 3999
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 571
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешняя EEPROM по шине I2C

#32

Сообщение Sancho » 06.07.2018{, 11:09}

fsergei70 писал(а):
06.07.2018{, 11:06}
Сань, если по умолчанию в каждом блоке поставить 4,5 пины можно будет одни и те же блоки и для ESP и для arduino юзать?
Нет, будет ошибка - для ардуино нет команды wire.pins

Отправлено спустя 49 секунд:
Там жёстко и навсегда А4 и А5
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
fsergei70
Капитан
Сообщения: 703
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 49
Откуда: Ессентуки-Кисловодск
Имя: Сергей

Внешняя EEPROM по шине I2C

#33

Сообщение fsergei70 » 06.07.2018{, 11:43}

Sancho писал(а):
06.07.2018{, 11:11}
Нет, будет ошибка - для ардуино нет команды wire.pins
так может сделать отдельно булевый вход при 1 строка wire.pins подключается при 0 блок работает без нее. Или оставить твои блоки без изменения а для ESP сделать блок с одной строкой wire.pins, поставил его работаем с ESP не поставил с ардуино?

Аватара пользователя
Sancho
Полковник
Сообщения: 3999
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 571
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешняя EEPROM по шине I2C

#34

Сообщение Sancho » 06.07.2018{, 12:12}

fsergei70, Не получится!
Когда компилятор для avr увидит в программе Wire.pins - всё равно будет ругаться!!!!
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
fsergei70
Капитан
Сообщения: 703
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 49
Откуда: Ессентуки-Кисловодск
Имя: Сергей

Внешняя EEPROM по шине I2C

#35

Сообщение fsergei70 » 06.07.2018{, 12:20}

Sancho писал(а):
06.07.2018{, 12:12}
Когда компилятор для avr увидит в программе Wire.pins - всё равно будет ругаться!!!!
А если так? С верхним блоком ESP без него ардуино
Вложения
2.flp
(176.31 КБ) 69 скачиваний

Аватара пользователя
Sancho
Полковник
Сообщения: 3999
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 571
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешняя EEPROM по шине I2C

#36

Сообщение Sancho » 06.07.2018{, 12:25}

Тогда уж так
Вложения
ESP eeprom_v2.flp
(178.87 КБ) 79 скачиваний
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
fsergei70
Капитан
Сообщения: 703
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 49
Откуда: Ессентуки-Кисловодск
Имя: Сергей

Внешняя EEPROM по шине I2C

#37

Сообщение fsergei70 » 06.07.2018{, 12:29}

Просто если так будет работать то тогда можно будет под ESP и другие блоки запустить, например блок для PCF8574 а то у ESP ног не так уж много. GPIO 6 по 11 памятью ESP заняты.

Отправлено спустя 1 минуту 42 секунды:
Спасибо надо пробовать на железе. так вроде компилируется все

Аватара пользователя
Psix_anp
Рядовой
Сообщения: 48
Зарегистрирован: 03.11.2017{, 17:56}
Репутация: 2
Откуда: Анапа
Имя: Сергей

Внешняя EEPROM по шине I2C

#38

Сообщение Psix_anp » 18.08.2018{, 16:12}

Sancho писал(а):
14.08.2017{, 17:15}
Сделал блок для записи в память телефонов с фамилиями и именами.
Привет Александр, затестил внешнюю еепром 24с256 свою..Все хорошо, пишет и читает. Вопрос про поиск, он делает поиск в формате 79хх1234567, я погонял пока по уарту, если в таком формате, то сравнивает и выдает сигнал на поднятие трубки, но вот сам сим800 при входящих в уарт гонит в формате +79хх1234567, и тогда твой блок отрезает последнюю цифру и пишет, что нет записи, номер новый. Как это можно исправить?

Аватара пользователя
Sancho
Полковник
Сообщения: 3999
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 571
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешняя EEPROM по шине I2C

#39

Сообщение Sancho » 18.08.2018{, 16:52}

Легко.
сегодня - -- понедельник сделаю.
Вопрос - на блок будешь подавать string или байтами, как сейчас?
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
Psix_anp
Рядовой
Сообщения: 48
Зарегистрирован: 03.11.2017{, 17:56}
Репутация: 2
Откуда: Анапа
Имя: Сергей

Внешняя EEPROM по шине I2C

#40

Сообщение Psix_anp » 18.08.2018{, 17:15}

Скорее всего string, так как на блоке сим800 выход стринг.
А еще вопрос можно? у тебя есть в наличии сим800?

Ответить

Вернуться в «Устройства памяти»