PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LPC1114 (Cortex M0): "sei()" und "cli()"



Jaecko
23.06.2010, 12:44
Hallo.

Kurze Frage: Gibts bei den LPC1114 (oder allgemein Cortex M0) die Möglichkeit, die Interrupts global zu (de-)aktivieren, wie es z.B. die C-Befehle cli() und sei() bei den AVRs machen?

Entweder ich such falsch oder da gibts tatsächlich nichts.

mfG

Siro
02.07.2010, 12:25
Hallo,
sieh Dir mal bitte den Anhang an:

__asm("CPSIE I"); /* enable Interrupts */
__asm("CPSID I"); /* Disable Interrupts */

Aber wenn Du die <intrinsics.h> mit ins Programm aufnimmst.
dann heißen die Funktionen vermutlich:

__enable_interrupt();
__disable_interrupt();

oder:

__enable();
__disable();

oder:

__disable_irq();
__enable_irq();

oder ähnlich, einfach mal in die Datei "intrinsics" reinschauen,
das hängt sicher vom verwendeten Compiler ab.

Ich habe eben mal beide Varianten mit dem Cortex M3 LPC1768 ausprobiert. Das funktioniert einwandfrei, wobei ich meinem C-Compiler nicht dazu überreden konnte nur eine einzige Zeile, wie im ASM-Code daraus zu machen. Trotz Optimierung machte der Compiler daraus 3 Assembler-Zeilen.


mfg. Siro