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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.