Autor Tema: Alguien uso #Pin_Select ??  (Leído 2822 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Alguien uso #Pin_Select ??
« en: 16 de Noviembre de 2012, 09:43:25 »
Estoy iniciándome en un PIC24HJ128GP502.
Me encanta las funcionalidades que tiene esta linea, pero me encuentro bastante desorientado con la funcionalidad PPS, para redireccionar los pines.
Estoy usando CCS y según leo, para hacer este redireccionamiento debo usar #Pin_Select.

El tema es:
Necesito usar el puerto CAN, el bus SPI y también el I2C, ademas de entradas de medición de pulsos y entradas generales.
Y por supuesto, el puerto serie también.

Alguien que me ayude a direccionar esto correctamente?? :shock: :shock:

Mi gran tema es que debo definir en el CImpreso como se conecta todo, pero veo que puedo tener problemas si no documento antes muy bien el uso que hare de cada Pin... :oops: :oops:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Alguien uso #Pin_Select ??
« Respuesta #1 en: 16 de Noviembre de 2012, 11:02:26 »
Hola amigo Marcos.

Yo lo uso continuamente.

Este es un ejemplo para mover el UART2 desde CCS.

#pin_select U2TX=PIN_D2 //Selecciona hardware UART2
#pin_select U2RX=PIN_D3 //Selecciona hardware UART2


Ahora bien, si quieres saber que posibilidades tienes, debes revisar en tu microcontrolador cuales pines se llaman RPx. Es en ese lugar donde puedes poner tus perifericos. Tanto perifericos de salida EJ (TXD) como de entrada (RXD).

Si tu microcontrolador tiene RPIx... En esos pines solo puedes llevar los periféricos que sean de entrada como (RXD).



Los pines I2C tengo entendido no se pueden remapear debido a la especialidad que se requiere en el pin SDA. recordando que es bidireccional con salida open collector




Esta es una lista de los nombres que debes usar para usar #pin_select.. (Veras ahora porque uso U2TX=PIN_D2)


INT1
 External Interrupt 1
 
INT2
 External Interrupt 2
 
INT3
 External Interrupt 3
 
T0CK
 Timer0 External Clock
 
T3CK
 Timer3 External Clock
 
CCP1
 Input Capture 1
 
CCP2
 Input Capture 2
 
T1G
 Timer1 Gate Input
 
T3G
 Timer3 Gate Input
 
U2RX
 EUSART2 Asynchronous Receive/Synchronous Receive (also named: RX2)
 
U2CK
 EUSART2 Asynchronous Clock Input
 
SDI2
 SPI2 Data Input
 
SCK2IN
 SPI2 Clock Input
 
SS2IN
 SPI2 Slave Select Input
 
FLT0
 PWM Fault Input
 
T0CKI
 Timer0 External Clock Input
 
T3CKI
 Timer3 External Clock Input
 
RX2
 EUSART2 Asynchronous Transmit/Asynchronous Clock Output (also named: TX2)
 
NULL
 NULL
 
C1OUT
 Comparator 1 Output
 
C2OUT
 Comparator 2 Output
 
U2TX
 EUSART2 Asynchronous Transmit/ Asynchronous Clock Output (also named: TX2)
 
U2DT
 EUSART2 Synchronous Transmit (also named: DT2)
 
SDO2
 SPI2 Data Output
 
SCK2OUT
 SPIC2 Clock Output
 
SS2OUT
 SPI2 Slave Select Output
 
ULPOUT
 Ultra Low-Power Wake-Up Event
 
P1A
 ECCP1 Compare or PWM Output Channel A
 
P1B
 ECCP1 Enhanced PWM Output, Channel B
 
P1C
 ECCP1 Enhanced PWM Output, Channel C
 
P1D
 ECCP1 Enhanced PWM Output, Channel D
 
P2A
 ECCP2 Compare or PWM Output Channel A
 
P2B
 ECCP2 Enhanced PWM Output, Channel B
 
P2C
 ECCP2 Enhanced PWM Output, Channel C
 
P2D
 ECCP1 Enhanced PWM Output, Channel D
 
TX2
 EUSART2 Asynchronous Transmit/Asynchronous Clock Output (also named: TX2)
 
DT2
 EUSART2 Synchronous Transmit (also named: U2DT)
 
SCK2
 SPI2 Clock Output
 
SSDMA
 SPI DMA Slave Select
 



Puedes notar en esta lista que no hay nada para I2C por lo que ya comente anteriormente.
« Última modificación: 16 de Noviembre de 2012, 11:08:56 por LABmouse »

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Alguien uso #Pin_Select ??
« Respuesta #2 en: 16 de Noviembre de 2012, 23:14:15 »
Gracias por responder.

Me quedan varias dudas mas...

1.-  Si en mi PIC24HJ128GP502 según la hoja de datos los pies del puerto CAN son remapeables, porque es que no los encuentro en el listado de posibles pines a remapear??

2.-  Según el archivo de cabecera de este mismo PIC, estos son los posibles pines en ese PIC:

Código: C
  1. // Constants used to identify pins in the above are:
  2.  
  3. #define PIN_A0  5648
  4. #define PIN_A1  5649
  5. #define PIN_A2  5650
  6. #define PIN_A3  5651
  7. #define PIN_A4  5652
  8.  
  9. #define PIN_B0  5712
  10. #define PIN_B1  5713
  11. #define PIN_B2  5714
  12. #define PIN_B3  5715
  13. #define PIN_B4  5716
  14. #define PIN_B5  5717
  15. #define PIN_B6  5718
  16. #define PIN_B7  5719
  17. #define PIN_B8  5720
  18. #define PIN_B9  5721
  19. #define PIN_B10  5722
  20. #define PIN_B11  5723
  21. #define PIN_B12  5724
  22. #define PIN_B13  5725
  23. #define PIN_B14  5726
  24. #define PIN_B15  5727
  25.  
  26. #define PIN_C0  5776
  27. #define PIN_C1  5777
  28. #define PIN_C2  5778
  29. #define PIN_C3  5779
  30. #define PIN_C4  5780
  31. #define PIN_C5  5781
  32. #define PIN_C6  5782
  33. #define PIN_C7  5783
  34. #define PIN_C8  5784
  35. #define PIN_C9  5785

Pero segun la hoja de datos de mi PIC24, no se cuales son los pines C0 a C9   :shock: :shock: :shock:
En el caso de los pines A0 hasta A4 puedo intuirlos.

Y la pregunta del millón:
Por lo que se ve e el dibujo del pinout de ese PIC24, los pines B0 hasta B15, aparentemente son los pines remapeables, no ??

Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Alguien uso #Pin_Select ??
« Respuesta #3 en: 17 de Noviembre de 2012, 14:58:14 »
Citar
1.-  Si en mi PIC24HJ128GP502 según la hoja de datos los pies del puerto CAN son remapeables, porque es que no los encuentro en el listado de posibles pines a remapear??

En la hoja de datos te nombran cuales son RP. En pocas palabras cuales pueden servir como destino para el priferico a remapear.

Citar
Pero según la hoja de datos de mi PIC24, no se cuales son los pines C0 a C9
Si usas la versión DIP no tendrás C9, pero si usas la QFN si tienes C9. Por eso CCS si los tiene en lista para darle soporte a todos los encapsulados.

Citar
Por lo que se ve e el dibujo del pinout de ese PIC24, los pines B0 hasta B15, aparentemente son los pines remapeables, no ??
Si, efectivamente son remapeables lo que significa que en esos pines puedes ubicar CAN UART, etc...




Ahora bien, revisando sobre CAN, veras que ccs no los tiene en lista, así que buscando encontré esta explicación:

http://www.ccsinfo.com/forum/viewtopic.php?t=36226&view=next
« Última modificación: 17 de Noviembre de 2012, 15:08:59 por LABmouse »

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Alguien uso #Pin_Select ??
« Respuesta #4 en: 17 de Noviembre de 2012, 15:05:16 »
A RPx debes prestarle atención en el diagrama del pinout  ;-) Esos son los Remapeable Pines. En la tabla 10-2 tienes las opciones de entrada y en la 10-3 los de salida. I2C no es remapable.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Alguien uso #Pin_Select ??
« Respuesta #5 en: 17 de Noviembre de 2012, 18:28:56 »
1.-  Si en mi PIC24HJ128GP502 según la hoja de datos los pies del puerto CAN son remapeables, porque es que no los encuentro en el listado de posibles pines a remapear??

En la hoja de datos te nombran cuales son RP. En pocas palabras cuales pueden servir como destino para el priferico a remapear.

Citar

Me refería a que no aparecen los pines del Bus CAN entre las opciones de #Pin_Select de CCS...
« Última modificación: 17 de Noviembre de 2012, 18:30:58 por MGLSOFT »
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Alguien uso #Pin_Select ??
« Respuesta #6 en: 17 de Noviembre de 2012, 18:50:14 »
1.-  Si en mi PIC24HJ128GP502 según la hoja de datos los pies del puerto CAN son remapeables, porque es que no los encuentro en el listado de posibles pines a remapear??

En la hoja de datos te nombran cuales son RP. En pocas palabras cuales pueden servir como destino para el priferico a remapear.

Citar

Me refería a que no aparecen los pines del Bus CAN entre las opciones de #Pin_Select de CCS...

Lo acabo de mirar y no vienen¿?. CCS v4.134

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Alguien uso #Pin_Select ??
« Respuesta #7 en: 17 de Noviembre de 2012, 19:45:07 »
Para colmo de males, ni siquiera tienen marcados los pines a los cuales normalmente estarian conectados...
No aparecen mas indicaciones de los pines C1RX y C1TX.

Como dicen en el foro de CCS, hay que reubicarlos uno por codigo.  :5] :5] :oops: :oops:
Y hay que estudiarse un manualcito para saber como hacerlo bien..  :D :D

Asi que ahora cambio mi pregunta:

Alguna ayuda de como hacerlo desde los registros sin pifiarla?? :lol: :lol:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Alguien uso #Pin_Select ??
« Respuesta #8 en: 17 de Noviembre de 2012, 19:55:58 »
Ups, que raro que pase eso en CCS!  :D El tema de configuración es sencillo, por ejemplo para RX1 sea en RP9, en los bits U1RXR colocamos 9. Ahora para transmisión, si queremos que RP8 sea TX1, buscas RP8R y le indicas que sea TX, o sea 0b00011 (Esto en base a la tabla 10-3).

Fíjate si, que se debe actuar sobre el registro OSCCON, para asegurarte que podes acceder a los registros para modificarlo.

Saludos!


No contesto mensajes privados, las consultas en el foro

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Alguien uso #Pin_Select ??
« Respuesta #9 en: 17 de Noviembre de 2012, 20:39:39 »
Haciéndola corta para no cansarlos:

Si mal no entiendo, hay registros para configurar las entradas digitales del puerto y a la vez asignarles el pin al cual van a estar mapeadas, es así??
Ademas, hay registros para configurar las salidas digitales del puerto y del mismo modo anterior asignarles a que pin quedaran mapeados??

Si es asi, luego pondré aquí un ejercicio de como lo hare.

Y encontré una funcionalidad que no conocía del CCS.
En la pestaña View del menú, si damos click al ítem Special Registers, se abre esta pantalla:



Si allí seleccionamos Make Include File, se abre otra ventana que permite armar un archivo de cabecera con todos los registros del PIC, cada uno como Word y sus bits respectivos, o sino como estructuras de bits.

Aquí un ejemplo corto de cada una de esas opciones:

Código: C
  1. #word MCU_WREG0 = 0x000
  2. #word MCU_WREG1 = 0x002
  3. #word MCU_WREG2 = 0x004
  4. #word MCU_WREG3 = 0x006
  5. #word MCU_WREG4 = 0x008
  6. #word MCU_WREG5 = 0x00A
  7. #word MCU_WREG6 = 0x00C
  8. #word MCU_WREG7 = 0x00E
  9. #word MCU_WREG8 = 0x010
  10. #word MCU_WREG9 = 0x012
  11. #word MCU_WREG10 = 0x014
  12. #word MCU_WREG11 = 0x016
  13. #word MCU_WREG12 = 0x018
  14. #word MCU_WREG13 = 0x01A
  15. #word MCU_WREG14 = 0x01C
  16. #word MCU_WREG15 = 0x01E
  17. #word MCU_SPLIM = 0x020
  18. #word MCU_PC = 0x02E
  19. #word MCU_TBLPAG = 0x032
  20. #word MCU_PSVPAG = 0x034
  21. #word MCU_RCOUNT = 0x036
  22. #word MCU_SR = 0x042
  23. #bit    MCU_C = MCU_SR.0
  24. #bit    MCU_Z = MCU_SR.1
  25. #bit    MCU_OV = MCU_SR.2
  26. #bit    MCU_N = MCU_SR.3
  27. #bit    MCU_RA = MCU_SR.4
  28. #bit    MCU_IPL0 = MCU_SR.5
  29. #bit    MCU_IPL1 = MCU_SR.6
  30. #bit    MCU_IPL2 = MCU_SR.7
  31. #bit    MCU_DC = MCU_SR.8
  32. #word MCU_SR = 0x042


El que tiene todo en estructuras:

Código: C
  1. #word PIC24_PC = 0x02E
  2.  
  3. #word PIC24_TBLPAG = 0x032
  4.  
  5. #word PIC24_PSVPAG = 0x034
  6.  
  7. #word PIC24_RCOUNT = 0x036
  8.  
  9. union  {
  10.    union {
  11.       struct {
  12.          unsigned int C:1;
  13.          unsigned int Z:1;
  14.          unsigned int OV:1;
  15.          unsigned int N:1;
  16.          unsigned int RA:1;
  17.          unsigned int IPL0:3;
  18.          unsigned int DC:1;
  19.       };
  20.       struct {
  21.          unsigned int :1;
  22.          unsigned int :1;
  23.          unsigned int :1;
  24.          unsigned int :1;
  25.          unsigned int :1;
  26.          unsigned int IPL:3;
  27.       };
  28.  
  29.       struct {
  30.          unsigned int :7;
  31.          unsigned int IPL2:1;
  32.       };
  33.    };
  34. } PIC24_SR;
  35. #word PIC24_SR = 0x042
  36. #word SR = 0x042
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.


 

anything