Регистры TIMG ESP32-C3
Регистры групп таймеров ESP32-C3: в каждой группе 54-битный таймер с 16-битным делителем, будильником и автоперезагрузкой, сторожевой таймер MWDT с четырьмя стадиями и схема калибровки медленного RTC-генератора.
Содержание
- Пример на C
- Регистры блока
- TIMG_T0CONFIG_REG
- TIMG_T0LO_REG
- TIMG_T0HI_REG
- TIMG_T0UPDATE_REG
- TIMG_T0ALARMLO_REG
- TIMG_T0ALARMHI_REG
- TIMG_T0LOADLO_REG
- TIMG_T0LOADHI_REG
- TIMG_T0LOAD_REG
- TIMG_WDTCONFIG0_REG
- TIMG_WDTCONFIG1_REG
- TIMG_WDTCONFIG2_REG
- TIMG_WDTCONFIG3_REG
- TIMG_WDTCONFIG4_REG
- TIMG_WDTCONFIG5_REG
- TIMG_WDTFEED_REG
- TIMG_WDTWPROTECT_REG
- TIMG_RTCCALICFG_REG
- TIMG_RTCCALICFG1_REG
- TIMG_INT_ENA_TIMERS_REG
- TIMG_INT_RAW_TIMERS_REG
- TIMG_INT_ST_TIMERS_REG
- TIMG_INT_CLR_TIMERS_REG
- TIMG_RTCCALICFG2_REG
- TIMG_NTIMERS_DATE_REG
- TIMG_REGCLK_REG
У ESP32-C3 две одинаковые группы таймеров: TIMG0 по адресу 0x6001 F000 и TIMG1 по адресу 0x6002 0000, макросы ESP-IDF принимают номер группы — TIMG_T0CONFIG_REG(1). В каждой группе один таймер общего назначения T0: 54-битный счётчик вверх или вниз, тактируемый APB_CLK или XTAL_CLK через делитель 2…65 536.
Чтобы прочитать счётчик, в TIMG_T0UPDATE_REG записывают 1 — текущее значение защёлкивается в T0LO и T0HI. Будильник сравнивает счётчик с T0ALARMLO и T0ALARMHI и может перезагрузить его значением T0LOADLO и T0LOADHI.
Сторожевой таймер MWDT проходит до четырёх стадий; на каждой — прерывание, сброс процессора или сброс цифровой части. Его регистры защищены: перед записью в WDT_WKEY нужно положить ключ 0x50D83AA1, после настройки — любое другое значение.
| Экземпляр | Базовый адрес |
|---|---|
| TIMG0 | 0x6001 F000 |
| TIMG1 | 0x6002 0000 |
Пример на C
TIMG0: чтение 54-битного счётчика T0 (soc/timer_group_reg.h). Макросы доступа REG_WRITE, REG_READ, REG_SET_BIT, REG_CLR_BIT, REG_GET_BIT, REG_SET_FIELD и REG_GET_FIELD объявлены в soc/soc.h ESP-IDF; поле задаётся именем макроса без суффикса, маска и сдвиг берутся из его вариантов _V и _S.
#include "soc/timer_group_reg.h"
REG_WRITE(TIMG_T0UPDATE_REG(0), TIMG_T0_UPDATE); // защёлкнуть значение
while (REG_GET_BIT(TIMG_T0UPDATE_REG(0), TIMG_T0_UPDATE)) {}
uint64_t t = ((uint64_t)REG_READ(TIMG_T0HI_REG(0)) << 32) | REG_READ(TIMG_T0LO_REG(0));Регистры блока
| Регистр (ESP-IDF) | Смещение | Назначение | После сброса |
|---|---|---|---|
| TIMG_T0CONFIG_REG(i) | 0x0000 | Таймер 0: включение, направление, делитель, будильник | 0x6000 2000 |
| TIMG_T0LO_REG(i) | 0x0004 | Таймер 0: защёлкнутое значение, младшие 32 бита | 0x0000 0000 |
| TIMG_T0HI_REG(i) | 0x0008 | Таймер 0: защёлкнутое значение, старшие 22 бита | 0x0000 0000 |
| TIMG_T0UPDATE_REG(i) | 0x000C | Таймер 0: защёлкнуть текущее значение | 0x0000 0000 |
| TIMG_T0ALARMLO_REG(i) | 0x0010 | Таймер 0: значение будильника, младшие 32 бита | 0x0000 0000 |
| TIMG_T0ALARMHI_REG(i) | 0x0014 | Таймер 0: значение будильника, старшие 22 бита | 0x0000 0000 |
| TIMG_T0LOADLO_REG(i) | 0x0018 | Таймер 0: значение перезагрузки, младшие 32 бита | 0x0000 0000 |
| TIMG_T0LOADHI_REG(i) | 0x001C | Таймер 0: значение перезагрузки, старшие 22 бита | 0x0000 0000 |
| TIMG_T0LOAD_REG(i) | 0x0020 | Таймер 0: загрузить значение перезагрузки сейчас | 0x0000 0000 |
| TIMG_WDTCONFIG0_REG(i) | 0x0048 | Сторож: включение, действия стадий, длительность сброса | 0x0004 C000 |
| TIMG_WDTCONFIG1_REG(i) | 0x004C | Сторож: предделитель | 0x0001 0000 |
| TIMG_WDTCONFIG2_REG(i) | 0x0050 | Сторож: длительность стадии 0 | 0x018C BA80 |
| TIMG_WDTCONFIG3_REG(i) | 0x0054 | Сторож: длительность стадии 1 | 0x07FF FFFF |
| TIMG_WDTCONFIG4_REG(i) | 0x0058 | Сторож: длительность стадии 2 | 0x000F FFFF |
| TIMG_WDTCONFIG5_REG(i) | 0x005C | Сторож: длительность стадии 3 | 0x000F FFFF |
| TIMG_WDTFEED_REG(i) | 0x0060 | Сторож: кормление | 0x0000 0000 |
| TIMG_WDTWPROTECT_REG(i) | 0x0064 | Сторож: защита записи | 0x50D8 3AA1 |
| TIMG_RTCCALICFG_REG(i) | 0x0068 | Калибровка RTC-генератора: запуск и результат готов | 0x0001 3000 |
| TIMG_RTCCALICFG1_REG(i) | 0x006C | Калибровка RTC-генератора: результат | 0x0000 0000 |
| TIMG_INT_ENA_TIMERS_REG(i) | 0x0070 | Разрешение прерываний | 0x0000 0000 |
| TIMG_INT_RAW_TIMERS_REG(i) | 0x0074 | Необработанные флаги прерываний | 0x0000 0000 |
| TIMG_INT_ST_TIMERS_REG(i) | 0x0078 | Флаги прерываний после маски разрешения | 0x0000 0000 |
| TIMG_INT_CLR_TIMERS_REG(i) | 0x007C | Сброс флагов прерываний записью 1 | 0x0000 0000 |
| TIMG_RTCCALICFG2_REG(i) | 0x0080 | Калибровка RTC-генератора: таймаут | 0xFFFF FF98 |
| TIMG_NTIMERS_DATE_REG(i) | 0x00F8 | Версия блока: дата ревизии аппаратуры | 0x0200 6191 |
| TIMG_REGCLK_REG(i) | 0x00FC | Тактирование регистров и таймеров | 0x6000 0000 |
Доступ — обозначения TRM: R/W — чтение и запись, RO — только чтение, WO — только запись, WT — запись 1 запускает действие, SS и SC — бит ставится и сбрасывается аппаратно, WTC — сбрасывается записью 1.
TIMG_T0CONFIG_REG(i) — таймер 0: включение, направление, делитель, будильник
Смещение 0x0000, после сброса 0x6000 2000. TRM: регистр 11.1.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| T0_EN | T0_INCREASE | T0_AUTORELOAD | T0_DIVIDER | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| T0_DIVIDER | T0_DIVIDER_RST | — | T0_ALARM_EN | T0_USE_XTAL | — | ||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| T0_EN | 31 | R/W | 0 | Включить счёт |
| T0_INCREASE | 30 | R/W | 1 | Направление: 1 — вверх, 0 — вниз |
| T0_AUTORELOAD | 29 | R/W | 1 | Перезагрузка счётчика при срабатывании будильника |
| T0_DIVIDER | 28:13 | R/W | 0x0001 | Делитель 2…65 535; 0 и 1 означают 65 536 и 2 |
| T0_DIVIDER_RST | 12 | WT | 0 | Сброс делителя |
| T0_ALARM_EN | 10 | R/W/SC | 0 | Включить будильник; сбрасывается при срабатывании |
| T0_USE_XTAL | 9 | R/W | 0 | Такт: 1 — XTAL_CLK, 0 — APB_CLK |
TIMG_T0LO_REG(i) — таймер 0: защёлкнутое значение, младшие 32 бита
Смещение 0x0004, после сброса 0x0000 0000. TRM: регистр 11.2.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| T0_LO | 31:0 | RO | 0x0000 0000 |
TIMG_T0HI_REG(i) — таймер 0: защёлкнутое значение, старшие 22 бита
Смещение 0x0008, после сброса 0x0000 0000. TRM: регистр 11.3.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| T0_HI | 21:0 | RO | 0x000000 |
TIMG_T0UPDATE_REG(i) — таймер 0: защёлкнуть текущее значение
Смещение 0x000C, после сброса 0x0000 0000. TRM: регистр 11.4.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| T0_UPDATE | 31 | R/W/SC | 0 | Запись 1 защёлкивает счётчик в T0LO и T0HI; бит сбрасывается сам |
TIMG_T0ALARMLO_REG(i) — таймер 0: значение будильника, младшие 32 бита
Смещение 0x0010, после сброса 0x0000 0000. TRM: регистр 11.5.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| T0_ALARM_LO | 31:0 | R/W | 0x0000 0000 |
TIMG_T0ALARMHI_REG(i) — таймер 0: значение будильника, старшие 22 бита
Смещение 0x0014, после сброса 0x0000 0000. TRM: регистр 11.6.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| T0_ALARM_HI | 21:0 | R/W | 0x000000 |
TIMG_T0LOADLO_REG(i) — таймер 0: значение перезагрузки, младшие 32 бита
Смещение 0x0018, после сброса 0x0000 0000. TRM: регистр 11.7.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| T0_LOAD_LO | 31:0 | R/W | 0x0000 0000 |
TIMG_T0LOADHI_REG(i) — таймер 0: значение перезагрузки, старшие 22 бита
Смещение 0x001C, после сброса 0x0000 0000. TRM: регистр 11.8.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| T0_LOAD_HI | 21:0 | R/W | 0x000000 |
TIMG_T0LOAD_REG(i) — таймер 0: загрузить значение перезагрузки сейчас
Смещение 0x0020, после сброса 0x0000 0000. TRM: регистр 11.9.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| T0_LOAD | 31:0 | WT | 0x0000 0000 | Любая запись загружает в счётчик T0LOADLO и T0LOADHI |
TIMG_WDTCONFIG0_REG(i) — сторож: включение, действия стадий, длительность сброса
Смещение 0x0048, после сброса 0x0004 C000. TRM: регистр 11.10.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| WDT_EN | WDT_STG0 | WDT_STG1 | WDT_STG2 | WDT_STG3 | WDT_CONF_UPDATE_EN | WDT_USE_XTAL | WDT_CPU_RESET_LENGTH | WDT_SYS_RESET_LENGTH | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| WDT_SYS_RESET_LENGTH | WDT_FLASHBOOT_MOD_EN | WDT_PROCPU_RESET_EN | WDT_APPCPU_RESET_EN | — | |||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_EN | 31 | R/W | 0 | Включить сторож |
| WDT_STG0 | 30:29 | R/W | 0x0 | Действие стадии 0: 0 — нет, 1 — прерывание, 2 — сброс процессора, 3 — сброс цифровой части (в TRM — reset system) |
| WDT_STG1 | 28:27 | R/W | 0x0 | Действие стадии 1 |
| WDT_STG2 | 26:25 | R/W | 0x0 | Действие стадии 2 |
| WDT_STG3 | 24:23 | R/W | 0x0 | Действие стадии 3 |
| WDT_CONF_UPDATE_EN | 22 | WT | 0 | Запись 1 применяет новые настройки сторожа |
| WDT_USE_XTAL | 21 | R/W | 0 | Такт сторожа: 1 — XTAL_CLK, 0 — APB_CLK |
| WDT_CPU_RESET_LENGTH | 20:18 | R/W | 0x1 | Длительность сигнала сброса процессора |
| WDT_SYS_RESET_LENGTH | 17:15 | R/W | 0x1 | Длительность сигнала сброса цифровой части |
| WDT_FLASHBOOT_MOD_EN | 14 | R/W | 1 | Сторож работает с начальной загрузки из флеш-памяти |
| WDT_PROCPU_RESET_EN | 13 | R/W | 0 | Разрешить сброс процессора |
| WDT_APPCPU_RESET_EN | 12 | R/W | 0 |
TIMG_WDTCONFIG1_REG(i) — сторож: предделитель
Смещение 0x004C, после сброса 0x0001 0000. TRM: регистр 11.11.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| WDT_CLK_PRESCALE | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | WDT_DIVCNT_RST | ||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_CLK_PRESCALE | 31:16 | R/W | 0x0001 | Предделитель такта сторожа |
| WDT_DIVCNT_RST | 0 | WT | 0 | Сброс предделителя |
TIMG_WDTCONFIG2_REG(i) — сторож: длительность стадии 0
Смещение 0x0050, после сброса 0x018C BA80. TRM: регистр 11.12.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_STG0_HOLD | 31:0 | R/W | 0x018C BA80 | Длительность стадии 0 в тактах после предделителя |
TIMG_WDTCONFIG3_REG(i) — сторож: длительность стадии 1
Смещение 0x0054, после сброса 0x07FF FFFF. TRM: регистр 11.13.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_STG1_HOLD | 31:0 | R/W | 0x07FF FFFF | Длительность стадии 1 |
TIMG_WDTCONFIG4_REG(i) — сторож: длительность стадии 2
Смещение 0x0058, после сброса 0x000F FFFF. TRM: регистр 11.14.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_STG2_HOLD | 31:0 | R/W | 0x000F FFFF | Длительность стадии 2 |
TIMG_WDTCONFIG5_REG(i) — сторож: длительность стадии 3
Смещение 0x005C, после сброса 0x000F FFFF. TRM: регистр 11.15.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_STG3_HOLD | 31:0 | R/W | 0x000F FFFF | Длительность стадии 3 |
TIMG_WDTFEED_REG(i) — сторож: кормление
Смещение 0x0060, после сброса 0x0000 0000. TRM: регистр 11.16.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_FEED | 31:0 | WT | 0x0000 0000 | Любая запись перезапускает сторож со стадии 0 |
TIMG_WDTWPROTECT_REG(i) — сторож: защита записи
Смещение 0x0064, после сброса 0x50D8 3AA1. TRM: регистр 11.17.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_WKEY | 31:0 | R/W | 0x50D8 3AA1 | Ключ 0x50D83AA1 снимает защиту записи регистров сторожа |
TIMG_RTCCALICFG_REG(i) — калибровка RTC-генератора: запуск и результат готов
Смещение 0x0068, после сброса 0x0001 3000. TRM: регистр 11.18.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RTC_CALI_START | RTC_CALI_MAX | ||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RTC_CALI_RDY | RTC_CALI_CLK_SEL | RTC_CALI_START_CYCLING | — | ||||||||||||
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| RTC_CALI_START | 31 | R/W | 0 |
| RTC_CALI_MAX | 30:16 | R/W | 0x0001 |
| RTC_CALI_RDY | 15 | RO | 0 |
| RTC_CALI_CLK_SEL | 14:13 | R/W | 0x1 |
| RTC_CALI_START_CYCLING | 12 | R/W | 1 |
TIMG_RTCCALICFG1_REG(i) — калибровка RTC-генератора: результат
Смещение 0x006C, после сброса 0x0000 0000. TRM: регистр 11.19.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RTC_CALI_VALUE | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RTC_CALI_VALUE | — | RTC_CALI_CYCLING_DATA_VLD | |||||||||||||
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| RTC_CALI_VALUE | 31:7 | RO | 0x0000000 |
| RTC_CALI_CYCLING_DATA_VLD | 0 | RO | 0 |
TIMG_INT_ENA_TIMERS_REG(i) — разрешение прерываний
Смещение 0x0070, после сброса 0x0000 0000. TRM: регистр 11.21.
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | WDT_INT_ENA | T0_INT_ENA | |||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_INT_ENA | 1 | R/W | 0 | Стадия сторожа, настроенная на прерывание |
| T0_INT_ENA | 0 | R/W | 0 | Сработал будильник таймера 0 |
TIMG_INT_RAW_TIMERS_REG(i) — необработанные флаги прерываний
Смещение 0x0074, после сброса 0x0000 0000. TRM: регистр 11.22.
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | WDT_INT_RAW | T0_INT_RAW | |||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_INT_RAW | 1 | R/SS/WTC | 0 | Стадия сторожа, настроенная на прерывание |
| T0_INT_RAW | 0 | R/SS/WTC | 0 | Сработал будильник таймера 0 |
TIMG_INT_ST_TIMERS_REG(i) — флаги прерываний после маски разрешения
Смещение 0x0078, после сброса 0x0000 0000. TRM: регистр 11.23.
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | WDT_INT_ST | T0_INT_ST | |||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_INT_ST | 1 | RO | 0 | Стадия сторожа, настроенная на прерывание |
| T0_INT_ST | 0 | RO | 0 | Сработал будильник таймера 0 |
TIMG_INT_CLR_TIMERS_REG(i) — сброс флагов прерываний записью 1
Смещение 0x007C, после сброса 0x0000 0000. TRM: регистр 11.24.
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | WDT_INT_CLR | T0_INT_CLR | |||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_INT_CLR | 1 | WT | 0 | Стадия сторожа, настроенная на прерывание |
| T0_INT_CLR | 0 | WT | 0 | Сработал будильник таймера 0 |
TIMG_RTCCALICFG2_REG(i) — калибровка RTC-генератора: таймаут
Смещение 0x0080, после сброса 0xFFFF FF98. TRM: регистр 11.20.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RTC_CALI_TIMEOUT_THRES | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RTC_CALI_TIMEOUT_THRES | RTC_CALI_TIMEOUT_RST_CNT | — | RTC_CALI_TIMEOUT | ||||||||||||
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| RTC_CALI_TIMEOUT_THRES | 31:7 | R/W | 0x1FFFFFF |
| RTC_CALI_TIMEOUT_RST_CNT | 6:3 | R/W | 0x3 |
| RTC_CALI_TIMEOUT | 0 | RO | 0 |
TIMG_NTIMERS_DATE_REG(i) — версия блока: дата ревизии аппаратуры
Смещение 0x00F8, после сброса 0x0200 6191. TRM: регистр 11.25 (TIMG_NTIMERS_DATE_REG).
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| NTIMGS_DATE | 27:0 | R/W | 0x2006191 |
TIMG_REGCLK_REG(i) — тактирование регистров и таймеров
Смещение 0x00FC, после сброса 0x6000 0000. TRM: регистр 11.26.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| CLK_EN | TIMER_CLK_IS_ACTIVE | WDT_CLK_IS_ACTIVE | — | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | |||||||||||||||
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| CLK_EN | 31 | R/W | 0 |
| TIMER_CLK_IS_ACTIVE | 30 | R/W | 1 |
| WDT_CLK_IS_ACTIVE | 29 | R/W | 1 |
Частые вопросы
Как прочитать значение таймера TIMG ESP32-C3?
Записать любое значение в TIMG_T0UPDATE_REG (бит T0_UPDATE), дождаться, пока бит сбросится, и прочитать младшие 32 бита из TIMG_T0LO_REG и старшие 22 — из TIMG_T0HI_REG. Без этой записи регистры хранят прошлое защёлкнутое значение.
Как отключить сторожевой таймер MWDT ESP32-C3 через регистры?
Снять защиту записью 0x50D83AA1 в TIMG_WDTWPROTECT_REG, сбросить бит WDT_EN в TIMG_WDTCONFIG0_REG, установить WDT_CONF_UPDATE_EN для применения и вернуть защиту записью любого другого значения. В ESP-IDF сторож группы 0 служит сторожем задач (Task WDT), группы 1 — сторожем прерываний (Interrupt WDT).
Источники
- Espressif. ESP32-C3 Technical Reference Manual, версия 1.4 — глава 11: таблица Register Summary и рисунки регистров — смещения, поля, тип доступа и значения после сброса
- Espressif. SVD svd/esp32c3.svd, версия 18 (espressif/svd, коммит be20aa1) — базовые адреса периферии, список регистров и полей; лицензия Apache-2.0
- Espressif. ESP-IDF v6.1: заголовки components/soc/esp32c3/register/soc/*_reg.h (коммит fff9895) — имена макросов регистров и полей, сверка положения полей и значений по умолчанию; лицензия Apache-2.0 OR MIT
Нашли ошибку в регистрах?
Другие регистры ESP32-C3
- Все регистры ESP32-C3Блоки периферии и базовые адреса
- GPIO — выводы общего назначения и матрица GPIOGPIO_BT_SELECT_REG, GPIO_OUT_REG, GPIO_OUT_W1TS_REG, GPIO_OUT_W1TC_REG
- IO MUX — мультиплексор функций и электрические настройки выводовPIN_CTRL, IO_MUX_GPIOn_REG, IO_MUX_DATE_REG
- UART — универсальный асинхронный приёмопередатчикUART_FIFO_REG, UART_INT_RAW_REG, UART_INT_ST_REG, UART_INT_ENA_REG
- SPI — контроллер SPI общего назначения GP-SPI2SPI_CMD_REG, SPI_ADDR_REG, SPI_CTRL_REG, SPI_CLOCK_REG
- I2C — контроллер шины I2CI2C_SCL_LOW_PERIOD_REG, I2C_CTR_REG, I2C_SR_REG, I2C_TO_REG
- LEDC — контроллер ШИМ для светодиодов и не толькоLEDC_LSCHn_CONF0_REG, LEDC_LSCHn_HPOINT_REG, LEDC_LSCHn_DUTY_REG, LEDC_LSCHn_CONF1_REG
- RMT — контроллер инфракрасного пульта и импульсных протоколовRMT_CHnDATA_REG, RMT_CHnCONF0_REG, RMT_CHnCONF0_REG, RMT_CHnCONF1_REG
- SYSTIMER — системный таймерSYSTIMER_CONF_REG, SYSTIMER_UNITn_OP_REG, SYSTIMER_UNITn_LOAD_HI_REG, SYSTIMER_UNITn_LOAD_LO_REG
- RTC_CNTL — управление питанием, сном и RTCRTC_CNTL_OPTIONS0_REG, RTC_CNTL_SLP_TIMER0_REG, RTC_CNTL_SLP_TIMER1_REG, RTC_CNTL_TIME_UPDATE_REG
- АЦП — 12-битный SAR АЦП и датчик температурыAPB_SARADC_CTRL_REG, APB_SARADC_CTRL2_REG, APB_SARADC_FILTER_CTRL1_REG, APB_SARADC_SAR_PATT_TABn_REG
- USB Serial/JTAG — встроенный USB-порт: виртуальный COM-порт и JTAGUSB_SERIAL_JTAG_EP1_REG, USB_SERIAL_JTAG_EP1_CONF_REG, USB_SERIAL_JTAG_INT_RAW_REG, USB_SERIAL_JTAG_INT_ST_REG
- eFuse — однократно программируемая память настроек и ключейEFUSE_RD_WR_DIS_REG, EFUSE_RD_REPEAT_DATA0_REG, EFUSE_RD_REPEAT_DATA1_REG, EFUSE_RD_REPEAT_DATA2_REG
- INTERRUPT — матрица прерыванийINTERRUPT_CORE0_PWR_INTR_MAP_REG, INTERRUPT_CORE0_I2C_MST_INT_MAP_REG, INTERRUPT_CORE0_SLCn_INTR_MAP_REG, INTERRUPT_CORE0_APB_CTRL_INTR_MAP_REG