Forum: Mikrocontroller und Digitale Elektronik GPIO-Pin hat vor Pulsweitenmodulation einen nicht definierten Zustand- Kann man das ändern?


von janhh (Gast)


Lesenswert?

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

von Wolfgang (Gast)


Lesenswert?

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.

von janhh (Gast)


Lesenswert?

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

von Wolfgang (Gast)


Lesenswert?

janhh schrieb:
> ich kann einen Ausgang, der auf einem Kanal eines Timers liegt nicht mit
> einem "Zustand vor Timer-Start" konfigurieren.

Dann konfiguriere ihn vor Start nicht als Timer

von Stefan F. (Gast)


Lesenswert?

Ich würde vorschlagen, zu Programmieren anstatt alles nur zu 
konfigurieren.

von janhh (Gast)


Lesenswert?

ich sagte ja gleich von Anfang an: CubeMX ;)

Wie geht das? Ich sehe keine Funktion dafür

von janhh (Gast)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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.

von janhh (Gast)


Lesenswert?

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

von Jan (Gast)


Lesenswert?

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.ä.

von Harry L. (mysth)


Lesenswert?

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.

: Bearbeitet durch User
von janhh (Gast)


Lesenswert?

ah okay, danke! Ich nehme mal an, der Timer hat dann bei Auslösung 
automatisch die höhere Priorität...

von Stefan F. (Gast)


Lesenswert?

Harry L. schrieb:
> Pin-Stacking.

Hat das geklappt?

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.