@GNU AS
@.CHARSET =CP1251 ( Cyrillic )
@.DESC     type=module
@ +------------------------------------------------------------------+
@ |                      Определения BKP                             |
@ +------------------------------------------------------------------+
@.ENDDESC

.INCLUDE  "/src/inc/base.inc"

@ определения  BKP для микроконтроллера K1986BE92FI

@          Регистры блока
@ ------------------------------
@.ITEM      BKP_BASE
.EQU  BKP_REG_00 , 0x00   @  Регистр  MDR_BKP->REG_00  аварийного сохранения 0
.EQU  BKP_REG_01 , 0x04   @  Регистр  MDR_BKP->REG_01  аварийного сохранения 1
.EQU  BKP_REG_02 , 0x08   @  Регистр  MDR_BKP->REG_02  аварийного сохранения 2
.EQU  BKP_REG_03 , 0x0C   @  Регистр  MDR_BKP->REG_03  аварийного сохранения 3
.EQU  BKP_REG_04 , 0x10   @  Регистр  MDR_BKP->REG_04  аварийного сохранения 4
.EQU  BKP_REG_05 , 0x14   @  Регистр  MDR_BKP->REG_05  аварийного сохранения 5
.EQU  BKP_REG_06 , 0x18   @  Регистр  MDR_BKP->REG_06  аварийного сохранения 6
.EQU  BKP_REG_07 , 0x1C   @  Регистр  MDR_BKP->REG_07  аварийного сохранения 7
.EQU  BKP_REG_08 , 0x20   @  Регистр  MDR_BKP->REG_08  аварийного сохранения 8
.EQU  BKP_REG_09 , 0x24   @  Регистр  MDR_BKP->REG_09  аварийного сохранения 9
.EQU  BKP_REG_0A , 0x24   @  Регистр  MDR_BKP->REG_0A  аварийного сохранения 10
.EQU  BKP_REG_0B , 0x28   @  Регистр  MDR_BKP->REG_0B  аварийного сохранения 11
.EQU  BKP_REG_0C , 0x30   @  Регистр  MDR_BKP->REG_0C  аварийного сохранения 12
.EQU  BKP_REG_0D , 0x34   @  Регистр  MDR_BKP->REG_0D  аварийного сохранения 13
.EQU  BKP_REG_0E , 0x38   @  Регистр  MDR_BKP->REG_0E  аварийного сохранения 14
.EQU  BKP_REG_0F , 0x3C   @  Регистр  MDR_BKP->REG_0F  аварийного сохранения 15
.EQU  BKP_RTC_CNT , 0x40  @  Регистр  MDR_BKP->RTC_CNT  основного счетчика часов реального времени
.EQU  BKP_RTC_DIV , 0x44  @  Регистр  MDR_BKP->RTC_DIV  счётчика предварительного делителя
.EQU  BKP_RTC_PRL , 0x48  @  Регистр  MDR_BKP->RTC_PRL  коэффициента деления предварительного делителя
.EQU  BKP_RTC_ALRM , 0x4C  @ Регистр  MDR_BKP->RTC_ALRM  значения  для сравнения  с  основным
                           @ счетчиком  RTC_CNT  и выработки сигнала ALRF
.EQU  BKP_RTC_CS , 0x50   @ Регистр  MDR_BKP->RTC_CS  управления  и состояния флагов часов реального времени
@.END

@          Описания Регистров блока
@ -----------------------------------------


@.ITEM      BKP_REG_OE
.EQU  BKP_REG_OE_MODE_N, 12      @ BKP_REG_OE_MODE_N: Номер младшего бита поля BKP_REG_OE_MODE
.EQU  BKP_REG_OE_MODE_L, 3       @ BKP_REG_OE_MODE_L: размер поля BKP_REG_OE_MODE
                               @ Режим  работы  микросхемы,  определенный  при  включении
                               @ питания по выводам MODE[2:0] (PF[6:4]):
.EQU  BKP_REG_OE_MODE_JTAG_B,  0    @ 000 – микроконтроллер в режиме отладки через JTAG_B;
.EQU  BKP_REG_OE_MODE_JTAG_A,  1 << 12    @ 001 – микроконтроллер в режиме отладки через JTAG_A;
.EQU  BKP_REG_OE_MODE_JTAG_B2, 2 << 12    @ 010 – микропроцессор в режиме отладки через JTAG_B;
.EQU  BKP_REG_OE_MODE_JTAG_B3, 3 << 12    @ 011 – микропроцессор в режиме отладки через JTAG_B;
.EQU  BKP_REG_OE_MODE_RSV_4,   4 << 12    @ 100 – зарезервировано;
.EQU  BKP_REG_OE_MODE_UART_A,  5 << 12    @ 101 – UART-загрузчик без отладки;
.EQU  BKP_REG_OE_MODE_UART_B,  6 << 12    @ 110 – UART-загрузчик без отладки;
.EQU  BKP_REG_OE_MODE_TEST,    7 << 12    @ 111 – тестовый режим работы.
@ Подробнее см. в разделе 9 «Загрузочное ПЗУ и режимы работы микросхемы».
@ При  смене  режима  работы  в  данном  регистре,  изменение
@ вступит  в  силу  после  сброса  процессора  через  RESET,  при
@ сбросе  по  просадке  питания  режим  будет  определяться выводами MODE[2:0]
.EQU  BKP_REG_OE_FPOR        , 1 < 11    @  Флаг срабатывания POR.
.EQU  BKP_REG_OE_FPOR_N      , 11        @ Устанавливается  в  1  загрузочным  ПЗУ  при  первоначальном
                                         @ включении по появлению питания UCC, при сбросе по питанию
                                         @ устанавливается  в  0.  Служит  для  анализа  загрузочным  ПЗУ,
                                         @ что сейчас идет выполнение программы после системного или
                                         @ программного сброса, либо после сброса по питанию
.EQU  BKP_REG_OE_TRIM_N      , 8         @ BKP_REG_OE_TRIM_N: младший бит поля BKP_REG_OE_TRIM
.EQU  BKP_REG_OE_TRIM_L      , 3         @ BKP_REG_OE_TRIM_L: размер поля BKP_REG_OE_TRIM
@ Коэффициент  настройки  опорного  напряжения  встроенного регулятора напряжения DUCC.
@ Устанавливать только значение LDO_TRIM[2:0], считанное из информационной памяти (см. таблицу 24)
.EQU  BKP_REG_OE_JTAG_B      ,  1<<7     @ Разрешение работы порта JTAG B:
                                         @ 0 – запрещен;
                                         @ 1 – разрешен.
.EQU  BKP_REG_OE_JTAG_B_N    ,  7        @ BKP_REG_OE_JTAG_B_N: номер бита поля BKP_REG_OE_JTAG_B
@ При  установке  в  единицу  обоих  бит  JTAG  B  и  JTAG  A
@ выбирается тестовый режим работы, при этом микросхема не
@ работает  в  функциональном  режиме  (см.  подраздел  9.4
@ «Тестовый режим работы»)
.EQU  BKP_REG_OE_JTAG_A      ,  1<<6     @ Разрешение работы порта JTAG A:
                                         @ 0 – запрещен;
                                         @ 1 – разрешен.
.EQU  BKP_REG_OE_JTAG_B_N    ,  6        @ BKP_REG_OE_JTAG_A_N: номер бита поля BKP_REG_OE_JTAG_A
.EQU  BKP_REG_OE_SELECTRI_N  , 3         @ BKP_REG_OE_SELECTRI_N: левый бит поля BKP_REG_OE_SELECTRI
.EQU  BKP_REG_OE_SELECTRI_L  , 3         @ BKP_REG_OE_SELECTRI_L: размер  поля BKP_REG_OE_SELECTRI
                                         @ Выбор  дополнительной  стабилизирующей  нагрузки  для
                                         @ встроенного регулятора напряжения DUCC:
.EQU  BKP_REG_OE_SELECTRI_300, 0         @ 000 – ~ 6 кОм (дополнительный ток потребления 300 мкА);
.EQU  BKP_REG_OE_SELECTRI_6D6, 1<<3      @ 001 – ~ 270 кОм (дополнительный ток потребления 6,6 мкА);
.EQU  BKP_REG_OE_SELECTRI_20 , 2<<3      @ 010 – ~ 90 кОм (дополнительный ток потребления 20 мкА);
.EQU  BKP_REG_OE_SELECTRI_80 , 3<<3      @ 011 – ~ 24 кОм (дополнительный ток потребления 80 мкА);
.EQU  BKP_REG_OE_SELECTRI_2  , 4<<3      @ 100 – ~ 900 кОм (собственное потребление 2 мкА);
.EQU  BKP_REG_OE_SELECTRI_900, 5<<3      @ 101 – ~ 2 кОм (дополнительный ток потребления 900 мкА);
.EQU  BKP_REG_OE_SELECTRI_4D4, 6<<3      @ 110 – ~ 400 Ом (дополнительный ток потребления 4,4 мА);
.EQU  BKP_REG_OE_SELECTRI_19 , 7<<3      @ 111 – ~ 100 Ом (дополнительный ток потребления 19 мА)
.EQU  BKP_REG_OE_LOW_N       , 0         @ BKP_REG_OE_LOW_N: левый бит поля BKP_REG_OE_LOW
.EQU  BKP_REG_OE_LOW_L       , 3         @ BKP_REG_OE_LOW_L: размер  поля BKP_REG_OE_LOW
                                         @ Выбор  режима  работы  встроенного  регулятора  напряжения
                                         @ DUCC. Значение LOW должно совпадать со значением SelectRI
                                         @ и  выставляться  в  зависимости  от  тактовой  частоты микросхемы:
.EQU  BKP_REG_OE_LOW_10M     , 0         @ 000 – частота до 10 МГц;
.EQU  BKP_REG_OE_LOW_200K    , 1         @ 001 – частота до 200 кГц;
.EQU  BKP_REG_OE_LOW_500K    , 2         @ 010 – частота до 500 кГц;
.EQU  BKP_REG_OE_LOW_1M      , 3         @ 011 – частота до 1 МГц;
.EQU  BKP_REG_OE_LOW_OFF     , 4         @ 100 – при выключении всех генераторов;
.EQU  BKP_REG_OE_LOW_40M     , 5         @ 101 – частота до 40 МГц;
.EQU  BKP_REG_OE_LOW_80M     , 6         @ 110 – частота до 80 МГц;
.EQU  BKP_REG_OE_LOW_OVER80M , 7         @ 111 – частота более 80 МГц
@.END


@.ITEM      BKP_REG_OF
.EQU  BKP_REG_OF_RTC_RESET_N, 31      @ Сброс часов реального времени:
                                      @ 0 – часы не сбрасываются;
.EQU  BKP_REG_OF_RTC_RESET  , 1<<31   @ 1 – часы сбрасываются
.EQU  BKP_REG_OF_STANDBY    , 1<<30   @ Режим отключения регулятора DUCC:
                                      @ 0 – регулятор включен и выдает напряжение;
                                      @ 1 – регулятор выключен.
                                      @ Триггер сбрасывается флагом ALRF или по низкому уровню на выводе WAKEUP
.EQU  BKP_REG_OF_STANDBY_N    , 30    @
.EQU  BKP_REG_OF_HSI_TRIM_N   , 24    @ номер младшего бита поля BKP_REG_OF_HSI_TRIM
.EQU  BKP_REG_OF_HSI_TRIM_L   , 6     @ размер поля BKP_REG_OF_HSI_TRIM
                                      @ Коэффициент подстройки частоты генератора HSI.
                                      @ Устанавливать  только  значение  HSI_TRIM[5:0],  считанное  из
                                      @ информационной памяти (см. таблицу 24).
                                      @ Зависимость  частоты  HSI  от  значения  HSITRIM  см. на рисунке 136
.EQU  BKP_REG_OF_HSI_RDY      , 1<<23 @ Флаг выхода генератора HSI в рабочий режим:
                                      @ 0 – генератор не запущен или не вышел в режим;
                                      @ 1 – генератор работает в рабочем режиме
.EQU  BKP_REG_OF_HSI_RDY_N    , 23    @
.EQU  BKP_REG_OF_HSI_ON       , 1<<22 @ Бит управления генератором HSI:
                                      @ 0 – генератор выключен;
                                      @ 1 – генератор включен
.EQU  BKP_REG_OF_HSI_ON_N     , 22    @
.EQU  BKP_REG_OF_LSI_RDY      , 1<<21 @ Флаг выхода генератора LSI в рабочий режим:
                                      @ 0 – генератор не запущен или не вышел в режим;
                                      @ 1 – генератор работает в рабочем режиме
.EQU  BKP_REG_OF_LSI_RDY_N    , 21    @
.EQU  BKP_REG_OF_LSI_TRIM_N   , 16    @ младший бит поля BKP_REG_OF_LSI_TRIM
.EQU  BKP_REG_OF_LSI_TRIM_L   , 5     @ размер поля BKP_REG_OF_LSI_TRIM
                                      @ Коэффициент подстройки частоты генератора LSI:
                                      @ Устанавливать  только  значение  LSI_TRIM[4:0],  считанное  из
                                      @ информационной памяти (см. таблицу 24).
                                      @ Зависимость  частоты  LSI  от  значения  LSITRIM  см.
                                      @ на рисунке 137
.EQU  BKP_REG_OF_LSI_ON       , 1<<15 @ Бит управления генератором LSI:
                                      @ 0 – генератор выключен;
                                      @ 1 – генератор включен
.EQU  BKP_REG_OF_LSI_ON_N     , 15    @
.EQU  BKP_REG_OF_LSE_RDY      , 1<<15 @ Флаг выхода генератора LSE в рабочий режим:
                                      @ 0 – генератор не запущен или не вышел в режим;
                                      @ 1 – генератор работает в рабочем режиме
.EQU  BKP_REG_OF_LSE_RDY_N    , 15    @
.EQU  BKP_REG_OF_RTC_CALL_N   , 5     @ левый бит поля BKP_REG_OF_RTC_CALL
.EQU  BKP_REG_OF_RTC_CALL_L   , 8     @ размер поля BKP_REG_OF_RTC_CALL
@ Коэффициент  подстройки  тактовой  частоты  часов  реального
@ времени  RTC_CLK.  Из  каждых  220  тактов  RTC_CLK  будет
@ замаскировано RTC_CAL тактов:
@ 00000000 – 0 тактов;
@ 00000001 – 1 такт;
@ ….
@ 11111111 – 255 тактов.
@ Таким образом, если исходная частота равна 32768,00000 Гц, то:
@ при RTC_CAL = 0 частота RTC_CLK = 32768,00000 Гц;
@ при RTC_CAL = 1 частота RTC_CLK = 32767,96875 Гц;
@ …
@ при RTC_CAL = 255 частота RTC_CLK = 32760,03125 Гц.
@ В общем случае тактовая частота RTC_CLK после подстройки равна
@ RTC_CLK = CLK – RTC_CAL  CLK/220,
@ где CLK – исходная тактовая частота часов реального времени, Гц
.EQU  BKP_REG_OF_RTCEN         , 1<<4    @ Бит разрешения работы часов реального времени:
                                         @ 0 – работа запрещена;
                                         @ 1 – работа разрешена
.EQU  BKP_REG_OF_RTCSEL_N      , 2       @ левый бит поля BKP_REG_OF_RTCSEL
.EQU  BKP_REG_OF_RTCSEL_L      , 2       @ размер поля BKP_REG_OF_RTCSEL
                                         @ Биты  выбора  источника  тактовой  синхронизации  часов
                                         @ реального времени RTC_CLK:
.EQU  BKP_REG_OF_RTCSEL_LSI    , 0       @ 00 – LSI;
.EQU  BKP_REG_OF_RTCSEL_LSE    , 1<<2    @ 01 – LSE;
.EQU  BKP_REG_OF_RTCSEL_HSI_RTC, 2<<2    @ 10 – HSI_RTC (формируется в блоке MDR_RST_CLK);
.EQU  BKP_REG_OF_RTCSEL_HSE_RTC, 3<<2    @ 11 – HSE_RTC (формируется в блоке MDR_RST_CLK)
.EQU  BKP_REG_OF_LSEBYP        , 1<<1    @ Бит управления генератором LSE:
                                         @ 0 – режим осциллятора;
                                         @ 1 – режим  работы  на  проход  (внешний  генератор).
                                         @ Устанавливать совмстно с LSE_ON = 1
.EQU  BKP_REG_OF_LSEBYP_N      , 1
.EQU  BKP_REG_OF_LSEON         , 1       @ Бит управления генератором LSE:
                                         @ 0 – генератор выключен;
                                         @ 1 – генератор включен
.EQU  BKP_REG_OF_LSEON_N       , 0
@.END


@.ITEM      BKP_RTC_CS
.EQU  BKP_RTC_CS_WEC            , 1<<6   @  Флаг выполнения записи в регистры RTC:
                                         @ 0 – можно записывать в регистры RTC;
                                         @ 1 – запись в регистры запрещена, идет запись в регистры RTC
.EQU  BKP_RTC_CS_WEC_N          , 6      @
.EQU  BKP_RTC_CS_ALRF_IE        , 1<<5   @ Флаг разрешения прерывания по событию ALRF:
                                         @ 0 – прерывание запрещено;
                                         @ 1 – прерывание разрешено
.EQU  BKP_RTC_CS_ALRF_IE_N      , 5      @
.EQU  BKP_RTC_CS_SECF_IE        , 1<<4   @  Флаг разрешения прерывания по событию SECF:
                                         @ 0 – прерывание запрещено;
                                         @ 1 – прерывание разрешено
.EQU  BKP_RTC_CS_SECF_IE_N      , 4      @
.EQU  BKP_RTC_CS_OWF_IE         , 1<<3   @ Флаг разрешения прерывания по событию OWF:
                                         @ 0 – прерывание запрещено;
                                         @ 1 – прерывание разрешено
.EQU  BKP_RTC_CS_OWF_IE_N       , 3      @
.EQU  BKP_RTC_CS_ALRF           , 1<<2   @  Флаг  превышения  основным  счетчиком  RTC_CNT  значения RTC_ALRM:
                                         @ 0 – нет события превышения;
                                         @ 1 – было событие превышения.
                                         @ Флаг устанавливается при RTC_CNT == (RTC_ALRM+1), сброс
                                         @ флага осуществляется записью 1
.EQU  BKP_RTC_CS_ALRF_N         , 2      @
.EQU  BKP_RTC_CS_SECF           , 1<<1   @  Флаг  изменения  значения  основного  счетчика  RTC_CNT
                                         @ (инкремент счетчика RTC_CNT выполняется один раз в секунду):
                                         @ 0 – нет изменения RTC_CNT;
                                         @ 1 – есть изменение RTC_CNT.
                                         @ Сброс флага осуществляется записью 1
.EQU  BKP_RTC_CS_SECF_N         , 1      @
.EQU  BKP_RTC_CS_OWF            , 1      @  Флаг переполнения основного счетчика RTC_CNT:
                                         @ 0 – нет переполнения;
                                         @ 1 – было переполнение.
                                         @ Сброс флага осуществляется записью 1
.EQU  BKP_RTC_CS_OWF_N          , 0      @
@.END
