ARM Cortex-M3 – Mehrere Output-Pins gleichzeitig ansprechen

Gast #2301961
Lesenswert?

Hallo,

wenn ich bei den herkömmlichen 8bit-AVRs etwas parallel auf einen Port 
ausgeben (also z.B. mehrere LEDs ansteuern) möchte, mache ich das ja 
z.B. so:

PORTC = 0x03;

Da die Portstruktur bei den ARM Cortex-M3 etwas komplexer ist, ist mir 
bisher nur die Möglichkeit über das BSRR in den Sinn gekommen. (Ausgänge 
auf Push-Pull geschaltet.) Der Lower Teil des Registers also zum Setzen 
auf „1“ und der Higher Teil des Registers zum Rücksetzen auf „1“  Also 
würde ich das so machen.

GPIOC->BSRR = 0xFFFC0003

Das funktioniert auch soweit.
Würdet ihr das auch so machen und gibt’s eventuell auch noch eine andere 
oder einfachere Variante mehrere Output-Pins (LEDs) gleichzeitig 
anzusteuern.
Gast #2301971
Lesenswert?

Hallo Lars,

verstehe ich das richtig, du Setzt und Rücksetzt die Pins, spirch 
Toggeln indem du

GPIOC->BSRR = 0xFFFC0003

in einer Zeile schreibst? Das funktioniert?

Ich arbeite mit dem STM32, da kann ich Pegel Setzen bzw. Rücksetzen, 
indem entweder high- bzw. low-halfword setze.

Hast Du das so gemeint, oder geht das wirklich in einer Zeile?

Gruß

kyrel
Gast #2302224
Lesenswert?

Ich habe noch mal ein wenig experimentiert. Danke auch für die vielen 
Hinweise. Ich denke die Nutzung des vorgeschlagenen ODR-Registers eignet 
sich wirklich am besten um mehrere Port-Pins anzusteuern. :)

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