enq писал(а):Проблема: DS1307 считает время только при отключенном основном питании. При работе в активном режиме - все команды и ответы проходят, время переводится, но часы стоят. Перешел на батарею - пошли. Подал основное - остановились. Дело наверно в питании, но что с ним может быть не так?
Такого быть не должно. DS1307 я купил давно, но пока так руки до неё и не дошли. У меня бытовые часы, календарь (PCF8582) и два термометра (DS1620) все на одной шине I²C работали с МК КР1878ВЕ1. Никаких сюрпризов при этом не было.
Проверьте программу, чтобы в ней без надобности не дёргались линии портов МК используемых для SDA и SCL I²C, и чтобы они в неактивном состоянии имели высокие уровни.
Основное питание и питание генератора хода часов надо развязать диодом и резистором, через которые будет подзаряжаться ионистор/аккумулятор при наличии основного питания, а диод будет предотвращать разряд ионистора всей схемой устройства.
Gudd-Head писал(а):Коли микра работает с I²С на скоростях до 400 кГц, у неё наверняка есть встроенный генератор. Не верю я в ФАПЧ от 32-х кГц.
Хотя в ДШ про это ни слова

Фи!
Ну и зачем для шины I²C генератор именно 400 кГц, да ещё и с ФАПЧ? Частота шины тактирования SCL может быть от >0 Гц до предельной 0.4-1МГц. Её на шине задаёт мастер, и он же может затягивать циклы тактирования по своей инициативе даже в одном цикле обмена, приостанавливая обмен, хоть на неделю. При возобновлении тактирования продолжается обмен. Поэтому этим свойством шины I²C можно активно пользоваться при разработке программ использующих прерывания в других подпрограммах. Единственно надо следить, чтобы в это время не плясали уровни на выводах портов назначенных в качестве SDA и SCL. Иначе мастер должен снова сформировать старт-условие и начинать обмен заново.