Autor Tema: Duda rs485 pic24  (Leído 5433 veces)

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

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Duda rs485 pic24
« en: 01 de Noviembre de 2012, 18:01:49 »
Hola compañeros. Les hago una pregunta a ver si me pueden ayudar.
Intento realizar una comunicación rs485 con un transceiver que utiliza dos pines para enviar datos (RE/ y DE).
Lo que intento hacer es portar un programa de CCS para 18f2550 que funciona correctamente a xc16 pero me surge una duda:

Para CCS hacia

Código: [Seleccionar]
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,enable=RS485_Enable)
pero para xc16 no sé como usar este pin ¿sería posible usar el pin RTS? o debo poner en alto un pin manualmente. En este caso ¿se hace imprescindible el uso de pullup?

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Duda rs485 pic24
« Respuesta #1 en: 08 de Noviembre de 2012, 15:20:29 »
+1

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Duda rs485 pic24
« Respuesta #2 en: 08 de Noviembre de 2012, 16:37:46 »
Si como dices en el Asunto, vas a usar un PIC24, al menos el que uso yo permite manejar por hardware los pines CTS y RTS, solo debes mapearlos correctamente (son de los pines que se configuran).
No puedo ayudarte con XC, y poco mas con ese PIC, pero ya leí que los tengo disponibles...

El PIC24 que tengo es este:

PIC24HJ128GP502

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

Y segun la pagina, tiene estas funciones en su UART:

Citar
UART (up to two modules):
Interrupt on address bit detect
Interrupt on UART error
Wake-up on Start bit from Sleep mode
4-character TX and RX FIFO buffers
LIN bus support
IrDA® encoding and decoding in hardware
High-Speed Baud mode
Hardware Flow Control with CTS and RTS
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Duda rs485 pic24
« Respuesta #3 en: 08 de Noviembre de 2012, 17:09:37 »
Gracias por la respuesta.

Sé que puedo usar esos pines, pero viendo esto http://ww1.microchip.com/downloads/en/DeviceDoc/en026583.pdf en la pagina 30, creo entender que si se puede utilizar, pero están negadas y no me serviria.

En la página 17 del mismo documento hay una grafica en la que aparece un bit (UTXBRK) que se activa un instante antes y se desactiva un instante después de la transmisión, o eso parece, el caso es que no sé como usarlo.

Creo que tendré que activar el pin manualmente.

P.D. El pic que uso es un 24fj256gb106 http://ww1.microchip.com/downloads/en/DeviceDoc/39897c.pdf

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Duda rs485 pic24
« Respuesta #4 en: 08 de Noviembre de 2012, 17:15:30 »
Si el estado antes/después de la transmisión de ese bit te sirve a tus propósitos, simplemente copia su estado en un bit de salida, y ya tendrás tu señal de habilitación del RS485.
En CCS, como pusiste en el ejemplo, la rutina lo hace solita.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Duda rs485 pic24
« Respuesta #5 en: 08 de Noviembre de 2012, 17:34:54 »
Si el estado antes/después de la transmisión de ese bit te sirve a tus propósitos, simplemente copia su estado en un bit de salida, y ya tendrás tu señal de habilitación del RS485.
En CCS, como pusiste en el ejemplo, la rutina lo hace solita.

Ese es el tema, que ccs lo hace solo pero necesito hacerlo en XC16 (=C30)
Trato de portar de ccs a XC16 de un 18f2550 a un 24fj256gb106.
No sé si me valdria, podria probar, pero si copio el estado ¿tendria que copiarlo cada vez que transmita?

Se me acaba de ocurrir que podria utilizar la interrupcion por transmision para activar esa pata del pic, pero desconozco si la interrupción se produce cuando transmite, por que en ese caso no me valdría, tiene que ser antes para que el max487 se "ponga en posicion", no se si me entiendes

De todas formas muchas gracias, con tus soluciones se me ocurren otras y así voy aprendiendo

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Duda rs485 pic24
« Respuesta #6 en: 08 de Noviembre de 2012, 17:52:04 »
Si la rutina de transmisión la haces por interrupción, estas un poco frito.
Pero si la comandas tu mismo, es posible que funcione Ok....
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Duda rs485 pic24
« Respuesta #7 en: 08 de Noviembre de 2012, 17:55:23 »
Si la rutina de transmisión la haces por interrupción, estas un poco frito.
Pero si la comandas tu mismo, es posible que funcione Ok....

¿un poco frito? No te entiendo . ¿Quieres decir que es complicado?

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Duda rs485 pic24
« Respuesta #8 en: 08 de Noviembre de 2012, 18:03:25 »
Si, Si, porque no podrás controlar tu pin en el momento justo que se transmita el dato...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Duda rs485 pic24
« Respuesta #9 en: 08 de Noviembre de 2012, 18:05:08 »
Ya, eso es lo que me temo, por que supongo que la interrupción será cuando comience a transmitir, y eso es demasiado tarde

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Duda rs485 pic24
« Respuesta #10 en: 08 de Noviembre de 2012, 18:19:02 »
Por cierto, unas fotos que me siento orgulloso    ((:-))
Me acabo de dar cuenta de lo sucia y arañada que está, pero como no es para un concurso... :lol:




Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Duda rs485 pic24
« Respuesta #11 en: 08 de Noviembre de 2012, 18:22:50 »
Felicitaciones!!
Ya quisiera yo poder trabajar asi una placa!!
Estoy peleado hasta con la plancha !!! :D :D :D :D
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Duda rs485 pic24
« Respuesta #12 en: 08 de Noviembre de 2012, 18:29:17 »
Felicitaciones!!
Ya quisiera yo poder trabajar asi una placa!!
Estoy peleado hasta con la plancha !!! :D :D :D :D

Prueba, ensayo y error. Me costó unos cuantos trozos de placa encontrar "el punto", y la placa.
Lo mas importante de todo es el fotolito, utilizo impresora + transparencia inkjet. Tengo una impresora pero no me da resolución suficiente, se me corrian los pads del tgfp, pero con la otra, sin problemas. Si consigues un buen fotolito, y una buena placa, todo lo demás es pan comido
Es la primera vez que intento con algo así y la verdad que cero problemas

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Duda rs485 pic24
« Respuesta #13 en: 09 de Noviembre de 2012, 06:08:14 »
Mi ingles no es bueno, a ver si alguien me ayuda:

The Transmit Interrupt Flag (UxTXIF) is located in the corresponding Interrupt Flag Status (IFSx)
register. The UTXISEL<1:0> control bits (UxSTA<15,13>) determine when the UART will
generate a transmit interrupt.
1. UTXISEL<1:0> = 00, the UxTXIF is set when a character is transferred from the transmit
buffer to the Transmit Shift Register (UxTSR). This implies at least one location is empty in
the transmit buffer.
2. UTXISEL<1:0> = 01, the UxTXIF is set when the last character is shifted out of the Transmit
Shift Register (UxTSR). This implies that all the transmit operations are completed.
3. UTXISEL<1:0> = 10, the UxTXIF is set when the character is transferred to the Transmit
Shift Register (UxTSR) and the transmit buffer is empty.
The UxTXIF bit will be set when the module is first enabled. The user should clear the UxTXIF
bit in the ISR.
Switching between the two Interrupt modes during operation is possible.
While the UxTXIF flag bit indicates the status of the UxTXREG register, the TRMT bit
(UxSTA<8>) shows the status of the UxTSR. The TRMT status bit is a read-only bit, which is set
when the UxTSR is empty. No interrupt logic is tied to this bit, so the user has to poll this bit in
order to determine if the UxTSR is empty.




 

anything