Исправление ошибки компиляции

This commit is contained in:
IoT Manager
2023-10-23 01:09:18 +02:00
parent a5636d3461
commit 70973cae19
32 changed files with 2161 additions and 277 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,196 @@
Модуль часов реального времени RX-8025 SA/NB:
НАЗНАЧЕНИЕ ВЫВОДОВ:
+-------+-----+----------------------------------------------------------------------------------------------------------------------------------------------+
| Вывод | I/O | Назначение: |
+-------+-----+----------------------------------------------------------------------------------------------------------------------------------------------+
| SCL | I | Линия тактирования шины I2C. |
| SDA | I/O | Линия данных шины I2C. |
+-------+-----+----------------------------------------------------------------------------------------------------------------------------------------------+
| FOUT | O | Выход тактового сигнала (32,768 кГц), работает при наличии 1 на выводе FOE. Если на FOE уровень 0 или OPEN, то FOUT=0. |
| FOE | I | Вход управления выводом FOUT. Если FOE=1 то FOUT=32.768кГц. Если FOE=0 то FOUT=0. Вывод FOE толерантен к 5.5В, он внутрисхемно прижат к GND. |
+-------+-----+----------------------------------------------------------------------------------------------------------------------------------------------+
| /INTA | O | N-канальный выходом с открытым стоком, предназначен для вывода прерываний будильника Alarm_D и периодических прерываний. |
| /INTB | O | N-канальный выходом с открытым стоком, предназначен для вывода прерываний будильника Alarm_W. |
+-------+-----+----------------------------------------------------------------------------------------------------------------------------------------------+
| TEST | | Вывод используется производителем для тестирования. Обязательно подключите к Vcc. |
| VDD | | Vcc от +1.7В до +5.5В, номинально 3.0В. |
| GND | | GND. |
| N.C. | | На чипе RX-8025NB контакты N.C. соеденены друг с другом. Оставьте их неподключёнными или подключите все к Vcc или все к GND. |
+-------+-----+----------------------------------------------------------------------------------------------------------------------------------------------+
ЛОГИЧЕСКИЕ УРОВНИ:
Vin 0 = 0В...0,2Vcc
Vin 1 = 0,8Vcc...5,5В
ФУНКЦИИ МОДУЛЯ:
1) ТЕКУЩЕЕ ВРЕМЯ:
Модуль позволяет устанавливать, синхронизировать и отображать данные, включая год (последние две цифры), месяц, дату, день, час, минуту и ​​секунду.
Любой (двузначный) год, кратный 4, считается високосным и рассчитывается автоматически до 2099 года.
2) ФУНКЦИЯ РЕГУЛИРОВКИ ТОЧНОСТИ ЧАСОВ:
Точность часов можно отрегулировать вперед или назад изменив частоту с кварца 32,768 кГц с шагом ±3,05 × 10^6.
Для регулировки требуется записать в регистр Digital Offset знаковое значение в 7-битном двоичном коде (от 62 до +63).
На предделитель часов поступит частота = 32768 Гц - DigitalOffset * 3,05 × 10^6.
Примечание: Можно настроить только точность часов. Настройки не влияют на выходной сигнал 32,768 кГц с вывода FOUT.
3) ФУНКЦИЯ ПЕРИОДИЧЕСКОГО ПРЕРЫВАНИЯ:
В дополнение к функции будильника Alarm_D через вывод /INTA могут выводиться периодические прерывания.
Периодическое прерывание настраивается битами CT2-CT0 регистра Control-1.
При срабатывании прерывания устанавливается флаг CTFG регистра Control-2, а на выводе /INTA устанавливается уровень логического 0.
Сброс флага CTFG освобождает вывод /INTA до следующего прерывания.
Биты CT2-CT0 позволяют выбрать частоту прерываний: 2 Гц (пол секунды), 1 Гц (ежесекундно), 1/60 Гц (ежеминутно), ежечасно или ежемесячно.
4) ФУНКЦИИ БУДИЛЬНИКА:
Модуль оснащен двумя будильниками (Alarm_D и Alarm_W), которые выводят сигнал прерывания (на выводы /INTA, /INTB) при совпадении времени.
• Будильник Alarm_W на основе дня недели, часа и минут, выводит сигнал прерывания через вывод /INTB. Будильник позволяет выбрать несколько деней недели.
Будильник срабатывает если он включён битом WALE регистра Control-1, при совпадении времени будильника с текущим временем.
При срабатывании будильника устанавливается флаг WAFG регистра Control-2, а на выводе /INTB устанавливается уровень логического 0.
Сброс флага WAFG освобождает вывод /INTB до следующего прерывания.
Если для будильника установить текущее время, то он сработает не немедленно, а при следующем совпадении времени.
Для установки нового времени будильника рекомендуется его отключить WALE=0, установить время будильника Alarm_W Minute/Hour/Day, сбросить прерывание будильника WAFG=0, включить будильник WALE=1.
• Будильник Alarm_D использует только часы и минуты, выводит сигнал прерывания через вывод /INTA.
Будильник срабатывает если он включён битом DALE регистра Control-1, при совпадении времени будильника с текущим временем.
При срабатывании будильника устанавливается флаг DAFG регистра Control-2, в на выводе /INTA устанавливается уровень логического 0.
Сброс флага DAFG освобождает вывод /INTA до следующего прерывания.
Если для будильника установить текущее время, то он сработает не немедленно, а при следующем совпадении времени.
Для установки нового времени будильника рекомендуется его отключить DALE=0, установить время будильника Alarm_D Minute/Hour, сбросить прерывание будильника DAFG=0, включить будильник DALE=1.
5) ФУНКЦИЯ ОБНАРУЖЕНИЯ ОСТАНОВКИ КОЛЕБАНИЙ:
При обнаружении остановки колебаний устанавливается флаг /XST регистра Control-2 (активный уровень 0) и остаётся в таком состоянии до его сброва в 1 по шине I2C.
Это позволяет определить, что данные часов стали некорректными.
6) ФУНКЦИЯ ОБНАРУЖЕНИЯ ПАДЕНИЯ МОЩНОСТИ (КОНТРОЛЬ НАПРЯЖЕНИЯ):
При снижении Vcc ниже порогового уровня, устанавливается флаг VDET регистра Control-2 и остаётся в таком состоянии до его перезаписи в 0 по шине I2C.
Выборка напряжения выполняется один раз в секунду.
Пороговый уровень выбирается битом VDSL регистра Control-2, доступны значения 1.3В и 2.1 В.
7) ФУНКЦИЯ ОБНАРУЖЕНИЯ СБРОСА ПРИ ВКЛЮЧЕНИИ ПИТАНИЯ:
При подаче питания происходит сброс регистров в значение по умолчанию и установка флага PON регистра Control-2 в значение 1, это значение остается до его перезаписи в 0 по шине I2C.
Пока флаг PON установлен в 1, все биты регистров Digital-Offset, Control-1 и Control-2 (кроме PON и /XST) сбрасываются в «0». Это также приводит к остановке прерываний на выводах /INTA и /INTB.
Для начала работы необходимо сбросить флаг PON в 0, что перезапустит функцию обнаружения сброса при включении питания.
8) ТАКТОВЫЙ ВЫХОД 32,768 кГц
Тактовая частота 32,768 кГц (с точностью, равной точности встроенного кварцевого генератора) может выводиться через вывод с открытым стоком FOUT.
Вывод FOUT включается подачей 1 на вход FOE. Если на вход FOE подать 0, то и на выходе FOUT будет 0.
9) ИНТЕРФЕЙС
Данные считываются и записываются через интерфейс шины I2C. Максимальная тактовая частота 400 кГц (при Vcc ≥ 1,7 В).
КАРТА РЕГИСТРОВ:
+-------+-------------------+---------------------------------------------------------------------------------------------------+
|Address| Function | 7 6 5 4 3 2 1 0 |
+-------+-------------------+---------------------------------------------------------------------------------------------------+
| 0 | Seconds | (0) S40 S20 S10 S8 S4 S2 S1 |
| 1 | Minutes | (0) M40 M20 M10 M8 M4 M2 M1 |
| 2 | Hours | (0) (0) H20 P,/A H10 H8 H4 H2 H1 |
| 3 | Days | (0) (0) (0) (0) (0) W4 W2 W1 | Так написано в datasheet
| | | (0) Сб Пт Чт Ср Вт Пн Вс | А так на самом деле. И модуль не определяет день недели, а тупо его увеличивает после 23:59:59
| 4 | Days | (0) (0) D20 D10 D8 D4 D2 D1 |
| 5 | Months | «0» (0) (0) MO10 MO8 MO4 MO2 MO1 |
| 6 | Years | Y80 Y40 Y20 Y10 Y8 Y4 Y2 Y1 |
+-------+-------------------+---------------------------------------------------------------------------------------------------+
| 7 | Digital Offset | «0» F6 F5 F4 F3 F2 F1 F0 | Значения по умолчанию (с момента установки бита PON) 00000000
+-------+-------------------+---------------------------------------------------------------------------------------------------+
| 8 | Alarm_W Minute | (0) WM40 WM20 WM10 WM8 WM4 WM2 WM1 |
| 9 | Alarm_W Hour | (0) (0) WH20 WP,/A WH10 WH8 WH4 WH2 WH1 |
| A | Alarm_W Day | (0) WW6 WW5 WW4 WW3 WW2 WW1 WW0 |
| B | Alarm_D Minute | (0) DM40 DM20 DM10 DM8 DM4 DM2 DM1 |
| C | Alarm_D Hour | (0) (0) DH20 DP,/A DH10 DH8 DH4 DH2 DH1 |
+-------+-------------------+---------------------------------------------------------------------------------------------------+
| D | Reserved | - - - - - - - - |
+-------+-------------------+---------------------------------------------------------------------------------------------------+
| E | Control-1 | WALE DALE /12,24 • TEST CT2 CT1 CT0 | Значения по умолчанию (с момента установки бита PON) 00000000
| F | Control-2 | VDSL VDET /XST PON • CTFG WAFG DAFG | Значения по умолчанию (с момента установки бита PON) 00?10000
+-------+-------------------+---------------------------------------------------------------------------------------------------+
Осторожно:
Бит PON Является битом флага сброса при включении питания. Устанавливается в 1, когда происходит сброс, например, при первоначальном включении питания или при восстановлении после падения напряжения питания.
При этом все биты в регистрах Control-1 и Control-2, кроме битов PON и /XST, сбрасываются в 0.
Примечание: Пока бит PON не установится в 1 все остальные значения регистров не определены, поэтому обязательно выполните сброс перед использованием модуля.
Кроме того, избегайте ввода неверных данных о дате и времени, так как работа часов не гарантируется, если данные о времени неверны.
Бит TEST Используется производителем для тестирования. Убедитесь, что для этого бита установлено значение «0».
Reserved Регистр с адресом D используется для заводских настроек. Не читайте и не записывайте в этот регистр.
Биты «0» Должны быть установлены в 0 при записи. Их значение при чтении будет 0.
Биты (0) Доступны только для чтения. Их значение при чтении всегда равно 0.
Биты • Являются битами ОЗУ, которые могут содержать любое значение и доступны для чтения/записи. Однако эти биты сбрасываются в 0, когда значение бита PON равно 1.
0) Seconds Регистр счётчика секунд в двоично-десятичном формате (0b X101 1001 = 59сек).
1) Minutes Регистр счётчика минут в двоично-десятичном формате (0b X101 1001 = 59мин).
2) Hours Регистр счётчика часов в двоично-десятичном формате (0b XX01 1001 = 19час).
H20 P,/A В 24-часовом формате бит функционирует как H20
В 12-часовом формате бит функционирует как P,/A (0-AM, 1-PM).
Формат часов задаёт бит /12,24 регистра Control-1.
3) Days Регистр счётчика дней недели (1-Пн, 6-Сб, 0-Вс). Значение 7-недопустимо. Так написано в datasheet, типа у регистра активны только 3 младших бита формирующих число от 0 до 6.
А на самом деле регистр хранит 7 значащих бит. Установленный бит указывает на день недели: 0-бит Вс, 1-бит Пн, 2-бит Вт, ... 6-бит Сб, 7-бит всегда 0.
4) Days Регистр счётчика дней в двоично-десятичном формате (0b XX11 0001 = 31день).
5) Months Регистр счётчика месяцев в двоично-десятичном формате (0b XXX1 0010 = 12мес = декабрь).
6) Years Регистр счётчика лет в двоично-десятичном формате (0b 1001 1001 = 99год).
7) Digital Offset Регистр регулировки точности часов. Хранит знаковое значение в 7-битном двоичном коде (от 62 = 0bX1000010, до +63 = 0bX0111111)
Частота поступающая на предделитель = 32768 Гц - DigitalOffset * 3,05 × 10^6. (32768Гц62*3,05×10^6 = 32768Гц+189.1×10^6)
Функция цифрового смещения корректирует количество тактовых импульсов каждые 20 сек. (в 00сек, 20сек и 40сек каждой минуты)
Частота на выходе FOUT не изменяется.
8) Alarm_W Minute Регистр минут будильника Alarm_W. Формат хранения данных аналогичен регистру Minutes.
9) Alarm_W Hour Регистр часов будильника Alarm_W. Формат хранения данных аналогичен регистру Hours.
WH20 WP,/A В 24-часовом формате бит функционирует как WH20
В 12-часовом формате бит функционирует как WP,/A (0-AM, 1-PM).
Формат часов задаёт бит /12,24 регистра Control-1.
A) Alarm_W Day Регистр дней недели будильника Alarm_W. Позволяет выбрать 1 до 7 дней недели.
WW6-WW0 WW1-Пн, WW2-Вт, WW3-ср, WW4-Чт, WW5-Пт, WW6-Сб, WW0-Вс.
Если все биты установлены в 0, то будильник Alarm_W выключен.
B) Alarm_D Minute Регистр минут будильника Alarm_D. Формат хранения данных аналогичен регистру Minutes.
C) Alarm_D Hour Регистр часов будильника Alarm_D. Формат хранения данных аналогичен регистру Hours.
DH20 DP,/A В 24-часовом формате бит функционирует как DH20
В 12-часовом формате бит функционирует как DP,/A (0-AM, 1-PM).
Формат часов задаёт бит /12,24 регистра Control-1.
E) Control-1 Регистр управления 1
WALE Бит разрешения работы будильника Alarm_W.
0 - будильник Alarm_W отключён.
1 - будильник Alarm_W включён, при совпадении времени на выводе /INTB появляется прерывание.
DALE Бит разрешения работы будильника Alarm_D.
0 - будильник Alarm_D отключён.
1 - будильник Alarm_D включён, при совпадении времени на выводе /INTA появляется прерывание.
/12,24 Бит выбора формата часов текущего времени и будильников.
0 - Часы текущего времени и будильников хранятся в 12-часовом формате.
1 - Часы текущего времени и будильников хранятся в 24-часовом формате.
TEST
CT2-CT0 Биты настройки периодического прерывания на выводе /INTA.
000 Периодическое прерывание отключено, вывод /INTA отключён.
001 Периодическое прерывание отключено, на выволе /INTA уровень 0.
010 - Периодическое прерывание работает на частоте 2 Гц с коэффициентом заполнения 50%.
011 - Периодическое прерывание работает на частоте 1 Гц с коэффициентом заполнения 50%.
100 - Периодическое прерывание срабатывает в начале каждой секунды.
101 - Периодическое прерывание срабатывает в начале 00 секунды каждой минуты.
110 - Периодическое прерывание срабатывает в начале 00 секунды, 00 минуты каждого часа.
111 - Периодическое прерывание срабатывает в начале 00 секунды, 00 минуты 00 часа каждого первого числа месяца.
F) Control-2 Регистр управления 2
VDSL Выбор порогового значения напряжения для функции обнаружения падения мощности.
0 - 2,1 В в качестве порога функции обнаружения падения мощности.
1 - 1,3 В в качестве порога функции обнаружения падения мощности.
VDET Флаг функции обнаружения падения мощности. Устанавливается в 1 после падения Vcc ниже порога.
Чтение: 0 - Падение мощности не обнаружено.
1 - Обнаружено падение Vcc ниже порогового. Флаг остаётся 1 до его перезаписи в 0 по шине I2C.
Запись: 0 - Сброс флага в 0 и перезапуск функции обнаружения падения мощности.
1 - ЗАПРЕЩЕНО! НЕ ЗАПИСЫВАЙТЕ 1 ДАЖЕ ЕСЛИ ЭТО НЕ ИМЕЕТ ЭФФЕКТА.
/XST Флаг функции обнаружения остановки колебаний.
Чтение: 0 - Обнаружена остановка колебаний. Флаг остаётся 0 до его перезаписи в 1 по шине I2C.
1 - Остановка колебаний не обнаружено.
Запись: 0 - ЗАПРЕЩЕНО! НЕ ЗАПИСЫВАЙТЕ 0 ДАЖЕ ЕСЛИ ЭТО НЕ ИМЕЕТ ЭФФЕКТА.
1 - Сброс флага в 1 и перезапуск функции обнаружения остановки колебаний.
PON Флаг функции обнаружения сброса при включении питания.
Чтение: 0 - Сброс при включении питания не обнаружен.
1 - Обнаружен сброс при включении питания. Флаг остаётся 1 до его перезаписи в 0 по шине I2C.
Пока флаг установлен в 1, все биты регистров Digital-Offset, Control-1 и Control-2 (кроме PON и /XST) сбрасываются в «0». Это также приводит к остановке прерываний на выводах /INTA и /INTB.
Запись: 0 - Сброс флага в 0 и перезапуск функции обнаружения сброса при включении питания.
1 - ЗАПРЕЩЕНО! НЕ ЗАПИСЫВАЙТЕ 1 ДАЖЕ ЕСЛИ ЭТО НЕ ИМЕЕТ ЭФФЕКТА.
• Бит является битом ОЗУ, он может содержать любое значение и доступен для чтения/записи. Бит сбрасывается в 0 если обнаружен сброс при включении питания (PON=1).
CTFG Флаг наличия периодического прерывания на выводе /INTA.
Чтение: 0 - На выходе /INTA нет сигнала периодического прерывания.
1 - На выходе /INTA установлен сигнал периодического прерывания.
Запись: 0 - Сброс флага в 0 и освобождение /INTA до следующего прерывания. Сброс возможен если не поступает очередное прерывание и не срабатывает будильник Alarm_D.
1 - ЗАПРЕЩЕНО! НЕ ЗАПИСЫВАЙТЕ 1 ДАЖЕ ЕСЛИ ЭТО НЕ ИМЕЕТ ЭФФЕКТА.
WAFG Флаг будильника Alarm_W. Значение флага актуально если бит WALE регистра Control-1 равен 1.
Чтение: 0 - Будильник Alarm_W не сработал или бит WALE регистра Control-1 равен 0.
1 - Сработал будильник Alarm_W. Флаг остаётся 1 до его перезаписи в 0 по шине I2C.
Запись: 0 - Сброс флага в 0 и отключение прерывания на выводе /INTB.
1 - ЗАПРЕЩЕНО! НЕ ЗАПИСЫВАЙТЕ 1 ДАЖЕ ЕСЛИ ЭТО НЕ ИМЕЕТ ЭФФЕКТА.
DAFG Флаг будильника Alarm_D. Значение флага актуально если бит DALE регистра Control-1 равен 1.
Чтение: 0 - Будильник Alarm_D не сработал или бит DALE регистра Control-1 равен 0.
1 - Сработал будильник Alarm_D. Флаг остаётся 1 до его перезаписи в 0 по шине I2C.
Запись: 0 - Сброс флага в 0 и отключение прерывания на выводе /INTA.
1 - ЗАПРЕЩЕНО! НЕ ЗАПИСЫВАЙТЕ 1 ДАЖЕ ЕСЛИ ЭТО НЕ ИМЕЕТ ЭФФЕКТА.