Autor Tema: AYUDA Sobre remapear PIC18F26J50  (Leído 3295 veces)

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

Desconectado kev_18

  • PIC10
  • *
  • Mensajes: 4
AYUDA Sobre remapear PIC18F26J50
« en: 19 de Diciembre de 2014, 18:44:55 »
Este es mi primer post en TODOPIC, espero que puedan ayudarme estare agradecido con quien lo haga.

Bueno sin mas vueltas, estoy trabajando con MPLAB X, compilador XC8, en el PIC18F26J50.
Configuro perfectamente la usart1 sin mucho problema usando la libreria de perifericos brindada por el compilador, pero lo que no puedo lograr el remapear el pin RC7/RX1/DT1/SDO1/RP18 al RB0/AN12/INT0/RP3. Osea en ves de recibir por RC7, quiero recibir por RB0.
Se que con el compilador CCS se logra solo agregando rcv=PIN_B0 en la configuracion, ejemplo:

#use rs232(baud=4800,parity=N,rcv=PIN_B0,bits=8,stream=SERIAL_GPS)

Ahora me gustaria que me ayudaran guiandome como puedo lograrlo en XC8.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: AYUDA Sobre remapear PIC18F26J50
« Respuesta #1 en: 19 de Diciembre de 2014, 19:14:53 »
RB0 tiene el pin remapeable RP3

En input Mapping:

EUSART2 Asynchronous Receive/Synchronous Receive
RX2/DT2
Registro: RPINR16
Bits: RX2DT2R<4:0>

Programas que sea ahi el numero 3 asi la entrada se encuentra en RP3
Observa que es el EUSART2 el unico que tiene para ser mapeado, El EUSART 1 es fijo por eso aparece en la lista de pines RC7/RX1/DT1/SDO1/RP18 .

Hay 2 sets de registros uno para entrada RPINRx y otro para salida RPORx.
En la pagina 151 tenes la tabla de cada registro

Citar
When a pin-selectable peripheral is active on a given I/O pin, it takes priority over all other digital I/O and digital communication peripherals associated with the pin.
Priority is given, regardless of the type of peripheral that is mapped. Pin select peripherals never take priority over any analog functions associated with the pin.

Obviamente deberias de ponerlo como digital. Y deberias configurar los demas pines de CLK2 , TX2, SS2 ( si lo usas ) en los demas pines que te interesen

Desconectado kev_18

  • PIC10
  • *
  • Mensajes: 4
Re: AYUDA Sobre remapear PIC18F26J50
« Respuesta #2 en: 19 de Diciembre de 2014, 19:28:17 »
Entiendo perfectamente lo que me decis, pero el pic al que me refiero esta en una placa de mcelectronics, especificamente en la TrackMe.
El ejemplo de CCS que tengo configura la EUSART2 en RP0 y RP1. Y configuran el pin RP3 como RX de la EUSART1.
Este es el segmento de codigo del ejemplo en CCS:

#pin_select U2TX=PIN_A1 
#pin_select U2RX=PIN_A0

#use rs232 (UART2, BAUD=9600, PARITY=N, BITS=8, stream=SERIAL_GSM)
#use rs232(baud=4800,parity=N,rcv=PIN_B0,bits=8,stream=SERIAL_GPS)

Esto es lo que quiero lograr con XC8. Como dije no logro hacer RP3 como RX de la EUSART1  (ellos lo logran agregando simplimente "rcv=B0" a la configuracion) .
Yo pienso exactamente igual, que el EUSART1 es fijo. Pero el ejemplo funciona. Y ahi esta mi problema.

Disculpa si no logro explicarme bien


Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: AYUDA Sobre remapear PIC18F26J50
« Respuesta #3 en: 19 de Diciembre de 2014, 19:42:37 »
Una cosa antes de responderte, en los registros de salida hay que poner un numero que esta en la tabla del datasheet.

A no ser que lo este haciendo por software entonces es imposible. Del datasheet:
Citar
Additionally, the MSSP1 and EUSART1 modules are not routed through the PPS module.
Por mas que cambie el encapsulado

De aca:
http://www.todopic.com.ar/foros/index.php?topic=36236.0

Por el caso si no declaras los pines usa el de hardware y si los declaras:
Si los declaras y coinciden con los pines hardware, los usa por hardware. CCS sólo hace la emulación software si no coinciden.

Aca usa el de hardware:
#use rs232 (UART2, BAUD=9600, PARITY=N, BITS=8, stream=SERIAL_GSM)

Aca software por que no coinciden:
#use rs232(baud=4800,parity=N,rcv=PIN_B0,bits=8,stream=SERIAL_GPS)
« Última modificación: 19 de Diciembre de 2014, 19:44:47 por KILLERJC »

Desconectado kev_18

  • PIC10
  • *
  • Mensajes: 4
Re: AYUDA Sobre remapear PIC18F26J50
« Respuesta #4 en: 19 de Diciembre de 2014, 20:09:28 »
Entiendo perfectamente lo que me indicas.
Ahora mi camino a seguir, como no puedo modificar el hardwar, seria codificar software en un intento de un crear un seudo RX valiendome de interrupciones?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: AYUDA Sobre remapear PIC18F26J50
« Respuesta #5 en: 19 de Diciembre de 2014, 20:15:24 »
Creo que XC8 tiene una libreria de UART por software, pero por lo que busque y lei es muy mala, al menos lo que te interesa es la recepcion nomas por lo que veo, asi que podrias hacerte un programita valiendote de interrupciones para simular la UART.

Podrias detectar el bit de start, con flanco ascendente y luego seleccionas flanco descendente, eso te da la velocidad o el tiempo de un bit, medis el tiempo con el TMR, luego cargas la mitad ( la primer y luego completo para los que siguen ) y seteas interrupcion del TMR ( desactivas la de detectar el nivel o flanco ), y de ahi vas tomando los 8 bits ( rotando y seteando/borrando el bit ) y te fijas que el 9no sea de stop. Suponiendo que no hay paridad. Si sabes la velocidad directamente no calculas nada y le das el valor al timer. Sino implementas como dice wikipedia:

http://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter
Citar
Receiver
All operations of the UART hardware are controlled by a clock signal which runs at a multiple of the data rate, typically 8 times the bit rate. The receiver tests the state of the incoming signal on each clock pulse, looking for the beginning of the start bit. If the apparent start bit lasts at least one-half of the bit time, it is valid and signals the start of a new character. If not, it is considered a spurious pulse and is ignored. After waiting a further bit time, the state of the line is again sampled and the resulting level clocked into a shift register. After the required number of bit periods for the character length (5 to 8 bits, typically) have elapsed, the contents of the shift register are made available (in parallel fashion) to the receiving system. The UART will set a flag indicating new data is available, and may also generate a processor interrupt to request that the host processor transfers the received data.

« Última modificación: 19 de Diciembre de 2014, 20:24:14 por KILLERJC »

Desconectado kev_18

  • PIC10
  • *
  • Mensajes: 4
Re: AYUDA Sobre remapear PIC18F26J50
« Respuesta #6 en: 19 de Diciembre de 2014, 20:21:25 »
Muchisimas gracias, me estaba quemando la cabeza por malinterpretar la linea de configuracion de CCS.
Bueno tendre que trabajar un poco con interrupciones pero al menos me encaminaste. Muchas Gracias.