Перейти к содержанию
    

RTC DS3231: сбивается время

Я бы - в "проблемную" конструкцию попробовал бы поставить другой RTC (ну, скажем, M41T00), а DS3231 - переставить на макетку, где хост будет время от времени включаться и читать (только регистры собственно времени), причем переписав самому, явно, всю работу с i2c. Там всего-то ничего писанины, если что. DS3231 с ali контрафакт - несомненно (хотя бы исходя из цены), но вряд ли они от того стали глючнее. Начинка-то все равно родная, тут уж не перемаркируешь в китайском стиле, разве что исходно заводской брак. IMHO, дело все ж в нештатном выполнении записи в регистры при включении. 

А можно да, и сниффер (только не городить самому огород, а готовым saleae воспользоваться) на шину подвесить, и запускать перед каждым включением. Как сбилось при очередном включении, так и начинаем вдумчиво рассматривать диаграмму. Но это дольше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 часов назад, Herz сказал:

Но он примитивен. Вот, давайте я выложу его и Вы сами убедитесь - нечему там глючить...

Мне не нужно. Так как там наверняка на поверхностный взгляд ничего не увидишь. Чтобы найти ваш баг, скорей всего нужно тщательно изучить доку на DS3231, на ваш МК и весь проект в целом. А "с наскока" вряд-ли что найдётся.

Возможно дело в каких времянках, временных соотношениях выполнения чего-то. Или во взаимодействии кода работы с DS3231 с каким-то другим кодом. Или ещё в чём-то подобном. Что "с наскока" не найти.

Я вам уже советовал - подёргать питание туда-сюда многократно. С этого думаю лучше начать.

 

16 часов назад, Herz сказал:

И не надо про "помойки". Это, конечно, всегда верно: то, что сделано самим - великолепно. А чужое - по определению написано задней пяткой...

Дело не в "свой/чужой", а в том что нынешние начинающие постоянно ищут чужие примеры, потому как сами не умеют/ленятся разбираться и изучать. Потому что так им кажется быстрее/проще. И когда что-то вдруг заработает, сразу хочется этим похвастаться. Перед такими же чайниками. Они видят, что другие так делают - выкладывают свои "творения", и сами стараются "поделиться" как что-то хотя бы у них заработает.

Но чем больше начинаешь "шарить" в теме, тем меньше тебе могут помочь "примеры из инета", тем меньше ты их ищешь и вообще обращаешь внимание. Ведь уже сам умеешь писать код. И чем опытнее становишься, тем больше видишь недостатков в этих "примерах из инета". И тебе уже совершенно не хочется что-то выкладывать куда-то. Зачем??? Для кого? Для тебя это уже не интересно. Да и большинство тех кто будет скачивать твой код - чайники, которые просто не поймут большую часть написанного. Они опять же предпочтут твоему хорошо написанному оптимальному коду, какой-нить быдлокод такого же начинающего как они. Потому что он им понятнее. А профессионалам твой код мало интересен, потому как "сами умеют" и потому как "задачи у всех немного разные, и для какого-то проекта оптимальнее сделать так, а для другого проекта - оптимальнее иначе".

Вы посмотрите на то, что тут выкладывают начинающие в качестве своего кода. Ну там же - голимый быдлокод! Вся работа с периферией - в стиле суперлупа, на задержках, поллинге и т.п. Т.е. - самым примитивнейшим образом. С кучей шаблонных ошибок/неоптимальностей, которые кочуют из одного такого кода в другой. Естественно я например так никогда не пишу. Но если я вдруг выложу куда-то свой драйвер SPI (например) из текущего проекта, кто сможет в нём разобраться? Ведь он кратно сложнее таких чайниковских портянок. Естественно чайники предпочтут скачать и разбираться в коде такого же чайника как они сами, потому как он им понятнее.

Да и просто - чайников гораздо больше чем профессионалов. Потому если кто-то из профи и выкладывает свои исходники, то они просто потеряются на фоне общей помойки.

Вы почитайте хотя-бы посты чайников на нашем форуме. Которые приходят сюда с какой-нить примитивной проблемой. Как только они её решают, многие тут же пишут - "заработало, выкладываю результат, вдруг кому-то тоже поможет". И вываливают это "творение". Каждый 2-й так делает. Вот так и образуется помойка.  :unknw:

И профи обычно уже где-то работают по специальности и соответственно - пишут проприетарный код. Который просто нельзя выкладывать, даже если хочется.

 

Потому да - "чужое - по определению написано задней пяткой", потому как это скорее всего (на ~99%) чайниковский код.

Даже если брать примеры всяких драйверов от производителей чего-то (компиляторов, или каких-то чипов), то они тоже рассчитаны на начинающих. Чтоб им понятно было. Потому как профи и так разберутся (обычно и без примеров). Потому и примеры эти (все эти кубы и пр. ардуины) написаны как попроще, попонятнее для читателей. А не как оптимальнее с точки зрения выполнения. Профи не будет брать и тащить эти примеры "как есть" к себе в проект, он если нужно - посмотрит по ним неясные моменты в работе какой-то периферии (которые не совсем понятны из мануала), а потом напишет свой код сам. Чайники же эти примеры тащат к себе "как есть" (только добавляя в него своих костылей). Потому и примеры эти тоже - "написаны задней пяткой", с точки зрения оптимальности выполнения. А потом ещё и "делятся" этим.

5 минут назад, rx3apf сказал:

А можно да, и сниффер (только не городить самому огород, а готовым saleae воспользоваться) на шину подвесить, и запускать перед каждым включением. Как сбилось при очередном включении, так и начинаем вдумчиво рассматривать диаграмму. Но это дольше.

Это будет очень долго. Если там редкие, непериодические сбои.

Если бы такое было у меня, я бы исключил влияние другого кода (может даже сделал бы тестовый проект, где было бы только чтение часов и больше ничего). И подёргал бы питание такого устройства многократно. Ну и код, естественно, писал бы сам. Это - в первую очередь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

55 минут назад, jcxz сказал:

Я вам уже советовал - подёргать питание туда-сюда многократно. С этого думаю лучше начать.

Даже можно просто поресетить МК, если там кривая инициализация портов или I2C, то выплывет почти сразу, можно еще один метод попробовать, например линию клока и данных  вывести на переключатель, и включать его немного подождав после подачи питания на схему, если не будет сбиваться копать ПО до "центра земли"...

Как-то раз принесли прогу "напотестить", была на DS1307, тоже периодически сбивалась, проблема была в том, что за каким-то чертом часы инициализировали даже тогда, когда было все установлено, не анализируя бит сброса, ну и через раз там все и "инициализировалось" заново))))

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После десятилетий разного рода боданий и мытарств с RTCC и часовыми кварцами, я стал использовать RTCC со встроенным кристаллом. "Там если щупаешь, то знаешь - маешь вещь" (с)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

DS3231 тоже со встроенным. Только здоровенный (относительно).

 

2ТС - так все же, чем дело-то кончилось или как ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, rx3apf сказал:

2ТС - так все же, чем дело-то кончилось или как ?

Надеюсь, что кончилось (тьфу-тьфу) - на обеих экземплярах сбоев больше не было. Помогли конденсаторы, добавленные параллельно батарейкам, как и советовал Plain.

Похоже, дело именно в том, что батарейка обычная, не под пайку, и контакт таки нарушался, как бы ни было всё чисто и надёжно прижато.

Авторы этот момент упустили, к сожалению.

5 часов назад, rx3apf сказал:

Только здоровенный (относительно).

Да, видимо кварц не помещался :) Ибо ног там используется только половина.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Цитата

 сейчас 14-ый, а число не 19-е, а 16-е. Как такое может быть?

 

Решили проблему - хорошо.

Года 3,5 назад эти часы, тоже с алика, выдали чудо - пропало воскресение. Это было примерно после двух месяцев работы. Регистр, который считает день недели начал выдавать: 1-2-3-4-5-6-?-1  Но вот, что он выдавал вместо семерки уже не вспомню, но в программе было - если =7, то выводим Воскресение, а если нет семерки, то ничего. Точнее этот кусок я и не протестировал, даже в мыслях не было, но на экране Воскресения не было.

Заморачиваться не стал, поставил другую, благо купил несколько штук. Работают до сих пор.

Что они там мутят в сарай свое деревушки СуньВынь одному богу известно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 часов назад, Vlad_G сказал:

Что они там мутят в сарай свое деревушки СуньВынь одному богу известно.

Так и есть, год назад была проблема с МК атмега 324. Вроде камень, как камень, прошивается, идшники правильные, все модули работают за одной "мелочью", одна ножка порта на вывод работала инверсно!!!  Вот как такое может получится? Записываю 0 на выходе 5В, 1 - на выходе 0. При чтении ее на вход, все норм. Как положено подумал сначала на ПО, но во-первых оно уже оттестировалось на 3 сотнях таких же МК и все норм, но решил проверить, сделал прогу, которая просто конфигурирует 2 порта на вывод и передает меандр с частотой 1Гц, одновременно на 2 порта, так вот у других все идет синхронно, а у этого нет)))  Уж думал оставить этот экземпляр, как непонятный экспонат, но та нога, которая инвертировала была выведена на светодиод, который просто должен мигать, когда есть обмен по уарту, и ни на что не влияет, поэтому протестировал весь функционал и отдал в работу... Вот такие чудеса бывают...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Arlleex сказал:

А покупали где?

Честно не скажу, я снабжением не занимаюсь, в основном элитан, но когда там нет или сроки большие, то местные радиомагазины...

Пару раз брали в ЧиДе.

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...