From 039680a8d49bfd53e6e8a05dd950f526de28eb80 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Tue, 25 Jan 2022 23:24:48 +0100 Subject: [PATCH] cardem: set more reasonable interrupt priorities the ISO7816 UARTs have highest priority, while console has lowest. remaining sources (USB, ADC, GPIO) are in between. Change-Id: Ie6c97d61d8da3990b6e44144f36cb6d37d194307 --- firmware/apps/cardem/main.c | 2 +- firmware/libboard/common/source/uart_console.c | 1 + firmware/libcommon/source/mode_cardemu.c | 5 +++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/firmware/apps/cardem/main.c b/firmware/apps/cardem/main.c index d212d2aa..347ccbda 100644 --- a/firmware/apps/cardem/main.c +++ b/firmware/apps/cardem/main.c @@ -155,7 +155,7 @@ extern int main(void) WDT_Enable(WDT, WDT_MR_WDRSTEN | WDT_MR_WDDBGHLT | WDT_MR_WDIDLEHLT | (WDT_GetPeriod(2000) << 16) | WDT_GetPeriod(2000)); - PIO_InitializeInterrupts(0); + PIO_InitializeInterrupts(10); print_banner(); board_main_top(); diff --git a/firmware/libboard/common/source/uart_console.c b/firmware/libboard/common/source/uart_console.c index bcfb0b7a..ead5555b 100644 --- a/firmware/libboard/common/source/uart_console.c +++ b/firmware/libboard/common/source/uart_console.c @@ -100,6 +100,7 @@ extern void UART_Configure( uint32_t baudrate, uint32_t masterClock) /* Enable TX interrupts */ pUart->UART_IER = UART_IER_TXRDY; + NVIC_SetPriority(CONSOLE_IRQ, 15); /* lowest priority */ NVIC_EnableIRQ(CONSOLE_IRQ); /* Enable receiver and transmitter */ diff --git a/firmware/libcommon/source/mode_cardemu.c b/firmware/libcommon/source/mode_cardemu.c index 2a8e4772..7fd069a6 100644 --- a/firmware/libcommon/source/mode_cardemu.c +++ b/firmware/libcommon/source/mode_cardemu.c @@ -470,6 +470,7 @@ static int card_vcc_adc_init(void) ADC->ADC_CHER |= ADC_CHER_CH6; ADC->ADC_IER |= ADC_IER_EOC6; #endif + NVIC_SetPriority(ADC_IRQn, 13); NVIC_EnableIRQ(ADC_IRQn); ADC->ADC_CR |= ADC_CR_START; @@ -573,6 +574,8 @@ void mode_cardemu_init(void) TRACE_ENTRY(); + NVIC_SetPriority(UDP_IRQn, 14); + #ifdef PINS_CARDSIM PIO_Configure(pins_cardsim, PIO_LISTSIZE(pins_cardsim)); #endif @@ -586,6 +589,7 @@ void mode_cardemu_init(void) /* configure USART as ISO-7816 slave (e.g. card) */ ISO7816_Init(&cardem_inst[0].usart_info, CLK_SLAVE); + NVIC_SetPriority(FIRST_USART_IRQ, 0); NVIC_EnableIRQ(FIRST_USART_IRQ); PIO_ConfigureIt(&pin_usim1_rst, usim1_rst_irqhandler); PIO_EnableIt(&pin_usim1_rst); @@ -613,6 +617,7 @@ void mode_cardemu_init(void) PIO_Configure(pins_usim2, PIO_LISTSIZE(pins_usim2)); ISO7816_Init(&cardem_inst[1].usart_info, CLK_SLAVE); /* TODO enable timeout */ + NVIC_SetPriority(USART0_IRQn, 0); NVIC_EnableIRQ(USART0_IRQn); PIO_ConfigureIt(&pin_usim2_rst, usim2_rst_irqhandler); PIO_EnableIt(&pin_usim2_rst);