Здравствуйте. Совсем замучался уже. Может кто подскажет в чем дело.
Подключил DS1307 как в даташите. Батарейка 3,3 В. Питание 5 В. Резисторы 4,7 кОм (к +5В) на линии SCL и SDA. Вывод OUT висит в воздухе. Корпус кварца к земле не подключал.
Купил в магазине кварц (тонкий) 32768 Гц. Подключил, записываю время.
Включаю часы:
Код: Выделить всё
rtc_init (0,0,0);
rtc_set_date(26,03,11);
rtc_set_time(10,54,15);
DS1307_on ();
Код: Выделить всё
void DS1307_on () {
unsigned char tmp;
tmp = rtc_read(0x00);
tmp &=~(1<<7);
rtc_write(0x00, tmp); //включение DS1307, бит 7 ноль
tmp = rtc_read(0x02);
tmp &=~(1<<6);
rtc_write(0x02, tmp); // бит 6 ноль - 24ох часовой режим
}
Вывожу на дисплей. Показывается установленное время. Но часы не идут. Стоят. Думаю ладно, наверное кварц левый. Нашел у себя старые часы электронные, достал оттуда кварц (толстенький). Подключил часы пошли. Всё нормально. Через 2 дня попалась под руку старая материнка. Снял с неё кварц. Думаю, точнее будет, чем в часах. Припаял. Часы стоят. Ладно, думаю, может дохлый. Вернул назад часовой. Часы стоят. Выругался. Начал промывать плату. Проверять нет ли соплей. Всё нормально. Касаюсь щупами осциллографа ножек кварца. Время увеличивается на 1 секунду. Убираешь, касаешься опять, ещё на 1 сек. время увеличивается. Пробовал между выводами кварца прикладывать кондер на 270 пФ. Реакции нет. Это что за чудеса???
Нельзя всё знать, достаточно понимать.