Датчики
Микросхема часов реального времени PCF8583
Микросхема PCF8583 выполняет функции часов реального времени, таймера, счетчика событий и статического ОЗУ емкостью 240 байт. Для передачи данных используется шина I2C. Микросхема изготавливается в 8-ми выводном корпусе.
Назначение выводов
OSC1 – вход внешнего генератора 32768Гц.
OSC2 - выход генератора.
A0 – Линия выбора адреса
Vss – общий провод питания
SDA – линия данных шины I2C
SCL – линия тактового сигнала шины I2C
INT – выход прерывания для внешнего устройства. Требует подключения подтягивающего резистора.
Vdd– линия питания
Схема распределения памяти
Фактически микросхема PCF8583 представляет собой статическое ОЗУ, емкостью 256 байт, у которого первые 16 байт являются регистрами специального назначения. Назначение некоторых регистров зависит от режима работы микросхемы. Режим задается в регистре состояния имеющем адрес 00h. Все числа в регистрах часов по умолчанию хранятся в BCD формате.
Адрес |
Описание | |
---|---|---|
00h |
Регистр состояния |
|
01h |
Доли секунд |
|
1/10с |
1/100с |
|
02h |
Секунды |
|
10с |
1с |
|
03h |
Минуты |
|
10мин |
1мин |
|
04h |
Часы |
|
10ч |
1ч |
|
05h |
Дата |
|
10дн |
1д |
|
06h |
Месяц |
|
10мес |
1мес |
|
07h |
Таймер |
|
10дн |
1д |
|
08h |
Регистр тревог |
|
09h |
Тревога. Доли секунд |
|
1/10с |
1/100с |
|
0Ah |
Тревога. Секунды |
|
10с |
1с |
|
0Bh |
Тревога. Минуты |
|
10мин |
1мин |
|
0Ch |
Тревога. Часы |
|
10ч |
1ч |
|
0Dh |
Тревога.Дата |
|
0Eh |
Тревога. Месяцы |
|
0Fh |
Таймер тревоги |
|
10h…FFh |
Статическое ОЗУ |
Регистр состояния
Регистр состояния содержит биты задания режимов работы микросхемы и флаги.
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
---|---|---|---|---|---|---|---|
SC |
HLC |
CM1 |
CM0 |
Mask |
Alarm |
FT1 |
FT0 |
- FT0 – флаг Timer. Если бит Alarm установлен в 0, данный бит переключается с частотой 1 Гц.
- FT1 – флаг Timer. Если бит Alarm установлен в 0, данный бит переключается с частотой ½ мин.
- Alarm – бит разрешения режима «тревога» ( 0 - запрещен, 1 – разрешен)
- Mask – при установке 1 позволяет считывать значения даты и месяца (05h,06h) в виде числа, а не в BCD формате.
- CM1, CM0 – биты установки режима. 00 – часы с входной частотой 32768Гц, 01 – часы с входной частотой 50Гц, 10 – счетчик событий, 11 – режим тестирования.
- HLC –
- SC – флаг останова счета (0 – счет идет, 1 – счет остановлен по условию)
Режим часов (Clock mode)
Режим часов устанавливается путем записи 00b или 01b в биты 4,5 регистра состояния.
В данном режиме микросхема осуществляет счет импульсов от тактового генератора и на основе этих данных вычисляет время и дату. Значения заносятся в регистры 01h-07h в двоично-десятичном формате. Старший полубайт отвечает за десятки, а младший за единицы. При чтении данных в регистрах 05h,06h рекомендуется устанавливать флаг mask. Это позволяет читать дату и месяц, не проводя дополнительных вычислений. Все регистры доступны на чтение и запись. Это позволяет установить текущее время, просто записав нужное значение в соответствующий регистр.
В режиме часов имеются некоторые особенности работы регистров 04h-05h.
Регистр Часов (04h)
Начальная установка после сброса – 00000000b
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
---|---|---|---|---|---|---|---|
HM |
AM/PM |
DH1 |
DH0 |
H3 |
H2 |
H1 |
H0 |
- H0-H3 – единицы часов в BCD формате
- DH0-DH1 – десятки часов
- AM/PM – флаг до и после полудня.
- HM – режим работы регистра часов (0 – 24-часовой формат AM/PM не задействован, 1 – 12-часовой формат с установкой флага AM/PM).
Регистр Дата (05h)
Начальная установка после сброса – 00000001b
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
---|---|---|---|---|---|---|---|
Y1 |
Y0 |
DD1 |
DD0 |
D3 |
D2 |
D1 |
D0 |
- D0-D3 – единицы дней в BCD формате
- DD0-DD1 – десятки дней
- Y0-Y1 – год. В случае установки флага Mask данные биты читаются как 0
Регистр Месяц (06h)
Начальная установка после сброса – 00000001b
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
---|---|---|---|---|---|---|---|
W2 |
W1 |
W0 |
DM0 |
M3 |
M2 |
M1 |
M0 |
- M0-M3 – единицы номера месяца в BCD формате
- DM0 – десятки номера месяца
- W0-W2 – номер недели в месяце. В случае установки флага Mask данные биты читаются как 0
В режиме часов можно запустить таймер (07h). Он включается, если в регистре состояния записывается комбинация ХХ0Х Х1ХХb. Таймер имеет диапазон счета от 0 до 99. В случае переполнения таймера устанавливается флаг Timer в регистре состояния. Сброс этого флага осуществляется программно, путем обнуления соответствующих битов. Выбор функции счета таймера выполняется в регистре тревог - Alarm Control (08h). В этом же регистре возможно подключить выход таймера к выводу INT микросхемы.
Режим Alarm
Микросхема PCF8583 имеет возможность генерировать сигнал события (прерывания) при совпадении значений в счетных регистрах и регистрах alarm. При генерации сигнала могут учитываться не все регистры. Например, при ежедневном сигнале игнорируются значения, находящиеся в регистрах Тревога.Дата, Тревога.Месяцы.
Регистр Alarm Control (08h)
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
---|---|---|---|---|---|---|---|
IntA |
AT |
A1 |
A0 |
IntT |
T2 |
T1 |
T0 |
- T0-T2 – функции таймера
000 – без таймера
001 – десятки и сотни секунд
010 – секунды
011 – минуты
100 – часы
101 – дни
110 – не используется
111 – тестовый сигнал на всех интервалах
- IntT – прерывание от таймера (0 - нет, 1 - есть)
- A0-A1 – функция alarm (00 – нет, 01 – ежедневный alarm, 10 – еженедельный alarm, 11 – alarm по дате).
- AT – alarm по таймеру (0 - выкл, 1 - вкл)
- IntA - прерывание по режиму alarm (0 – нет, 1 – есть)