Hallo, wie kann man beom LPC2138 in einer ISR die Interrupts wieder aktivieren? Wenn ich enableIRQ() an der gewünschten Stelle schreibe, macht der Controller einen Dauerreset. Dass der Stack überfüllt wird kann ich eigentlich ausschließen, weil mind. 1 ms zwischen zwei Interupts ist und in der ISR kaum was gemacht wird. Weiss jemand Rat? MfG Mark
Wirst dich ein bischen tiefer in die Interrupt-Verarbeitung von ARMs einlesen müssen. IRQs werden in einem eigenen Registerkontext ausgeführt. Dieses Verfahren erlaubt aber keinen weiteren Interrupt innerhalb eines Interrupts. Um sowas zuzulassen muss man vorher den Modus wechseln. Kann man als Designfehler der Architektur abbuchen. Siehe beispielsweise AN10381 von NXP.
Suchbegriffe: "nested interrupts" oder "interrupt nesting". Diverse AT91 ARM7TDMI Beispiele von Atmel enthalten einen IRQ Assembler-Wrapper mit "nesting". Kann man leicht für LPC2000 portieren (Anpassung AIC->VIC)
Hallo mthomas, vielen Danke für die Stichwörter! Ich hab die bei google eingegeben und schnell einen Beispielcode gefunden, der bei mir nach einigen Anpassungen problemlos lief. MfG Mark