BL schrieb:
> beim PIC gibt's ja nun (auch) diese PIN-Auswahl. Ich finde dazu leider
> keine kurze und schnell nachvollziehbare Beschreibung zu. Man kann ins
> Datenblatt schauen -tu ich auch- aber das ist da doch etwas sehr
> verwirrend.
Ähn, nein.
PPS funktioniert so:
Ausgangssignale:
1. Such Dir einen Pin aus, den Du mit einem Signal belegen willst, z.B.
RB4
2. Such Dir auf Seite 335 (21.9 Register Summary: Peripheral Pin Select
Module) das zugehörige Register raus -> RB4PPS
3. Such Dir auf Seite 328/329 (Table 21-2. PPS Output Selection Table)
das passende Signal raus, z.B. I2C1_SDA und merke Dir den Wert in der
ersten Spalte (RxyPPS) -> 0x22
4. Schreib den gemerkten Wert ins passende PPS-Register -> RB4PPS=0x22;
5. erledigt.
Eingangssignale:
1. Such Dir auf Seite 327/328 das zu mappende Eingangssignal raus (z.B.
I2C1 Data) und merke Dir das zugehörige Register in Spalte 2 ->
I2C1SDAPPS
2. Such Dir auf Seite 335 (21.9 Register Summary: Peripheral Pin Select
Module) das zugehörige Register raus -> I2C1SDAPPS
3. Such Dir einen Pin aus, den Du mit einem Signal belegen willst, z.B.
RB4
4. Bits 5..3 des Registers sind auf den Port zu setzen: (A=000, B=001,
C=010), für RB4 also 0b001
5. Bits 2..0 enthalten das Portbit, bei RB4 also 0b100=4
6. In das Register muss also der Wert 0b00'001'100 =0x0c geschrieben
werden
-> I2C1SDAPPS=0x0c;
7. fertig.
Natürlich musst du die PPS-Register vorher unlocken, aber das steht ja
im Datenblatt.
Bei bidirektionalen Signalen wie I2C musst Du sowohl die
Eingangsrichtung als auch die Ausgangsrichtung programmieren, und zwar
so, dass beide zueinander passen.
So funktioniert das bei allen 8 und 16 Bit PICs mit PPS.
fchk