GPIO-Pin hat vor Pulsweitenmodulation einen nicht definierten Zustand- Kann man das ändern?

Gast #5793851
Hallo, Achtung das nun folgende ist Konfiguration in CubeMX (STM 32F4):

Ich habe ein PWM-Signal als Ausgang eines Timers in PWM Mode 2 und One 
Pulse Mode (bedeutet einmaliger Puls von High auf LOW). Dieser Timer 
wird aber erst gestartet, nachdem ein externer Interrupt einmalig 
ausgeführt wurde und ein Taster gedrückt wird.
Da der Ausgang mit einer LED verbunden ist merke ich, dass die LED erst 
nach dem einmaligem Interrupt voll leuchtet (ausser während dem 
LOW-Puls), aber davor nur SCHWACH leuchtet.
Das ist für mich ein Hinweis, dass vor dem ersten Start des Timers der 
GPIO-Pin noch keinen definierten Pegel hat. Der soll allerdings schon 
vorher auf HIGH stehen, sonst gibt es Probelme mit dem Endgerät.... geht 
das überhaupt? Scheinbar liegt ja schon von Anfang an eine Spannung an, 
die ist aber noch nicht definiert und hoch genug...

oder die LED hat einen Schaden, weil sie auch mit kurzem Flackern 
reagiert, während man den Ausgang über einen BNC-Adapter an das Endgerät 
anschließt..

Ausserhalb der Timer-Konfiguration mit "PWM Mode 2" und "CH Polarity: 
LOW" ist der Ausgang auch mit "Pull-up" konfiguriert
Gast
janhh schrieb:
> Das ist für mich ein Hinweis, dass vor dem ersten Start des Timers der
> GPIO-Pin noch keinen definierten Pegel hat. Der soll allerdings schon
> vorher auf HIGH stehen, sonst gibt es Probelme mit dem Endgerät...

Dann solltest du ihn vielleicht vorher schon mal als Ausgang 
konfigurieren.
Gast
ich kann einen Ausgang, der auf einem Kanal eines Timers liegt nicht mit 
einem "Zustand vor Timer-Start" konfigurieren. Da sehe ich hier 
zumindest keine Möglichkeit
Gast
Es wäre schön, wenn jemand hier ist, der mir auch sagen könnte, ob bei 
dieser Konfiguration in CubeMX der GPIO-Pin normalerweise auch von 
Anfang an genau diesen HIGH-Pegel hat
Gast
Probiere es doch aus. Vermutlich geht das schneller, als auf Expertenrat 
zu warten.

Ich kann es Dir nicht sagen, das habe ich so noch nie ausprobiert.
Gast
Ich sehe auch gerade, das Endgerät reagiert ohnehin nur auf einen 
Wechsel von HIGH auf LOW, also ist es demnach eigentlich uninteressant, 
ob der Eingang vorher auf HIGH steht oder nicht ;)
Aber vielleicht kann ja trotzdem jemand was dazu sagen.. aus Interesse
Gast
Und was ist direkt bei Controller Start? Es dauert immer einige Zeit bis 
der gewünschte Pegel da ist. Egal ob pwm oder nicht. Da hilft ggf nur 
eine Hardware Lösung mit Pullup o.ä.
Du hast ja bereits den Timer konfiguriert, und jetzt machst du folgendes

* Du machst in der Chip-Ansicht einen rechts-Klick auf deinen Timer-Pin 
und wählst Pin-Stacking.

* Dann einen links-Klick auf den Pin und zusätzlich zum Timer einen 
GPIO-Output hinzufügen.

Jetzt kannst du den GPIO/Timer-Pin wie gewünscht direkt nach dem 
Programmstart initialisieren.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.