diff --git a/src/reading-writing-registers/Makefile b/src/reading-writing-registers/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..687c03977905c209ad00fb7b2870f36d156690fd --- /dev/null +++ b/src/reading-writing-registers/Makefile @@ -0,0 +1,3 @@ +SOURCES = main.c esp32-c3-register-interface.c + +include $(MDK)/$(ARCH)/build.mk diff --git a/src/reading-writing-registers/esp32-c3-register-interface.c b/src/reading-writing-registers/esp32-c3-register-interface.c new file mode 100644 index 0000000000000000000000000000000000000000..a20d40fb63108671ed706c515faef92920153a68 --- /dev/null +++ b/src/reading-writing-registers/esp32-c3-register-interface.c @@ -0,0 +1,14 @@ +#include "esp32-c3-uart-interface.h" +#include <stdint.h> + +void readSetClear(){ + uint32_t core_value = *C3_UART_CLK_CONF_REG(0); + + // set UART_RST_CORE + core_value |= 1<<23; + *C3_UART_CLK_CONF_REG(0) = core_value; + + // clear UART_RST_CORE + core_value &= (uint32_t)~(1<<23); + *C3_UART_CLK_CONF_REG(0) = core_value; +} \ No newline at end of file diff --git a/src/reading-writing-registers/esp32-c3-register-interface.h b/src/reading-writing-registers/esp32-c3-register-interface.h new file mode 100644 index 0000000000000000000000000000000000000000..d012dda1ad16c9a33c1d34ba5f70b6f6ff28873a --- /dev/null +++ b/src/reading-writing-registers/esp32-c3-register-interface.h @@ -0,0 +1,17 @@ +#ifndef ESP32_C3_REGISTER_INTERFACE_H +#define ESP32_C3_REGISTER_INTERFACE_H + +#define C3_UART_CONTROLLER_0_BASE ((uint32_t)0x60000000) +#define C3_UART_CONTROLLER_1_BASE ((uint32_t)0x60010000) +#define C3_UART_CONTROLLER_SELECT(base_select) ((volatile uint32_t *)((base_select == 1) ? C3_UART_CONTROLLER_1_BASE : C3_UART_CONTROLLER_0_BASE)) + +#define C3_UART_CLK_CONF_REG(base_select) ((volatile uint32_t *)(C3_UART_CONTROLLER_SELECT((base_select)) + 0x0078)) +// UART_RST_CORE is on 23 +// UART_SCLK_SEL is on 20 and 21 (2 bits), selcetion is between 1 and 3 +// UART_SCLK_DIV_NUM - The integral part of the frequency divisor - 12 to 19 +// UART_SCLK_DIV_A - The numerator of the frequency divisor - 6 to 11 +// UART_SCLK_DIV_B - The denominator of the frequency divisor - 0 to 5 + +void readSetClear(); + +#endif \ No newline at end of file diff --git a/src/reading-writing-registers/main.c b/src/reading-writing-registers/main.c new file mode 100644 index 0000000000000000000000000000000000000000..e2011f946c723feaacb9bd61b39f0c2ae0d53da2 --- /dev/null +++ b/src/reading-writing-registers/main.c @@ -0,0 +1,13 @@ +// Copyright (c) Charles Lohr +// All rights reserved + +#include <mdk.h> +#include "esp32-c3-register-interface.h" + +int main(void) { + wdt_disable(); + + readSetClear(); + + return 0; +}