kopia lustrzana https://github.com/espressif/esp-idf
Merge branch 'bugfix/deep_sleep_rtcwdt_rst_issue' into 'master'
clear wakeup and reject int raw signal before entry sleep Closes FCS-673 See merge request espressif/esp-idf!13982pull/7307/head
commit
d28417edbc
|
@ -230,6 +230,9 @@ uint32_t rtc_sleep_start(uint32_t wakeup_opt, uint32_t reject_opt)
|
||||||
REG_SET_FIELD(RTC_CNTL_WAKEUP_STATE_REG, RTC_CNTL_WAKEUP_ENA, wakeup_opt);
|
REG_SET_FIELD(RTC_CNTL_WAKEUP_STATE_REG, RTC_CNTL_WAKEUP_ENA, wakeup_opt);
|
||||||
WRITE_PERI_REG(RTC_CNTL_SLP_REJECT_CONF_REG, reject_opt);
|
WRITE_PERI_REG(RTC_CNTL_SLP_REJECT_CONF_REG, reject_opt);
|
||||||
|
|
||||||
|
SET_PERI_REG_MASK(RTC_CNTL_INT_CLR_REG,
|
||||||
|
RTC_CNTL_SLP_REJECT_INT_CLR | RTC_CNTL_SLP_WAKEUP_INT_CLR);
|
||||||
|
|
||||||
/* Start entry into sleep mode */
|
/* Start entry into sleep mode */
|
||||||
SET_PERI_REG_MASK(RTC_CNTL_STATE0_REG, RTC_CNTL_SLEEP_EN);
|
SET_PERI_REG_MASK(RTC_CNTL_STATE0_REG, RTC_CNTL_SLEEP_EN);
|
||||||
|
|
||||||
|
@ -249,6 +252,9 @@ uint32_t rtc_deep_sleep_start(uint32_t wakeup_opt, uint32_t reject_opt)
|
||||||
REG_SET_FIELD(RTC_CNTL_WAKEUP_STATE_REG, RTC_CNTL_WAKEUP_ENA, wakeup_opt);
|
REG_SET_FIELD(RTC_CNTL_WAKEUP_STATE_REG, RTC_CNTL_WAKEUP_ENA, wakeup_opt);
|
||||||
WRITE_PERI_REG(RTC_CNTL_SLP_REJECT_CONF_REG, reject_opt);
|
WRITE_PERI_REG(RTC_CNTL_SLP_REJECT_CONF_REG, reject_opt);
|
||||||
|
|
||||||
|
SET_PERI_REG_MASK(RTC_CNTL_INT_CLR_REG,
|
||||||
|
RTC_CNTL_SLP_REJECT_INT_CLR | RTC_CNTL_SLP_WAKEUP_INT_CLR);
|
||||||
|
|
||||||
/* Calculate RTC Fast Memory CRC (for wake stub) & go to deep sleep
|
/* Calculate RTC Fast Memory CRC (for wake stub) & go to deep sleep
|
||||||
|
|
||||||
Because we may be running from RTC memory as stack, we can't easily call any
|
Because we may be running from RTC memory as stack, we can't easily call any
|
||||||
|
|
|
@ -151,6 +151,9 @@ uint32_t rtc_sleep_start(uint32_t wakeup_opt, uint32_t reject_opt, uint32_t lslp
|
||||||
REG_SET_FIELD(RTC_CNTL_WAKEUP_STATE_REG, RTC_CNTL_WAKEUP_ENA, wakeup_opt);
|
REG_SET_FIELD(RTC_CNTL_WAKEUP_STATE_REG, RTC_CNTL_WAKEUP_ENA, wakeup_opt);
|
||||||
REG_SET_FIELD(RTC_CNTL_SLP_REJECT_CONF_REG, RTC_CNTL_SLEEP_REJECT_ENA, reject_opt);
|
REG_SET_FIELD(RTC_CNTL_SLP_REJECT_CONF_REG, RTC_CNTL_SLEEP_REJECT_ENA, reject_opt);
|
||||||
|
|
||||||
|
SET_PERI_REG_MASK(RTC_CNTL_INT_CLR_REG,
|
||||||
|
RTC_CNTL_SLP_REJECT_INT_CLR | RTC_CNTL_SLP_WAKEUP_INT_CLR);
|
||||||
|
|
||||||
/* Start entry into sleep mode */
|
/* Start entry into sleep mode */
|
||||||
SET_PERI_REG_MASK(RTC_CNTL_STATE0_REG, RTC_CNTL_SLEEP_EN);
|
SET_PERI_REG_MASK(RTC_CNTL_STATE0_REG, RTC_CNTL_SLEEP_EN);
|
||||||
|
|
||||||
|
@ -170,6 +173,9 @@ uint32_t rtc_deep_sleep_start(uint32_t wakeup_opt, uint32_t reject_opt)
|
||||||
REG_SET_FIELD(RTC_CNTL_WAKEUP_STATE_REG, RTC_CNTL_WAKEUP_ENA, wakeup_opt);
|
REG_SET_FIELD(RTC_CNTL_WAKEUP_STATE_REG, RTC_CNTL_WAKEUP_ENA, wakeup_opt);
|
||||||
WRITE_PERI_REG(RTC_CNTL_SLP_REJECT_CONF_REG, reject_opt);
|
WRITE_PERI_REG(RTC_CNTL_SLP_REJECT_CONF_REG, reject_opt);
|
||||||
|
|
||||||
|
SET_PERI_REG_MASK(RTC_CNTL_INT_CLR_REG,
|
||||||
|
RTC_CNTL_SLP_REJECT_INT_CLR | RTC_CNTL_SLP_WAKEUP_INT_CLR);
|
||||||
|
|
||||||
/* Calculate RTC Fast Memory CRC (for wake stub) & go to deep sleep
|
/* Calculate RTC Fast Memory CRC (for wake stub) & go to deep sleep
|
||||||
|
|
||||||
Because we may be running from RTC memory as stack, we can't easily call any
|
Because we may be running from RTC memory as stack, we can't easily call any
|
||||||
|
|
|
@ -154,6 +154,9 @@ uint32_t rtc_sleep_start(uint32_t wakeup_opt, uint32_t reject_opt, uint32_t lslp
|
||||||
REG_SET_BIT(RTC_CNTL_SLP_REJECT_CONF_REG, RTC_CNTL_LIGHT_SLP_REJECT_EN);
|
REG_SET_BIT(RTC_CNTL_SLP_REJECT_CONF_REG, RTC_CNTL_LIGHT_SLP_REJECT_EN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SET_PERI_REG_MASK(RTC_CNTL_INT_CLR_REG,
|
||||||
|
RTC_CNTL_SLP_REJECT_INT_CLR | RTC_CNTL_SLP_WAKEUP_INT_CLR);
|
||||||
|
|
||||||
/* Start entry into sleep mode */
|
/* Start entry into sleep mode */
|
||||||
SET_PERI_REG_MASK(RTC_CNTL_STATE0_REG, RTC_CNTL_SLEEP_EN);
|
SET_PERI_REG_MASK(RTC_CNTL_STATE0_REG, RTC_CNTL_SLEEP_EN);
|
||||||
|
|
||||||
|
@ -173,6 +176,9 @@ uint32_t rtc_deep_sleep_start(uint32_t wakeup_opt, uint32_t reject_opt)
|
||||||
REG_SET_FIELD(RTC_CNTL_WAKEUP_STATE_REG, RTC_CNTL_WAKEUP_ENA, wakeup_opt);
|
REG_SET_FIELD(RTC_CNTL_WAKEUP_STATE_REG, RTC_CNTL_WAKEUP_ENA, wakeup_opt);
|
||||||
WRITE_PERI_REG(RTC_CNTL_SLP_REJECT_CONF_REG, reject_opt);
|
WRITE_PERI_REG(RTC_CNTL_SLP_REJECT_CONF_REG, reject_opt);
|
||||||
|
|
||||||
|
SET_PERI_REG_MASK(RTC_CNTL_INT_CLR_REG,
|
||||||
|
RTC_CNTL_SLP_REJECT_INT_CLR | RTC_CNTL_SLP_WAKEUP_INT_CLR);
|
||||||
|
|
||||||
/* Calculate RTC Fast Memory CRC (for wake stub) & go to deep sleep
|
/* Calculate RTC Fast Memory CRC (for wake stub) & go to deep sleep
|
||||||
|
|
||||||
Because we may be running from RTC memory as stack, we can't easily call any
|
Because we may be running from RTC memory as stack, we can't easily call any
|
||||||
|
|
|
@ -163,6 +163,9 @@ __attribute__((weak)) uint32_t rtc_sleep_start(uint32_t wakeup_opt, uint32_t rej
|
||||||
REG_SET_FIELD(RTC_CNTL_WAKEUP_STATE_REG, RTC_CNTL_WAKEUP_ENA, wakeup_opt);
|
REG_SET_FIELD(RTC_CNTL_WAKEUP_STATE_REG, RTC_CNTL_WAKEUP_ENA, wakeup_opt);
|
||||||
REG_SET_FIELD(RTC_CNTL_SLP_REJECT_CONF_REG, RTC_CNTL_SLEEP_REJECT_ENA, reject_opt);
|
REG_SET_FIELD(RTC_CNTL_SLP_REJECT_CONF_REG, RTC_CNTL_SLEEP_REJECT_ENA, reject_opt);
|
||||||
|
|
||||||
|
SET_PERI_REG_MASK(RTC_CNTL_INT_CLR_REG,
|
||||||
|
RTC_CNTL_SLP_REJECT_INT_CLR | RTC_CNTL_SLP_WAKEUP_INT_CLR);
|
||||||
|
|
||||||
/* Start entry into sleep mode */
|
/* Start entry into sleep mode */
|
||||||
SET_PERI_REG_MASK(RTC_CNTL_STATE0_REG, RTC_CNTL_SLEEP_EN);
|
SET_PERI_REG_MASK(RTC_CNTL_STATE0_REG, RTC_CNTL_SLEEP_EN);
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue