Казалось бы, чип выпускается 25 лет, уже обсосан донельзя. И тем не менее.
Прикупил 3 шт. в Чип-Дипе. В программе пишу принудительную установку в состояние: часы=минуты=секунды=0; дата=день недели=месяц=год=1. (хотя, изначально надеялся на сброс при включении). И запускаю чтение времени, типа часы-секундомер. Все три микросхемы работают так:
0. Чтение из микросхемы происходит отлично.
1. Никто не выдаёт сигнал на Clcout, несмотря на включение по умолчанию и/или принудительное включение.
2. При включении часы-минуты-секунды-дата принимают произвольные значения (остальные регистры не проверял). Причем принудительная установка им до лампочки. По шине I2C сигнал проходит как на параде, АСК часы выдают. На их месте до этого работала память - всё работает.
3. В каждой микросхеме изначально устанавливаются свои произвольные значения информационных регистров, каждый раз одинаковые для данной микросхемы.
4. Причём в одной микросхеме изначальная календарная дата = 33, в другой минуты = 64, а в третей часы = 2F.
5. Счётчики работают нормально, и после прихода соответствующего импульса, показания становятся правдоподобными. Минуты после 64 становятся 00, часы после 2F становятся 00, дата после 33 становится 01.
И чё это может быть?
----------------------------------------------------------
Проблема решилась. Пишу, чтобы никто больше не наступил на такие грабли.
Микросхема имеет задержку включения. Смысл задержки – дать кварцевому генератору разогнаться и выйти на режим. Это нужно потому, что в генераторе глубина ПОС очень маленькая, чтобы кварц работал фактически на синусоиде – тогда его частота наиболее точная и стабильная. Для этого в микросхеме есть два (!) датчика напряжения:
1. Датчик напряжения питания. Он ещё используется для отслеживания сбоев по питанию.
2. Датчик выходного напряжения (переменного тока) генератора.
Итак, в паспорте прописано, что при включении питания микросхема находится в состоянии сброса. Это значит, что она не реагирует на попытки обмена информацией по шине I2C, чтобы пока генератор не раскочегарится и не станет работать наиболее правильно, не дать записать в микросхему время и не получить неправильную работу часов в первую секунду полёта. Это называется у них Internal Reset. Этот сброс никак не влияет на регистры микросхемы, регистры сбрасывает в Default другой сброс.
Информационные регистры (часы, минуты, секунды и т.п.) микросхемы не очищаются при включении питания! Там исходно находится мусор. Наверное это сделано потому, что всё равно после включения в информационные регистры надо записать правильное время.
Задержка происходит так: пока амплитуда генератора не установится на максимум (и некоторое время побудет неизменной, чтобы было понятно, что дальше она не растёт), микросхема не реагирует на команды по шине I2C и не выдаёт прямоугольный сигнал на специальный вывод. После разгона генератора всё нормально работает. Время разгона неизвестно – зависит от применяемого кристалла кварца и ёмкостей схемы.
В чём была проблема. Я где-то прочитал, что время старта генератора составляет 120…150 миллисекунд. Поэтому в программе сделал задержку в 300 мс (с двухкратным запасом). Не работает. Удвоил задержку до 600 мс (600 миллисекунд, Карл! Некоторые за это время два раза успевают!). Не работает. Купил у другого поставщика микросхемы в корпусе DIP-8 (явно, что из другой партии). Заработало. Стал разбираться. В корпусе DIP микросхема стартует через 500 мс. А те, что я использовал первыми стартовали через 720 миллисекунд!!! Кто бы мог подумать! Такой долгий старт был вызван тем, что микросхемы в корпусе SOIC-8 были припаяны к DIP переходнику, а тот в свою очередь был вставлен в цанговую макетную плату (белую) – но качественную. И кварц в SMD корпусе 1206, напаянный на ножки разъёма, тоже был вставлен в плату. В те же ламели, без проводов.
Я перепаял всё это дело – из переходника я удалил два вывода, которые должны были идти на кварц, и прямо на контакты этих выводов напаял кварц. Т.е. кварц подключён непосредственно к микросхеме на малом расстоянии. И больше ни к чему не подключён (корректирующий конденсатор я пока не использую). Время старта снизилось до 320 миллисекунд.
Социальные закладки