Forum: Mikrocontroller und Digitale Elektronik STM32F0(STM32 F0) Pins in high Impedanz(high z) Zustand schalten GLEICHZEITIG


von public (Gast)


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

von 6A66 (Gast)


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

von public (Gast)


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

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.