NXP i.MX7D часы реального времени RTC

После сброса камня, часовой кварц работает и подключен к модулю SNVS.
Достаточно завести часы, что бы они начали тикать.

	@ Затактировать SNVS
	@ После сброса процессора, он уже затактирован загрузчиком
	MOV32 R0, CCM_BASE + CCGR37 @ SNVS clock gate
	MOV R1, 0x00003333
	STR R1, [R0]

	@ Модуль RTC имеет два счётчика реального времени

	@ Счётчик HP RTC - общего назначения
	@ Сбрасывается вместе с процессором
	@ И по другим событиям
	MOV32 R0, SNVS_BASE
	MOV R1, 1 << RTC_EN @ Включить HP RTC
	STR R1, [R0, HPCR]

	@ Счётчик SRTC является классическим Low Power RTC
	@ Вместе с камнем не сбрасывается
	@ Тикает всегда, пока есть питание
	MOV R1, 1 << SRTC_ENV @ Включить SRTC
	STR R1, [R0, LPCR]

	@ Часы тикают!
	

Оба счётчика имеют разрядность 47 бит и инкрементируются на частоте часового кварца. Таким образом, запас хода часов составит 136 лет. Очередная проблема наступит в 2106 году.

А там глядишь и новые камушки появятся, с 48-битным счётчиком!

	@ Прочитать значения часов
	MOV32 R0, SNVS_BASE
	LDR R1, [R0, HPRTCLR] @ Прочитать младшие 32 бита HP RTC
	LDR R2, [R0, LPSRTCLR] @ Прочитать младшие 32 бита SRTC
	

В часах есть один будильник. И можно настроить периодические прерывания.
А ещё, можно подать сигнал PMIC на POWER OFF.

Так что, дерзайте!



p.s. Календаря нет. При наличии на кристалле такого количества математики,
стыдно делать аппаратный календарь? Как вы думаете?