PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PIC24FJ128GC006 UART3 Pin Mapping, aber wie?



Ceos
18.06.2018, 14:08
Grüße

ich hocke hier schon fast ne Stunde über der Pic Doku und möchte den Schreiber dringend erwürgen!

Ich möchte UART3 auf die Pins 31 und 32 an der 64Beinigen Variante mappen.

Für den Output war das (wenn auch umständlich weil zwischen 4 Kapiteln hin udn her springen) machbar.

RPOR8 = (RPOR8 & 0x003F) | 0x1C00; //Dez 28

aber beim RX Mapping ergibt die Doku absolut keinen Sinn! Es ist beschrieben dass es 6 Bits gibt, wie ich die Bits zu setzen habe wird nirgendwo erklärt, man bekommt nur die Tabelle die zeigt, dass RX_3 auf RP10 liegt. (könnte auch Rp17 gewesen sein, ich hab nur die Register rausgeschrieben und den rest samt meinem Frust aus meinem Gedächtnis gestrichen)

Also müsste es zumindest ungefähr so anfangen:

RPINR17 = (RPINR17 & 0x003F) | ?????

Danke schonmal für die Unterstützung

witkatz
19.06.2018, 12:02
So wie ich das Datenblatt verstehe, wird die Zuordnung von U3RX über das Register RPINR17 zu einem "remmappable pin" gesteuert. Laut Tabelle zu diesem Register muss in den Bits 13-8 die Nummer des RP eingetragen sein. Pin 32 ist RP17, also muss die 17 (0x11) in die RPINR17<13:8>, bzw. RPINR17bits.U3RXR = 17;

Zum Testen nehme ich in solchen Fällen gerne das MCC und klicke mir die Konfiguration zusammen. Das MCC ist zwar etwas buggy aber zum Testen für besseres Verständnis taugt es allemal.

Ceos
19.06.2018, 12:23
okay , der kollege der sich mehr mit PIC beschäftigt meinte zu mir da müsste eine 10 rein, vielleicht hat er die pins auch vertauscht ... er hatte es mir ähnlich erklärt aber meinte es müsse eine 10 rein


Das MCC ist zwar etwas buggy aber zum Testen für besseres Verständnis taugt es allemal.

das ist ein argument! aber den generierten code darf ich leider nciht verwenden bzw. würde ich auch nicht wiel eben buggy :P

witkatz
19.06.2018, 12:31
10 ist auch richtig, wenn U3RX auf Pin31(RP10) gelegt werden soll. Ich bin davon ausgegangen, dass U3RX auf Pin32(RP17) gelegt werden soll. Vielleicht habe ich das also verwechselt.

Ceos
19.06.2018, 12:43
häwehiewewas? das heißt die inputs sind also auf der peripherieseite gemappt und werden dann mit der RP pin nummer programmiert, während man bei outputs am RPOR des pins die funktion als nummer einträgt ... booaaaahhhhh ich hab grad einen erkenntnis flash ... und mein bedürftnis den doku schreiber zu erwürgen hat gerade ein level erreicht bei dem ich den FAE anmailen will und fragen will wo der typ wohnt XD


sorry für die harten worte, aber die doku ist scheiße

witkatz
19.06.2018, 13:15
sorry für die harten worte, aber die doku ist scheiße
Ist halt ein PIC. Bei der Architektur hat der Dokuschreiber sicherlich sein bestes getan ;-)

- - - Aktualisiert - - -


häwehiewewas? das heißt die inputs sind also auf der peripherieseite gemappt und werden dann mit der RP pin nummer programmiert, während man bei outputs am RPOR des pins die funktion als nummer einträgt ... booaaaahhhhh ich hab grad einen erkenntnis flash ...
Steht so oder so ähnlich im Datenblatt

11.4.3.1 Input Mapping
The inputs of the Peripheral Pin Select options are
mapped on the basis of the peripheral; that is, a control
register associated with a peripheral dictates the pin it
will be mapped to.
11.4.3.2 Output Mapping
In contrast to inputs, the outputs of the Peripheral Pin
Select options are mapped on the basis of the pin. In
this case, a control register associated with a particular
pin dictates the peripheral output to be mapped.

Ceos
19.06.2018, 13:18
ja genau der erste satz hat mich aufs glatteis geführt, in verbindung mit der tabelle die die register beschreibt malt sich das bild, dass man inputs nur auf wenige pins mappen kann während man output pins auf alles mappen kann solange sie remappable sind ... da hatte es gehakt ... intepretationsspielraum


weil die register auf RPINnn heißen dachte ich dass jedes register nur für einen pin steht, weswegen mir die 6 freien bits dafür auch keinen sinnergeben hatten