STM32F0(STM32 F0) Pins in high Impedanz(high z) Zustand schalten GLEICHZEITIG

Gast #2784352
Lesenswert?

Servus zusammen,


wie der Betreff verrät geht es um den ARM Cortex-M0 von ST. Ich möchte 
die Pins(mind. 2) des Rechenknechts in den hochohmigen Zustand schalten 
und das Zeitgleich...

Derzeit habe ich beim Umschalten einen Versatz von 2µs(mit dem Oszi 
gemessen). Für einen 32biter finde ich das nicht okay.

Ich könnte natürlich diesen Zeitversatz in Software kompensieren, das 
möchte ich aber nicht. Deshalb meine Frage: Habe ich bisher eine 
Möglichkeit übersehen, weiß ich etwas nicht?


Hier noch schnell mein Makro das ich zum Umschalten verwende:

#define GPIO_HighZ()  GPIOA->OTYPER |= (GPIO_1| GPIO_2)
#define GPIO_PushPull()  GPIOA->OTYPER &= ~(GPIO_1 | GPIO_1)

Kann mir jemand weiterhelfen?

Beste Grüße
public
Gast #2784492
Lesenswert?

Hallo Public,

public schrieb:
> Derzeit habe ich beim Umschalten einen Versatz von 2µs(mit dem Oszi
> gemessen). Für einen 32biter finde ich das nicht okay.

Wenn Du wie im Makro beschrieben auf das Register draufoderst sollte das 
in einem Rutsch gehen. Schau Dir doch mal den Assemblercode an den der 
Compiler generiert. Nach Deiner Darstellung sollte da ja - bei 24MHz - 
ein Versatz von etwa 48 Takten zusammenkommen was sich nach der 
Beschreibung von Dir nicht erklären lässt.

Grüße
Gast #2785472
Lesenswert?

Servus zusammen,


ich hab meinen Fehler gefunden. Der Zugriff auf das OTYPER Register löst 
mindestens einen zweistufigen Prozess aus. Siehe Figure 12 des Reference 
Manuals, bisher habe ich versucht über die OUTPUT CONTROL Einheit 
zwischen PushPull und OpenDrain hin und her zu schalten.

Die Analogfunction liegt aber noch vor/hinter den MOSFETs, also dem 
echten High Z.


Besten Gruß
public

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