Приобрёл ds3231, а она не работает
- Войдите на сайт для отправки комментариев
Вс, 18/10/2020 - 19:35
Такая вот "картина маслом".
Никак не могу ни считать время, ни установить - выдаёт какую то ерунду.
Пытался просто считать температуру из неё, как у кого то здесь видел - выдаёт 255.75
Подскажите, что я делаю не так?
Адрес 3231 сканер показал 0х57, дисплей 0х27.
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,20,4); void setup() { Wire.begin(); lcd.begin(20,4); lcd.init(); // Сброс экрана lcd.backlight(); // Включение подсветки lcd.clear(); // Очистка экрана } void loop() { Что посмотреть, куда копать? Wire.beginTransmission(0x57); Wire.write(0x11); Wire.endTransmission(); Wire.requestFrom(0x57, 2); float temp= (Wire.read()<<2 | Wire.read()>>6)*0.25; lcd.setCursor(13, 0); lcd.print(temp); }
Какая то фигня попала при написании сообщения в 16 строку...
В тексте её нет.
А если взять какой-нибудь пример от DS3231?
Пробовал примером читать и выводить дату-время - полный бред, что то типа 255:255:255:450
Просто для примера, число могло быть другим...
Без модуля показывает -0,25
Да нет, берете пример от библиотеки DS3231, ничего не меняете, заливаете и смотрите - работает или нет. Вывод там обычно в сериал
Вот такое выдаёт ds3231_test^
Да, напряжение 3,09В
Вопросик, а у неё вывод 32К всегда работает? Щуп осцилографа потянет?
Дело в том, что осцилограф на этом выводе ничего не показывает...
Ну вроде бы вполне осмысленно время выдает - часы:минуты:секунды.милисекунды. В чем проблема-то?
Вывод вроде программируемый, нужно включать. Не знаю - я им не пользовался ))
А как тогда расшифровать это:
21165 85 165 165 25 165 165 PM
П.С. Теоретически ds3231_set время настроил...
Адрес 68.
Установить время. После сброса питания может выдавать чушь, не всегда по нулям сбрасывается. Не далее как вчера модуль так же себя вёл, установил время — всё нормализовалось.
А как тогда расшифровать это:
21165 85 165 165 25 165 165 PM
П.С. Теоретически ds3231_set время настроил...
Не знаю. В скетче написано, что там выдается. У меня этого скетча нету ))
apg_777
IIC сканер говорит, что 57? Все перемычки разомкнуты (изначально)
Просто забил и попробовал с 68 адресом?
А теперь кроме времени установите дату и день недели. И будильники у вас на 15-й день недели настроены. У микросхемы нет контроля валидности даты - что в нее записалось, то и будет выдавать, хоть 48 февраля ))
3231 не видел ни одного с адресом не 68.
Резисторы подтяжки стоят? Без них в чистом виде не работает.
Так я ж не голую 3231 использую, а в виде модуля. Там всё стоит. Единственное отогнул диод.
Устанавливаю дату/время стандартным скетчем из примеров:
del
Насколько я понял - её надо отправить в ком порт: 2010180193700x
Или я туплю?
Нет, это я затупил ))
Судя по всему ничего у вас там не устанавливается. Судя по всему библиотека у нас с вами одинаковая, значит и тест один и тот же. А значит строка
означает - год, месяц, число месяца, день недели, часы, минуты, секунды, флаг AM/PM, температура, проверка флага кварца, первый и второй будильники (включены или нет)
если флаг кварца O-, значит время показывается неверно, в библиотеке описано так:
ArturKu. Если модуль, то I2C сканер должен определить два адреса. К примеру: 0x57 адрес EEPROM, 0x68 адрес ds3231. И посмотрите тут, мне помогло "стартануть", но в итоге пришлось-таки читать и datasheet.
ArturKu. Если модуль, то I2C сканер должен определить два адреса. К примеру: 0x57 адрес EEPROM, 0x68 адрес ds3231. И посмотрите тут, мне помогло "стартануть", но в итоге пришлось-таки читать и datasheet.
Тогда понятно - у меня только один адрес видит.
Я как раз, пока жене блок питания делал, хотел спросить про кол-во адресов...
Получается, что сама микруха битая... Надо попробовать отпаять и припаять снова.
Перепаял. Ничего не изменилось... Жаль.
Прозвоните выводы DS3231 (SCL и SDA) до подтягивающих резисторов и пинов, к которым подключаетесь.
Feofan
Первым делом. Всё доходит, всё подтягивается. 3231 даже на выход что-то выдаёт...
Но адрес часов, УВЫ...
Ну тады ой...
Я тут как-то I2C модули, расчитанные на 5V, подключал к Sonoff TH16. А из него питание 3.3V лезет. Вот там тоже чудеса происходят - сканер правильно работает, а дальше - то модуль перестает отвечать, то просто Wire подвисает.
И куда лезет?
Ну, куда... На LDO модуля. И на нём, как я понимаю, неприлично падает, вызывая спецэффекты. Те сенсоры, которым 1.8V хватает для работы, SGP-30 например, - тащат, а вот тот же BMP280 в 5V версии - нет.
Вроде понял.
Кстати, по поводу "лишнего" диода. Если модуль питать от 3.3В, то его можно не убирать.
Обычно сначала проверяют в "штатном" включении, а затем уже что то выпаивают...
Обычно сначала проверяют в "штатном" включении, а затем уже что то выпаивают...
мы русские так не можем...
PS вспоминаю свою работу по ремонту станков, открываю блок, там понахерачено...сначала день потребовался восстановить по оригиналу, потом час поиск неисправности, потом день, пока снабженцы комплектующие нашли, то, что надо, а ни лишь бы начальные цифры совпадали, перед эти станок ломался каждые два дня, сделал, за 8 лет не поломался, а потом я ушёл в одну контору с WDRAKULA отчёты готовить )))
Green
Так и было. Сперва не запустился. Потом полез искать советы - наткнулся на идею с диодом - проверил ДА, выпаял.
Когда уже ковырялся и окончательно пришел к выводу о "трупике", от скуки стал измерять и пришёл к указанному выводу.
Ура! Пришли 3231, перепаял и теперь вижу 2 адреса 0х58 и 0х57!!!
Ух же-ж я её!
Интересно, на Выход 32768 она выдаёт частоту только после настройки хоть какого то времени?
А если плюнуть вверх, что будет? Интересно.
Green, не поверишь, но с большой долей вероятности упадёт обратно. ;-)
Законы Ньютона, мать их! Ну никак не нарушить...
А мануал что пишет?
nik182, а он, гад, посылает с вопросами к Господу Богу. А остальное чуток выше озвучено...
nik182, а он, гад, посылает с вопросами к Господу Богу. А остальное чуток выше озвучено...
Так в даташите вроде все написано
Status Register (0Fh)
Bit 3: Enable 32kHz Output (EN32kHz). This bit controls the status of the 32kHz pin. When set to logic 1, the 32kHz pin is enabled and outputs a 32.768kHz squarewave signal. When set to logic 0, the 32kHz pin goes to a high-impedance state. The initial power-up state of this bit is logic 1, and a 32.768kHz square-wave signal appears at the 32kHz pin after a power source is applied to the DS3231 (if the oscillator is running).
То бишь при подаче питания в бите 3 регистра 0Fh записана 1 и на вывод подается 32kHz , вы можете записать туда 0 тогда выход переведется в high-impedance state.
Но есть условие осцилятор должен работать, по умолчанию осцилятор работает всегда от внешнегго питания, и от батарейного питания, но вы можете поменять бит 7 регистра 0Eh и при батарейном питании отключить осцилятор.
Как резюме, если подали питание то на выводе 1 чипа (в корпусе с 16ю ногами) будет 32kHz, но что там ваша библиотека делает по умолчанию я не знаю.
Andrey12, спасибо. А как можно без библиотек общаться с контроллером и, особенно, с памятью? Она же не просто так стоит, наверное?
Хотелось бы именно без библиотек.
П.С. Я, пока - тормоз, на старости лет вспоминать... Да и мозг уже не так гибок. Комплексы, однако...
И, если мне память не изменяет, там открытый коллектор. Без внешнего резистора сигнал не получить.
Без библиотек - писать и читать байты из памяти мс по i2c. В мануале расписано где что.
Andrey12, спасибо. А как можно без библиотек общаться с контроллером и, особенно, с памятью? Она же не просто так стоит, наверное?
Хотелось бы именно без библиотек.
П.С. Я, пока - тормоз, на старости лет вспоминать... Да и мозг уже не так гибок. Комплексы, однако...
Память никакого отношения к часам не имеет, можно вообще выпаять. DS3231 самодостаточная микросхема.
А как работать nik182 написал, но только не просто все это, работа с каждым I2C устройством у меня как с чистого листа начинается.
Просто смотря что вам от модуля надо, я например не использую будильники, прерываение, 32кГц. Только установка и получение даты/времени. Мне хватает, но все через библиотеку, зачем усложнять код программы?
Не измеряет память и про это написано в даташите. Но на модуле они обычно уже стоят. Хотя чтоб быть на 146% уверенным надо видеть модуль.
Любителям точности: https://www.rlocman.ru/news/new.html?di=632969