SAM3S NVIC alle Interrupts Abschalten

Gast #4220022
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
Gast #4221166
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
Gast #4222257
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren