Forum: Mikrocontroller und Digitale Elektronik SAM4E Multiplexing PIO Controller


von Godi S. (godi22)


Lesenswert?

Hallo,

beim SAM4E8C können mittels Peripheral Signal Multiplexing verschiedene 
Funktionen pro Pin ausgewählt werden.
Also z.B. bei der I/O Line PA gibt es Peripheral A, Peripheral B, 
Peripheral C, Extra Function, System Function.

So jetzt habe ich beim belegen der Pins nicht aufgepasst von welcher 
Peripherial die Funktion zur Verfügung gestellt wird. Ich war/bin der 
Meinung, dass ich für jeden PIN entscheiden kann welche Peripherie 
dieser benützt.
Nur bin ich mir jetzt nicht mehr sicher und das würde meinen ganzen Plan 
über den Haufen schmeißen. :(

Kann ich für jeden Pin entscheiden welche Peripherie verwendet wird?
Z.B Pin PA0 verwendet Peripheral A und Pin PA1 verwendet Extra Function.
Ist dies Möglich?

Oder sind diese irgendwie in Blöcke zusammengefasst?

godi

von Joachim (Gast)


Lesenswert?

Man kann für jeden Pin getrennt angeben, ob dieser von Peripherie A, B, 
C oder extra Funktion angesteuert wird.
Natürlich immer nur die Peripherieinheiten, die beim jeweiligen Gehäuse 
auch auf diesen Pin geschaltet sind, also z.B. beim QFP100

PA1 PWMH! oder TIOB0 oder A18 oder WKUP1

Die Auswahl erfolgt in den Registern

PIO_ABCSR1 und PIO_ABCSR2

Die Sonderfunktionen z.B. A/D-Wandler werden automatisch an den 
entsprechenden Pin geschaltet, wenn die Funktion aktiviert wird, also 
z.B. A/D-Wandler Kanal enable.

Gruß

Joachim

von Godi S. (godi22)


Lesenswert?

Danke für deine Antwort, diese beruhigt mich wieder. :)

Die Pinbelegung habe ich kontrolliert, also da sollte alles passen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Die Mimik, die das entscheidet, ist bloß ein wenig ungewöhnlich über
PIO_ABCDSR1 und PIO_ABCDSR2 verteilt.  Wenn du also jetzt beispielsweise
PA0 auf Peripheral A setzen willst, dann musst du Bit 0 sowohl in 
PIOA->PIO_ABCDSR1 als auch PIOA->PIO_ABCDSR2 löschen und das Bit in
PIOA->PIO_PDR setzen, damit statt der PIO-Funktion die entsprechende
Peripheriefunktion benutzt wird.

Willst du Peripheral C benutzen, musst du das Bit in PIOA->PIO_ABCDSR1
löschen, aber in PIOA->PIO_ABCDSR2 setzen.  Gewissermaßen bilden die
beiden Register ABCDSR1 und ABCDSR2 „vertikal“ ein 2-Bit-Wort, welches
Funktion A … D auswählt, während „horizontal“ die Bitnummer entscheidet,
welcher Pio-Pin davon betroffen ist.

von Godi S. (godi22)


Lesenswert?

Danke für eure Antworten,
auf eure Informationen werde ich dann zurückgreifen wenn es ums 
Programmieren geht. :)

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.