cancel
Showing results for 
Search instead for 
Did you mean: 

BDMA_ChannelX_IRQHandler being entered with ISR == 0. (H750)

VN.2
Associate III

I'm a bit confused what ISR==0 means in a DMA IRQ handler. I can skip it but wonder if something is configured incorrectly. Is "ISR==0" an expected and valid case or do I need to delve into settings? 

No error code is set, I am funneling all BDMA ISRs into my two functions.

x/8w LogBuffer+100

0xc0800190: 0x00000077 0x00000070 0x00000077 0x00000070

0xc08001a0: 0x00000070 0x00000077 0x00000070 0x00000000

p DMACount

$1 = 7

extern "C" void BDMA_Channel1_IRQHandler(void)
{
    if (((BDMA_Base_Registers *)(DMA_Handle_Channel1.StreamBaseAddress))->ISR == 0) {
        volatile uint32_t x = *((uint32_t*)(0x57b800)); // Force hardfault.
        x += 1;
    }
    LogBuffer[100 + DMACount] = ((BDMA_Base_Registers *)(DMA_Handle_Channel1.StreamBaseAddress))->ISR;
    ((BDMA_Base_Registers *)(DMA_Handle_Channel1.StreamBaseAddress))->IFCR = 1 << 4;
    DMACount += 1;
}
 
extern "C" void BDMA_Channel0_IRQHandler(void)
{
    if (((BDMA_Base_Registers *)(DMA_Handle_Channel1.StreamBaseAddress))->ISR == 0) {
        volatile uint32_t x = *((uint32_t*)(0x57b800)); // Force hardfault.
        x += 1;
    }
    LogBuffer[100 + DMACount] = ((BDMA_Base_Registers *)(DMA_Handle_Channel0.StreamBaseAddress))->ISR;
    ((BDMA_Base_Registers *)(DMA_Handle_Channel0.StreamBaseAddress))->IFCR = 1;
    DMACount += 1;
}

0 REPLIES 0