Пробуй, надеюсь, знаешь назначения всех битов...Уважаемый Sancho.
В часах DS3231 в регистре по адресу 0x10 находится компенсация точности хода.
Можно ли помощью вашего блока прочитать и изменить его значения.
Внешняя EEPROM по шине I2C
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Внешняя EEPROM по шине I2C
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Sancho 03 окт 2017, 10:16, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Внешняя EEPROM по шине I2C
Уважаемый Sancho.
Благодарю за ваше внимание!
Проверил оба блока. Пишут и читают изменения.
НО!
При чтении вижу 0. Пишу 120, пишу 250 это не влияет на выход 32K. Частота остается неизменной 32,76кГц. Может я в чем то ошибаюсь. Но мне казалось что точность часов должна как то соответствовать с частотой на выходе 32К. Не могло быть ошибки с адресом в блоке.
Благодарю за ваше внимание!
Проверил оба блока. Пишут и читают изменения.
НО!
При чтении вижу 0. Пишу 120, пишу 250 это не влияет на выход 32K. Частота остается неизменной 32,76кГц. Может я в чем то ошибаюсь. Но мне казалось что точность часов должна как то соответствовать с частотой на выходе 32К. Не могло быть ошибки с адресом в блоке.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Внешняя EEPROM по шине I2C
Посмотрим, что пишут о DS3231Iron писал(а):Проверил оба блока. Пишут и читают изменения.НО!
При чтении вижу 0. Пишу 120, пишу 250 это не влияет на выход 32K. Частота остается неизменной 32,76кГц. Может я в чем то ошибаюсь.
" На DS3231 является серийным RTC обусловлен температурной компенсацией кварцевый генератор 32 кгц. В TCXO обеспечивает точность и стабильность опорного тактового сигнала, а также поддерживает часы реального времени с точностью ±2 минуты в год точность от -40°C до +85°C."
[spoiler=Что это значит?]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 со знаком[/spoiler]
Пост будет удалён через пару дней - не к месту...
Последний раз редактировалось Sancho 05 окт 2017, 09:53, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Внешняя EEPROM по шине I2C
Спасибо Sancho.
По пунктам.
1.Циферками не перегрузили, все очень доходчево.
2. Не выйдет по причине отсутствия оборудования
3. За блоки вам большое спасибо, думаю они будут нужны не только мне.
4. Вот тут не все понятно, но постараюсь разобраться.
По пунктам.
1.Циферками не перегрузили, все очень доходчево.
2. Не выйдет по причине отсутствия оборудования
3. За блоки вам большое спасибо, думаю они будут нужны не только мне.
4. Вот тут не все понятно, но постараюсь разобраться.
-
- Сержант
- Сообщения: 138
- Зарегистрирован: 19 апр 2018, 13:37
- Имя: Павел
Внешняя EEPROM по шине I2C
Добрый день,
Я скажем так новичок в программирование. Пишу программу для дозатора где нужно управлять 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шт. Да и количество таймеров будет ограничено не моими хотелками, а памятью чипа.
И еще один вопрос, как можно будет сохранять др данные не из таймеров?
А может кто знает как удобно сохранить в ЕЕПРОМ массив, тоже буду очень признателен
Я скажем так новичок в программирование. Пишу программу для дозатора где нужно управлять 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
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Внешняя EEPROM по шине I2C
Легко, но проблема к доступу к массиву извне - куча прослоек получается...Gordon0007 писал(а): 23 апр 2018, 11:15А может кто знает как удобно сохранить в ЕЕПРОМ массив, тоже буду очень признателен
На С++ вообще легко отправлять и получать в цикле...
Использовать массив из программы - проблема с именем, постоянно меняется индекс при генерации кода, например _FLPArray225183772, где 225183772 и есть индекс...
Отправлено спустя 1 минуту 14 секунд:
Это один байт.- Пон (Boolen)
- Вторник (Boolen)
- СР (Boolen)
- Чт (Boolen)
- Пт (Boolen)
- сб (Boolen)
- Вс (Boolen)

мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Внешняя EEPROM по шине I2C
Как угодно - 56 байт.Sergios писал(а): 23 апр 2018, 15:36тут у меня есть вопрос, как можно использовать еепром в часах DS1307 ???
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Внешняя EEPROM по шине I2C
Это 56 байт 0-255
28 инт -32767 32767, или unsig 0-65536
14 флоат или лонг
или комбинации...
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Капитан
- Сообщения: 860
- Зарегистрирован: 17 ноя 2015, 20:36
- Имя: Сергей
- Благодарил (а): 40 раз
- Поблагодарили: 8 раз
Внешняя EEPROM по шине I2C
О работе блоков с ESP8266
Отправлено спустя 1 минуту 38 секунд:
При компиляции вылазит предупреждение , наверно что то еще не так
Вынес в отдельный блок вызов библиотеки и выбор пинов. Как сделать чтоб в блок номера пинов брались с входов а то каждый раз редактировать блок не удобноSancho писал(а): 02 июл 2018, 11:19В коде изменить/добавить, пробуй
Wire.pins(0, 2); // sda, scl
Wire.begin();
Или
Wire.begin(0,2);
Отправлено спустя 1 минуту 38 секунд:
При компиляции вылазит предупреждение , наверно что то еще не так
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Внешняя EEPROM I2C 24C32, 64....
[ref]fsergei70[/ref], Серёга, через параметры проще.
Отправлено спустя 2 минуты 13 секунд:
Убери лишнюю begin
Отправлено спустя 2 минуты 13 секунд:
Убери лишнюю begin
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Капитан
- Сообщения: 860
- Зарегистрирован: 17 ноя 2015, 20:36
- Имя: Сергей
- Благодарил (а): 40 раз
- Поблагодарили: 8 раз
Внешняя EEPROM I2C 24C32, 64....
Сань, если по умолчанию в каждом блоке поставить 4,5 пины можно будет одни и те же блоки и для ESP и для arduino юзать?
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Внешняя EEPROM по шине I2C
Нет, будет ошибка - для ардуино нет команды wire.pinsfsergei70 писал(а): 06 июл 2018, 11:06Сань, если по умолчанию в каждом блоке поставить 4,5 пины можно будет одни и те же блоки и для ESP и для arduino юзать?
Отправлено спустя 49 секунд:
Там жёстко и навсегда А4 и А5
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Капитан
- Сообщения: 860
- Зарегистрирован: 17 ноя 2015, 20:36
- Имя: Сергей
- Благодарил (а): 40 раз
- Поблагодарили: 8 раз
Внешняя EEPROM по шине I2C
так может сделать отдельно булевый вход при 1 строка wire.pins подключается при 0 блок работает без нее. Или оставить твои блоки без изменения а для ESP сделать блок с одной строкой wire.pins, поставил его работаем с ESP не поставил с ардуино?
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Внешняя EEPROM по шине I2C
[ref]fsergei70[/ref], Не получится!
Когда компилятор для avr увидит в программе Wire.pins - всё равно будет ругаться!!!!
Когда компилятор для avr увидит в программе Wire.pins - всё равно будет ругаться!!!!
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Капитан
- Сообщения: 860
- Зарегистрирован: 17 ноя 2015, 20:36
- Имя: Сергей
- Благодарил (а): 40 раз
- Поблагодарили: 8 раз
Внешняя EEPROM по шине I2C
А если так? С верхним блоком ESP без него ардуиноSancho писал(а): 06 июл 2018, 12:12Когда компилятор для avr увидит в программе Wire.pins - всё равно будет ругаться!!!!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Внешняя EEPROM по шине I2C
Тогда уж так
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Капитан
- Сообщения: 860
- Зарегистрирован: 17 ноя 2015, 20:36
- Имя: Сергей
- Благодарил (а): 40 раз
- Поблагодарили: 8 раз
Внешняя EEPROM по шине I2C
Просто если так будет работать то тогда можно будет под ESP и другие блоки запустить, например блок для PCF8574 а то у ESP ног не так уж много. GPIO 6 по 11 памятью ESP заняты.
Отправлено спустя 1 минуту 42 секунды:
Спасибо надо пробовать на железе. так вроде компилируется все
Отправлено спустя 1 минуту 42 секунды:
Спасибо надо пробовать на железе. так вроде компилируется все
Внешняя EEPROM по шине I2C
Привет Александр, затестил внешнюю еепром 24с256 свою..Все хорошо, пишет и читает. Вопрос про поиск, он делает поиск в формате 79хх1234567, я погонял пока по уарту, если в таком формате, то сравнивает и выдает сигнал на поднятие трубки, но вот сам сим800 при входящих в уарт гонит в формате +79хх1234567, и тогда твой блок отрезает последнюю цифру и пишет, что нет записи, номер новый. Как это можно исправить?
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Внешняя EEPROM по шине I2C
Легко.
сегодня - -- понедельник сделаю.
Вопрос - на блок будешь подавать string или байтами, как сейчас?
сегодня - -- понедельник сделаю.
Вопрос - на блок будешь подавать string или байтами, как сейчас?
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Внешняя EEPROM по шине I2C
Скорее всего string, так как на блоке сим800 выход стринг.
А еще вопрос можно? у тебя есть в наличии сим800?
А еще вопрос можно? у тебя есть в наличии сим800?
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя