Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
evgenij-byvshev
8 лет назад

Программирование микроконтроллеров. Часть 12-1

Часы реального времени DS1307

  И снова здравствуйте! Продолжу занятия по программированию МК AVR. Сегодня я расскажу про микросхему DS1307. Эта микросхема представляет собой часы реального времени (real time clock или RTC) с последовательным интерфейсом.

  Это малопотребляющие полные двоично-десятичные часы-календарь, включающие 56 байтов энергонезависимой статической ОЗУ. Адреса и данные передаются последовательно по двухпроводной двунаправленной шине. Часы- календарь отсчитывают секунды, минуты, часы, день, дату, месяц и год. Последняя дата месяца автоматически корректируется для месяцев с количеством дней меньше 31, включая коррекцию високосного года. Часы работают как в 24-часовом, так и в 12-часовом режимах с индикатором AM/PM. DS1307 имеет встроенную схему наблюдения за питанием, которая обнаруживает перебои питания и автоматически переключается на питание от батареи.

Характеристики

  • часы реального времени (RTC) отсчитывают секунды, минуты, часы, дату месяца, месяц, день недели и год с компенсацией високосного года, действительной до 2100 года;
  • 56-байтовое энергонезависимое ОЗУ с питанием от батареи для хранения пользовательских данных;
  • двухпроводной последовательный интерфейс;
  • программируемый выходной сигнал с прямоугольными импульсами (для тактирования внешних устройств);
  • автоматическое обнаружение падения напряжение и схема переключения на батарею;
  • потребление менее 500 нА в режиме батарейной поддержки при работающем тактовом генераторе;
  • промышленный диапазон температур: от – 40 °C до + 85 °C;
  • микросхема производится в 8-выводных корпусах DIP и SOIC.



А выглядит она так:




Назначение выводов

Vcc, GND – на эти выводы подается питание.
Vcc – это вход +5 В. Когда питающее напряжение выше 1.25 * VBAT, устройство полностью доступно, и можно выполнять чтение и запись данных. Когда к устройству подключена батарея на 3 В, и Vcc ниже, чем 1.25 *
VBAT, чтение и запись запрещены, однако функция отсчёта времени продолжает работать. Как только Vcc падает ниже VBAT, ОЗУ и RTC переключаются на батарейное питание VBAT. VBAT – вход для любой стандартной трёхвольтовой литиевой батареи или другого источника энергии. Для нормальной работы DS1307 необходимо, чтобы напряжение батареи было в диапазоне 2.0 ... 3.5 В. Литиевая батарея с ёмкостью 48 мА/ч или более при отсутствии питания будет поддерживать DS1307 в течение более 10 лет при температуре 25°C.
SCL (Serial Clock Input - вход последовательных синхроимпульсов) – используется для синхронизации данных по последовательному интерфейсу.
SDA (Serial Data Input/Output - вход/выход последовательных данных) – вывод входа/выхода для двухпроводного последовательного интерфейса. Вывод SDA – с открытым стоком и требует внешнего подтягивающего резистора.
SQW/OUT (Square Wave/Output Driver - сигнал с прямоугольными импульсами) – когда включен, т.е. бит SQWE установлен в 1, вывод SQW/OUT выдаёт прямоугольные импульсы с одной из четырёх частот (1 Гц, 4 кГц, 8 кГц, 32 кГц). Вывод SQW/OUT – с открытым стоком и требует внешнего подтягивающего резистора. SQW/OUT будет работать как при питании от Vcc, так и при питании от VBAT.
X1, X2 – выводы для стандартного кварцевого резонатора с частотой 32.768 кГц. Схема внутреннего тактового генератора разработана для работы с кварцевым резонатором, имеющим входную ёмкость 12.5 пФ.


Типовая схема включения:

  DS1307 на последовательной шине работает как ведомое устройство. Доступ к нему достигается установкой условия START и передачей устройству идентификационного кода, за которым следует адрес регистра. К следующим за ним регистрам доступ осуществляется последовательно, пока не будет выполнено условие STOP.

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

  Часы и календарь Информация от часов и календаря получается чтением соответствующих байтов регистра. Время и календарь устанавливаются или инициализируются записью соответствующих байтов регистра. Содержимое регистров времени и календаря имеет двоично- десятичный формат. Бит 7 регистра 0 – это бит останова часов (clock halt - CH). Когда этот бит установлен в 1, тактовый генератор выключен. Когда сброшен в 0, - тактовый генератор включен.

  Имейте в виду, что при включении питания начальное состояние всех регистров не определено. Поэтому необходимо принудительно включать тактовый генератор (бит CH = 0) во время начальной инициализации.

  DS1307 может работать и в 12-часовом, и в 24-часовом режимах. Бит 6 регистра часов отвечает за выбор 12- или 24-часового режима. Когда он установлен в 1, выбран 12-часовой режим. В этом режиме бит 5 – это бит AM/PM, при этом высокий логический уровень означает PM. В 24-часовом режиме бит 5 – это бит второго десятка часов (20 – 23 часа).

  При появлении на двухпроводной шине условия START, текущее время копируется во второй набор регистров. Информация о времени читается из этих вспомогательных регистров, в то время как часы могут продолжать работать. Это устраняет необходимость перечитывать регистры DS1307 в случае обновления их содержимого во время чтения.

Регистры RTC:




Управляющий регистр:

OUT (Output control - управление выходом) – этот бит управляет логическим уровнем на выводе SQW/OUT, когда выход сигнала с прямоугольными импульсами отключен. Если SQWE = 0, то логический уровень на выводе SQW/OUT равен 1, если OUT = 1, и 0, если OUT = 0.

SQWE (Square Wave Enable - включение сигнала с прямоугольными импульсами) – когда этот бит установлен в 1, включается генерация прямоугольных импульсов. Их частота зависит от значения битов RS0 и RS1. (Если частота выходного сигнала установлена в 1Гц, регистры часов обновляются по заднему фронту этих импульсов).

RS (Rate Select - выбор частоты) – эти биты управляют частотой прямоугольных импульсов, когда бит SQWE=1.

  DS1307 поддерживает обмен данными по протоколу I2C по двухпроводной двунаправленной шине. Устройство, которое передаёт данные на шину, является передатчиком, а устройство, принимающее данные, - приёмником. Устройство, управляющее передачей данных, называется ведущим. Устройство, которым управляет ведущий, называется ведомым. Ведущее устройство генерирует синхроимпульсы (serial clock - SCL), управляет доступом к шине и генерирует условия START и STOP. DS1307 работает на шине как ведомое устройство.

В следующей части я покажу как можно подключить эту микросхему к микроконтроллеру ATMEGA8 и собрать часы.

Если есть вопросы и предложения по этому уроку, пишите комментарии буду рад ответить на ваши вопросы.


Часть 1
Часть 2-1 Часть 2-2
Часть 3-1 Часть 3-2
Часть 4-1 Часть 4-2
Часть 5
Часть 6-1 Часть 6-2
Часть 7
Часть 8-1 Часть 8-2
Часть 9
Часть 10
Часть 11-1 Часть 11-2

10
255.545 GOLOS
На Golos с February 2017
Комментарии (1)
Сортировать по:
Сначала старые