This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6747 uart rx interrupt not firing

Hello,

I'm just starting with the C6747 and I'm trying to get the uart rx interrupt to fire on the evm.  

I have set up the interrupt controller and I think everything is initialised properly but the interrupt is not firing.   I am not using the fifo.

I can see that the correct byte is being received by looking in CCS debug and that all the interrupt registers are set correctly (interrupts are enabled etc).

Basically, the sequence for initialization is this:-

0. Disable all interrupts.

1. Setup uart registers for baud rate etc (fifo and modem not used)

2. Set ERBI in uart IER

3. Map uart event to cpu interrupt 6

4. Enable int 6 in IER

5. Enable global interrupts.

6. Enter a while(1) loop and handle rx interrupts when they occur.

 

I must be missing a vital step somewhere - can anyone help me ?

 

 

 

  • I recommend that you temporarily switch to polling on the UART status to verify that the peripheral setup is correct.  Once you are confident of that, then move on to configure the DSP to receive and process interrupts events.

    In general, your listed steps appear correct, but I would guess that something in the details is not quite right.  The above test should lead us to focus on either the peripheral setup or the core setup.

    Regards, Daniel

  • Thanks.

    I originally used polling to verify everything - it was when I switched to using interrupts that it stopped working.

    I have now found out what the problem was :  it was in step 4.  Enable int 6 in IER.   Reading the documentation again I noticed that the NMI bit must be enabled as well.

    So step 4 should be  ' Enable int 6 and NMI in IER'.

     

    And suddenly everything works.

     


     

  •     if you do not use DSP/BIOS, your interrupt ISR function should used keyword "interrupt", please have a try.