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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.