Forum: Compiler & IDEs SAM3S NVIC alle Interrupts Abschalten


von Thom (Gast)


Lesenswert?

Hallo,

eine kurze Frage, ich möchte gerne Global ALLE Interrupts bzw. den NVIC 
abschalten, bin ich mit diesem Befhel richtig dran?


In der ASF gibt des den

cpu_irq_enable();
cpu_irq_disable();


das steckt hinter dem dis.

#  define cpu_irq_disable()                    \
  do {                                       \
    __disable_irq();                       \
    __DMB();                               \
    g_interrupt_enabled = false;           \
  } while (0)

Deaktiviert dies nun alle IRQ oder nur die der CPU also ohne Peripherie

von Guest (Gast)


Lesenswert?

Hängt davon ab was __disable_irq() macht.
Um alle Interrupts zu sperren würde ich Primask auf 1 setzen:
__asm("cpsid I");

von Thom (Gast)


Lesenswert?

Hallo,

danke für die Antwort, dies wird anscheinend so gemacht siehe Code:
1
/** \brief  Enable IRQ Interrupts
2
3
  This function enables IRQ interrupts by clearing the I-bit in the CPSR.
4
  Can only be executed in Privileged modes.
5
 */
6
__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void)
7
{
8
  __ASM volatile ("cpsie i" : : : "memory");
9
}
10
11
12
/** \brief  Disable IRQ Interrupts
13
14
  This function disables IRQ interrupts by setting the I-bit in the CPSR.
15
  Can only be executed in Privileged modes.
16
 */
17
__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void)
18
{
19
  __ASM volatile ("cpsid i" : : : "memory");
20
}

Kannst du mir evtl noch sagen was der Privileged mode ist? dies konnte 
ich noch nicht herausfinden...

Trotzdessen mal Vielen Vielen Dank für die Hilfe

von Guest (Gast)


Lesenswert?

Priviligiert und nicht priviligiert ist zum Beispiel für MPU 
interessant.
Dein Betriebssystem läuft dann z.B. priviligiert und deine Anwender 
Tasks nicht priviligiert.

Ansonsten:
The Definitive Guide  to the ARM ®  Cortex-M3 by Joseph Yiu

Das Buch kann ich sehr empfehlen.

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
Noch kein Account? Hier anmelden.