Add esp/wdt_regs.h
This commit is contained in:
parent
eaa090e267
commit
c32a6692a0
2 changed files with 40 additions and 12 deletions
|
@ -19,11 +19,9 @@
|
||||||
#include "esp/iomux_regs.h"
|
#include "esp/iomux_regs.h"
|
||||||
#include "esp/gpio_regs.h"
|
#include "esp/gpio_regs.h"
|
||||||
#include "esp/timer_regs.h"
|
#include "esp/timer_regs.h"
|
||||||
|
#include "esp/wdt_regs.h"
|
||||||
#include "esp/dport_regs.h"
|
#include "esp/dport_regs.h"
|
||||||
|
|
||||||
/* Internal macro, only defined in header body */
|
|
||||||
#define _REG(BASE, OFFSET) (*(esp_reg_t)((BASE)+(OFFSET)))
|
|
||||||
|
|
||||||
/* Register base addresses
|
/* Register base addresses
|
||||||
|
|
||||||
You shouldn't need to use these directly.
|
You shouldn't need to use these directly.
|
||||||
|
@ -38,19 +36,11 @@
|
||||||
//#define TIMER_BASE (MMIO_BASE + 0x0600)
|
//#define TIMER_BASE (MMIO_BASE + 0x0600)
|
||||||
#define RTC_BASE (MMIO_BASE + 0x0700)
|
#define RTC_BASE (MMIO_BASE + 0x0700)
|
||||||
//#define IOMUX_BASE (MMIO_BASE + 0x0800)
|
//#define IOMUX_BASE (MMIO_BASE + 0x0800)
|
||||||
#define WDT_BASE (MMIO_BASE + 0x0900)
|
//#define WDT_BASE (MMIO_BASE + 0x0900)
|
||||||
#define I2C_BASE (MMIO_BASE + 0x0d00)
|
#define I2C_BASE (MMIO_BASE + 0x0d00)
|
||||||
#define UART1_BASE (MMIO_BASE + 0x0F00)
|
#define UART1_BASE (MMIO_BASE + 0x0F00)
|
||||||
#define RTCB_BASE (MMIO_BASE + 0x1000)
|
#define RTCB_BASE (MMIO_BASE + 0x1000)
|
||||||
#define RTCS_BASE (MMIO_BASE + 0x1100)
|
#define RTCS_BASE (MMIO_BASE + 0x1100)
|
||||||
#define RTCU_BASE (MMIO_BASE + 0x1200)
|
#define RTCU_BASE (MMIO_BASE + 0x1200)
|
||||||
|
|
||||||
/* WDT register(s)
|
|
||||||
|
|
||||||
Not fully understood yet. Writing 0 here disables wdt.
|
|
||||||
|
|
||||||
See ROM functions esp_wdt_xxx
|
|
||||||
*/
|
|
||||||
#define WDT_CTRL _REG(WDT_BASE, 0x00)
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
38
core/include/esp/wdt_regs.h
Normal file
38
core/include/esp/wdt_regs.h
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/* esp/wdt_regs.h
|
||||||
|
*
|
||||||
|
* ESP8266 Watchdog Timer register definitions
|
||||||
|
*
|
||||||
|
* Not compatible with ESP SDK register access code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ESP_WDT_REGS_H
|
||||||
|
#define _ESP_WDT_REGS_H
|
||||||
|
|
||||||
|
#include "esp/types.h"
|
||||||
|
#include "common_macros.h"
|
||||||
|
|
||||||
|
#define WDT_BASE 0x60000900
|
||||||
|
#define WDT (*(struct WDT_REGS *)(WDT_BASE))
|
||||||
|
|
||||||
|
/* WDT register(s)
|
||||||
|
|
||||||
|
Not fully understood yet. Writing 0 to CTRL disables WDT.
|
||||||
|
|
||||||
|
See ROM functions esp_wdt_xxx
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct WDT_REGS {
|
||||||
|
uint32_t volatile CTRL; // 0x00
|
||||||
|
uint32_t volatile REG1; // 0x04
|
||||||
|
uint32_t volatile REG2; // 0x08
|
||||||
|
uint32_t volatile _unused[2]; // 0x0c - 0x10
|
||||||
|
uint32_t volatile FEED; // 0x14
|
||||||
|
} __attribute__ (( packed ));
|
||||||
|
|
||||||
|
_Static_assert(sizeof(struct WDT_REGS) == 0x18, "WDT_REGS is the wrong size");
|
||||||
|
|
||||||
|
/* Writing WDT_FEED_MAGIC to WDT.FEED register "feeds the dog" and holds off
|
||||||
|
* triggering for another cycle (unconfirmed) */
|
||||||
|
#define WDT_FEED_MAGIC 0x73
|
||||||
|
|
||||||
|
#endif /* _ESP_WDT_REGS_H */
|
Loading…
Reference in a new issue