From 74bc0d25b76e67ce5d79a83e595bb3d7e2d3461f Mon Sep 17 00:00:00 2001 From: kuwoyuki Date: Tue, 15 Oct 2024 00:16:50 +0600 Subject: [PATCH] aaaaaaaaaaaaaaaa --- .gitignore | 1 + README.md | 4 +-- notes/2024-10-15-001533_1895x722_scrot.png | Bin 0 -> 84838 bytes src/funconfig.h | 2 +- src/gpio.c | 7 ++++- src/main.c | 30 ++++++++++++++++----- src/spi_dma.c | 8 +++--- src/systick.c | 9 ++++++- src/timer.c | 2 +- 9 files changed, 47 insertions(+), 16 deletions(-) create mode 100644 notes/2024-10-15-001533_1895x722_scrot.png diff --git a/.gitignore b/.gitignore index 89cc49c..49438b2 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ .vscode/c_cpp_properties.json .vscode/launch.json .vscode/ipch +prv/ \ No newline at end of file diff --git a/README.md b/README.md index d47321f..b498074 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,8 @@ fw for a ch32v203 node w/ w5500 ethernet - SPI DMA only works with [prescalers](https://git.hye.su/mira/ch32-node/src/branch/master/src/spi_dma.c#L140) 8 and 64? - Also, for some reason it needs a ~50ms delay before configuring w5500 when compiled **with** `-O0`, not needed with `-Os`... -idk... -![systick_dma](notes/2024-10-14-182212_1566x610_scrot.png) +Not an interrupt priority issue?: +![LA](notes/2024-10-15-001533_1895x722_scrot.png) ## ~~previous (DNS Processing)~~ diff --git a/notes/2024-10-15-001533_1895x722_scrot.png b/notes/2024-10-15-001533_1895x722_scrot.png new file mode 100644 index 0000000000000000000000000000000000000000..3dd64c724908b629cc57c8843f1932ec026605a5 GIT binary patch literal 84838 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 z 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%0A5HU;H-lV$#GU7@Gay`PO^rGR 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 literal 0 HcmV?d00001 diff --git a/src/funconfig.h b/src/funconfig.h index 4def413..71ac866 100644 --- a/src/funconfig.h +++ b/src/funconfig.h @@ -11,7 +11,7 @@ #define FUNCONF_USE_UARTPRINTF 0 #define FUNCONF_UART_PRINTF_BAUD \ 115200 // Only used if FUNCONF_USE_UARTPRINTF is set. -#define FUNCONF_USE_CLK_SEC 0 +#define FUNCONF_USE_CLK_SEC 1 #define FUNCONF_SYSTICK_USE_HCLK 1 #define FUNCONF_DEBUG 1 diff --git a/src/gpio.c b/src/gpio.c index b2d0677..9be9636 100644 --- a/src/gpio.c +++ b/src/gpio.c @@ -6,8 +6,13 @@ void init_gpio(void) { // Enable clock for GPIOB RCC->APB2PCENR |= RCC_APB2Periph_GPIOB; - // GPIOB Configuration: Pins 3 and 4 as Output, Push-Pull, 10MHz + // GPIOB: Pins 3 and 4 as Output, Push-Pull, 10MHz GPIOB->CFGLR &= ~((0xF << (4 * 3)) | (0xF << (4 * 4))); GPIOB->CFGLR |= ((GPIO_Speed_10MHz | GPIO_CNF_OUT_PP) << (4 * 3)) | ((GPIO_Speed_10MHz | GPIO_CNF_OUT_PP) << (4 * 4)); + + // XXX: SysTick debug + // GPIOB: Pin 9 as Output, Push-Pull, 10MHz + GPIOB->CFGHR &= ~(0xF << (4 * (9 - 8))); + GPIOB->CFGHR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_PP) << (4 * (9 - 8)); } diff --git a/src/main.c b/src/main.c index 2e33688..dd6b666 100644 --- a/src/main.c +++ b/src/main.c @@ -14,6 +14,9 @@ void init_system(void) { SystemInit(); init_gpio(); + init_systick(); + tim2_init(); + init_uart(UART_BRR_APB1); init_spidma(); } @@ -44,20 +47,33 @@ void message_arrived(MessageData* md) { } } +void print_binary(uint32_t value) { + for (int i = 31; i >= 0; i--) { + DEBUG_PRINT("%d", (value >> i) & 1); + if (i % 4 == 0) printf(" "); // Add space for readability + } + DEBUG_PRINT("\n"); +} + int main(void) { init_system(); Delay_Ms(55); + + uint32_t intsyscr = __get_INTSYSCR(); + DEBUG_PRINT("INTSYSCR Register Configuration:\n"); + DEBUG_PRINT("Hexadecimal: 0x%08X\n", intsyscr); + DEBUG_PRINT("Binary: "); + print_binary(intsyscr); + // DEBUG_PRINT("init_system() done\n"); configure_network(); - // TODO: enabling any kind of SysTick IRQ literally causes the socket to hang forever - // with 1ms interval the hang is on DHCP_ACK, on check_DHCP_leasedIP -> sendto() ARP req - // with 1s it happens somewhere on DNS req - // init_systick(); - tim2_init(); + // TODO: enabling any kind of SysTick IRQ literally causes the socket to hang + // forever with 1ms interval the hang is on DHCP_ACK, on check_DHCP_leasedIP + // -> sendto() ARP req with 100ms it happens somewhere on DNS req - // systick irq enable here would complete the DHCP configuration and hang on DNS.. - // init_systick(); + // systick irq enable here would complete the DHCP configuration and hang on + // DNS.. init_systick(); configure_dhcp(); resolve_domain_name("example.com"); diff --git a/src/spi_dma.c b/src/spi_dma.c index c9290d4..dda18c8 100644 --- a/src/spi_dma.c +++ b/src/spi_dma.c @@ -118,7 +118,7 @@ void init_spidma(void) { // SPI1 Pin Configuration // CS on PA4, 10MHz Output, open-drain GPIOA->CFGLR &= ~(0xf << (4 * 4)); - GPIOA->CFGLR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_OD) << (4 * 4); + GPIOA->CFGLR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_PP) << (4 * 4); // SCK on PA5, 10MHz Output, alt func, push-pull GPIOA->CFGLR &= ~(0xf << (4 * 5)); GPIOA->CFGLR |= (GPIO_Speed_50MHz | GPIO_CNF_OUT_PP_AF) << (4 * 5); @@ -159,8 +159,10 @@ void init_spidma(void) { DMA_MemoryInc_Enable | DMA_PeripheralInc_Disable | DMA_Mode_Normal | DMA_DIR_PeripheralSRC | DMA_IT_TC; - NVIC_SetPriority(DMA1_Channel2_IRQn, 0); - NVIC_SetPriority(DMA1_Channel3_IRQn, 0); + // NVIC_SetPriority(DMA1_Channel2_IRQn, 0); + // NVIC_SetPriority(DMA1_Channel3_IRQn, 0); + NVIC_SetPriority(DMA1_Channel2_IRQn, 0x20); + NVIC_SetPriority(DMA1_Channel3_IRQn, 0x20); NVIC_EnableIRQ(DMA1_Channel3_IRQn); NVIC_EnableIRQ(DMA1_Channel2_IRQn); } diff --git a/src/systick.c b/src/systick.c index 29dc5c9..5e0fab6 100644 --- a/src/systick.c +++ b/src/systick.c @@ -5,6 +5,7 @@ // ms counter volatile uint32_t systick_millis = 0; +volatile int toggle_state = 0; void init_systick(void) { SysTick->CTLR = 0; @@ -13,7 +14,7 @@ void init_systick(void) { systick_millis = 0; // Enable the SysTick IRQ - NVIC_SetPriority(SysTicK_IRQn, 0xf0); + NVIC_SetPriority(SysTicK_IRQn, 0x60); NVIC_EnableIRQ(SysTicK_IRQn); /* Enable SysTick counter, IRQ, HCLK/1 */ SysTick->CTLR = SYSTICK_CTLR_STE | SYSTICK_CTLR_STIE | SYSTICK_CTLR_STCLK; @@ -26,6 +27,12 @@ void init_systick(void) { */ void SysTick_Handler(void) __attribute__((interrupt)); void SysTick_Handler(void) { + if (toggle_state) { + GPIOB->BSHR = (1 << 9); // Set PB9 high + } else { + GPIOB->BCR = (1 << 9); // Set PB9 low + } + toggle_state = !toggle_state; // Increment the Compare Register for the next trigger // If more than this number of ticks elapse before the trigger is reset, // you may miss your next interrupt trigger diff --git a/src/timer.c b/src/timer.c index 2f53dd0..a5ce524 100644 --- a/src/timer.c +++ b/src/timer.c @@ -26,7 +26,7 @@ void tim2_init(void) { // Enable TIM2 TIM2->CTLR1 |= TIM_CEN; -// NVIC_SetPriority(TIM2_IRQn, 0xf0); + NVIC_SetPriority(TIM2_IRQn, 0x40); NVIC_EnableIRQ(TIM2_IRQn); }