Forum: Mikrocontroller und Digitale Elektronik dsPIC33EP probleme mit dem pin select (U2RX)


von Tytus W. (tytus)


Lesenswert?

Hallo ich arbeite gerade mit dem neuen dsPIC33EP... habe dafür das MPLAB 
Starter Kit for dsPIC33E DSCs zum testen (+ das I/O expansion board).

Als erstes habe ich das beispiel von microchip  CE414 - UART Loop-back 
getestet. Funktioniert einwandfrei. Dann wollte ich denn pin selector 
testen und den UART auf 2 andere pin legen.

Resultat : mit TX krieg ich das hin und funktioniert auch aber der RX 
will sich nicht ändern lassen.

Ich habe das orginal beispiel nur an 2 stellen verändert.


file : uart1Drv.c vom beispiel CE414 (ab line 98)
--------------------------------------------------
1
//RPOR9bits.RP101R= 3;  //RF5 as U2TX (orginal)
2
RPOR3bits.RP71R = 3;    //RD7 (pin 84)  <- funktioniert
3
//RPINR19 = 100;  //RF4 as U2RX(orginal)
4
RPINR19 = 41;      //RB9 (pin 33) <- funktioniert nicht

Habe schon in der datasheet gesucht aber nichts auf anhieb gefunden.

Wenn mir da jemand helfen könnte. ;-)

Viele grüsse,

Tytus


Link : 
http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en554301

von Michael H. (morph1)


Lesenswert?

das liegt daran, dass es heißen muss
1
_RP71R = 3;    //RD7 (pin 84)  <- funktioniert
2
RPINR41 = xx;      //RB9 (pin 33) <- funktioniert schon

links steht die nummer des pins, das rechts ist die funktion und die 
solltest du wieder auf das zurückstellen was du vorher dort stehen 
hattest, ich mag die app-note jetzt nicht raussuchen.


btw die fertigen defines ala _RP71R erleichtern dir das leben, dann 
brauchst nicht von hand das register suchen...

von Tytus W. (tytus)


Lesenswert?

Danke Michael für die Antwort und für den Tipp mit dem underscore
1
_RP71R

Leider hat mir das nicht weiter geholfen. Habe aber die AppNote gefunden 
von der du gesprochen hast.

http://ww1.microchip.com/downloads/en/DeviceDoc/S10.pdf

Meine vorgehensweise war schon richtig und das funktioniert auch so, 
leider nur mit Pins die 5V tolerant sind. Weiss leider nicht warum.

Also Tx lässt sich auf jedes belibige pin leiten (5v tolerant oder 
nicht) das dafür vorgesehen ist aber Rx nur avec 5V tolerante pins.

Ich suche mal in denn datasheets ob das wirklich so ist.

Wenn da jemand was darüber weiss wäre hilfreich.

Grüsse Tytus

von Tytus W. (tytus)


Lesenswert?

So ich habe es geschafft und teile mein wissen damit nicht jeder so 
suchen muss wie ich es gemacht habe.

Also man kann alle UARTS auf alle min umleiten (natürlich müssen diese 
pins das erlauben, das sieht man wenn RPx oder RPIx neben den pin 
steht(RP I/O und RPI nur input))

Aber wenn mann einen pin aussucht wo ein AD-wandler ist muss man denn 
erst explizit ausschalten. Das macht man mit dem register ANSELx, x ist 
abhängig vom port auf dem er sich befindet.

Kleines beispiel wo ich das beispiel "CE414 - UART Loop-back" von 
microchip verändert habe. Da leite ich nämlich U2RX auf RB9 ( pin 33 auf 
dem dsPIC33EP512MU810) und den U2TX auf RD7 (pin 84).

Der dazugehörige code :
1
//RPOR9bits.RP101R= 3;    //RF5 as U2TX (orginal code) oder _RP101R = 3;
2
RPOR3bits.RP71R = 3;    //RD7 (pin 84)
3
//RPINR19 = 100;    //RF4 as U2RX(orginal code)
4
ANSELB = 0;             //disable Analogue input on port B
5
RPINR19 = 41;           //RB9 (pin 33)

Zum testen habe ich einen hyperterminal benutzt mit dem ich bytes 
schicke und der dsPIC schickt die mir zurück. Ich habe mich mit einem 
FTDI converter and den dsPIC angeschlossen.

Viele grüsse,

Tytus

PS : Ich bin anfänger mit dspic (vorher ATmega)

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.