Skip to content

Commit

Permalink
cardem: set more reasonable interrupt priorities
Browse files Browse the repository at this point in the history
the ISO7816 UARTs have highest priority, while console has lowest.

remaining sources (USB, ADC, GPIO) are in between.

Change-Id: Ie6c97d61d8da3990b6e44144f36cb6d37d194307
  • Loading branch information
laf0rge committed Feb 21, 2022
1 parent 8680677 commit 039680a
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 1 deletion.
2 changes: 1 addition & 1 deletion firmware/apps/cardem/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
1 change: 1 addition & 0 deletions firmware/libboard/common/source/uart_console.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down
5 changes: 5 additions & 0 deletions firmware/libcommon/source/mode_cardemu.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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
Expand All @@ -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);
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit 039680a

Please sign in to comment.