www.mikrocontroller.net

Forum: Mikrocontroller und Elektronik stm32 Pin im laufenden Programm aktivieren/deaktivieren


Autor: STM (Gast)
Datum:

Hallo, ich möchte im laufenden Programm einen Pin
deaktivieren/akitivieren um mir für bestimmte Zustände keine Interrupts
einzufangen. Die Deaktivierung des Interrupts ist so nicht möglich, da
ich nur im Hauptprogramm das IT-Flag abfrage und das ja immer gesetzt
wird. Gibt es also eine Möglichkeit dein Eingang tot zu schalten oder
muss man den als Ausgang mit PU oder PD schalten? Das Locken scheint ja
nur zu nützen wenn man ihn als Ausgang nutzt.
Autor: Markus Müller (mmvisual)
Datum:

Mit den Befehlen:
asm volatile ("cpsid i"); // oder __disable_irq()
  : : :
asm volatile ("cpsie i"); // oder __enable_irq()
Wird jeder Interrupt deaktiviert und wieder aktiviert.
Autor: STM (Gast)
Datum:

Wie würde das für Timer4_CC3 aussehen?

__disable_irq(Tim4, TIM_IT_CC3) ???


Und sind damit auch die Flags deaktiviert? Oder nur der Sprung in die
jeweilige ISR?
Autor: Markus Müller (mmvisual)
Datum:

Alle Interrupts können auch so einzeln deaktiviert werden:
  NVIC->ICER[0] = 0xFFFFFFFF;
  NVIC->ICER[1] = 0xFFFFFFFF;
  NVIC->ICER[2] = 0xFFFFFFFF;
  NVIC->ICER[3] = 0xFFFFFFFF;
  NVIC->ICER[4] = 0xFFFFFFFF;
  NVIC->ICER[5] = 0xFFFFFFFF;
  NVIC->ICER[6] = 0xFFFFFFFF;
  NVIC->ICER[7] = 0xFFFFFFFF;

Jedes einzelne Bit ist ein Interrupt, der Cortex-M3 hat bis zu 256
Interrupts, daher sind es 8*32 Bit.

Wie Du den vorigen Zustand sicherst und den Interrupt wieder aktivierst
bekommst Du sicher raus. Auch welches Bit welcher Interrupt ist.
Steht irgendwo in der Doku.

PS: Diese 8 Zeile deaktivieren natürlich alle Interrupts.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net