TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Medusa en 23 de Abril de 2012, 16:59:00

Título: Dudas con el remapeo de pines de un pic24h
Publicado por: Medusa en 23 de Abril de 2012, 16:59:00
Hola a todos,

Estoy desarrollando una aplicacion usando un Pic24hj128gp502 para usar la opcion del UART que tiene este micro, he tomado como referencia el ejemplo de Suky (http://www.micros-designs.com.ar/mplab-c30-pic24/), pero no me queda muy claro el remapeo de pines que se hace

Código: [Seleccionar]
RPINR18bits.U1RXR = 9; //Asignamos pin recepción UART1 a RP9.
RPOR4bits. RP8R = 0b00011; // Asignamos RP8 al pin de transmisión UART1.


Entiendo que como pin RX esta asignando el RP9 pero como se explica que para asignar el pin TX a RP8 le da el valor de 3???
Título: Re: Dudas con el remapeo de pines de un pic24h
Publicado por: Suky en 23 de Abril de 2012, 17:15:45
Leyendo del datasheet  :mrgreen: RPOR4bits.RP8R se refiere al control sobre el pin re-mapeable RP8 (pag 147), luego en la tabla 10-3 (pag 130) indica que 0011 es U1TX.


Saludos!
Título: Re: Dudas con el remapeo de pines de un pic24h
Publicado por: Medusa en 24 de Abril de 2012, 15:00:31
Hola Suky,

Gracias por responder, ahora tengo otra duda.

Estoy usando como referencia el primer ejemplo del uso del UART de tu manual y cuando compilo el programa obtengo el sgte mensaje:

Citar
Test_RS234.c: In function '_U1RXInterrupt':
Test_RS234.c:22: warning:  PSV model not specified for '_U1RXInterrupt';
   assuming 'auto_psv' this may affect latency

A que se debe esto y como puedo evitarlo...?
Título: Re: Dudas con el remapeo de pines de un pic24h
Publicado por: Suky en 24 de Abril de 2012, 16:38:21
Para evitarlo debes colocar por ejemplo:

Código: C
  1. void __attribute__((__interrupt__,no_auto_psv))

En el manual de usuario de C30 explica bastante en detalle las distintas opciones.

Título: Re: Dudas con el remapeo de pines de un pic24h
Publicado por: Medusa en 24 de Abril de 2012, 17:56:54
Hola Suky,  :oops: no quiero molestar pero sigo probando tu ejemplo pero ahora tengo el siguiente mensaje:

Citar
Test_RS234.c: In function 'main':
Test_RS234.c:83: warning: passing argument 1 of 'putsUART1' from incompatible pointer type

en tu codigo:
Citar
const char Texto[] = "Probando comunicación serial...\r\nPIC24HJ128GP502 xD ...\r\n";
   Init_UART();
   KbhitUART=0;
   putsUART1(Texto);

Tambien he reemplazado por:

Citar
putsUART1("Probando comunicación serial...\r\nPIC24HJ128GP502 xD ...\r\n")

y tambien he intentado con esto (http://www.todopic.com.ar/foros/index.php?topic=21262.msg164222#msg164222) pero igual sigo obteneindo el mismo mensaje.

Sin abusar de tu amabilidad podrias  decirme como podria corregir esto?
Título: Re: Dudas con el remapeo de pines de un pic24h
Publicado por: Suky en 24 de Abril de 2012, 22:14:00
Eso no es gran problema, el tema está que la función está definida de la siguiente manera:

Código: C
  1. void putsUART1(unsigned int *buffer)

Es para cuando se quiere enviar 9-bits. Pero si está configurado como 8-bits te envía chars. Para eliminar el warning podes hacer:


Código: C
  1. putsUART1((unsigned int *)&Texto);


Saludos!
Título: Re: Dudas con el remapeo de pines de un pic24h
Publicado por: Medusa en 25 de Abril de 2012, 12:30:15
 :-/ Gracias!!!