An RC5 decoder and preamp controller. Written on the LPC11U24, Ported to LPC1114 and now 100% stable (January 2016)

Dependents:   AppleRemoteController_copy_Production_Version AppleRemoteController_Reference_Only

Issue: Serious Problems in Interrupts on GPIO Pins LPC1114

Program runs correctly and is stable on LPC11U24. I ported it to the LPC1114 with no changes except to the pin assignments in order to suit my hardware layout.

Issues

1. Ported to LPC1114 and made pin assignment changes. Any pushbutton interrupt on P0_7, P1_4 or P1_5 (corresponding to mbed LPC1114 pins 28, 13 and 14) causes the program to hang - only way out is to reset. When not 'hanged', outputs and the IR remote control all work correctly if and only if the IR R/control is used which uses P1_6 as a digital input (pin 15) for the serial input stream. As soon as a P/button on one of the above mentioned pins is used, it hangs.

2. I also note that I cannot seem to disable IRQ's using my_interrupt(NULL) or disable_irq() statements. For example, if I disable the IRQ attached to P0_4 (pin 27), there should be no response from the rotary encoder. However, this is not the case - although the handler routine does not trigger, I can see the IRQ is triggered by placing a printf statement in the main loop that increments a counter every time the WFI() fires. My IRQ service routines are all very short e.g. FLAGx = TRUE and then back to main loop, check the flag and and then branch off to the respective IRQ handler, come back, make FLAG = FALSE and then -re-enable the IRQ.

Since this program works very well on the LPC11U24, I am at a loss to explain why it is so troublesome on the LPC1114. Is there a specific issue in the mbed.src, is there a silicon problem? Have I done something really stupid in my software?

1 comment:

14 Feb 2017

For anyone struggling with LPC1114 interrupts:-

/media/uploads/andrewcrussell/slide1.jpg