SAM4E Multiplexing PIO Controller

OP #4356281
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
Gast #4356605
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
Moderator Persönliche Seite #4357015
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.

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