Autor Tema: Problema con #Use RS232()  (Leído 1157 veces)

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

Desconectado dogflu66

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3510
Problema con #Use RS232()
« en: 02 de Enero de 2022, 08:34:32 »
Hola amigos; tengo varios pin Tx en paralelo de varios pic distintos y necesito configurarlos en tiempo de ejecución para que no se interfieran, estoy usando la siguiente definición:

#Use FAST_IO(A)
#Use FAST_IO(B)
#Use Fast_IO(C)
#Use Fast_IO(D)
#Use Fast_IO(E)
#Use RS232(uart1, baud=4800, xmit=pin_c6, parity=N, bits=8, TIMEOUT=1, Stream = PORT1)
#Use RS232(uart2, baud=38400, xmit=pin_d6, parity=N, bits=8, TIMEOUT=1, Stream = PORT2)

Pero no logro configurarlos como entradas, el CCS ignora la nueva configuración.
¿Alguien sabe como solucionar esto?.
Saludos desde Granada, España.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Problema con #Use RS232()
« Respuesta #1 en: 02 de Enero de 2022, 14:23:14 »
Hola amigos; tengo varios pin Tx en paralelo de varios pic distintos y necesito configurarlos en tiempo de ejecución para que no se interfieran, estoy usando la siguiente definición:

#Use FAST_IO(A)
#Use FAST_IO(B)
#Use Fast_IO(C)
#Use Fast_IO(D)
#Use Fast_IO(E)
#Use RS232(uart1, baud=4800, xmit=pin_c6, parity=N, bits=8, TIMEOUT=1, Stream = PORT1)
#Use RS232(uart2, baud=38400, xmit=pin_d6, parity=N, bits=8, TIMEOUT=1, Stream = PORT2)

Pero no logro configurarlos como entradas, el CCS ignora la nueva configuración.
¿Alguien sabe como solucionar esto?.

¿Puedes ver como es el código en ensamblador?
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado dogflu66

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3510
Re:Problema con #Use RS232()
« Respuesta #2 en: 02 de Enero de 2022, 16:12:26 »
Hola; gracias por interesarte, pero creo que ya lo tengo resuelto.
He configurado el modulo a mano registro por registro y me sigue pasando lo mismo, el registro Tris no le afecta a la salida Tx.
Para poner la salida como entrada para que no afecte a los demás Tx, hay que configurar el RCSTA1_SPEN = 0 porque este bit tiene prioridad sobre el registro Tris.
RCSTA1_SPEN para funcionamiento normal tiene que ser 1.

Solo me queda volver a implementar la función RS232 en CCS de nuevo y volver a probar.
Cuando lo pruebe lo comento.


Saludos desde Granada, España.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Problema con #Use RS232()
« Respuesta #3 en: 02 de Enero de 2022, 16:18:49 »
Hola; gracias por interesarte, pero creo que ya lo tengo resuelto.
He configurado el modulo a mano registro por registro y me sigue pasando lo mismo, el registro Tris no le afecta a la salida Tx.
Para poner la salida como entrada para que no afecte a los demás Tx, hay que configurar el RCSTA1_SPEN = 0 porque este bit tiene prioridad sobre el registro Tris.
RCSTA1_SPEN para funcionamiento normal tiene que ser 1.

Solo me queda volver a implementar la función RS232 en CCS de nuevo y volver a probar.
Cuando lo pruebe lo comento.

yo si recuerdo que pasaba eso en el CCS, es decir para el primer UART escribe la configuración y para el segundo no lo hace. Eso lo descubrimos con un compañero cuando luego de muchos dolores de cabeza sin entender que sucedía, decidimos analizar el código generado en ensamblador, la solución me parece fue poner el segundo #define más adelante o luego de otro que no tenga relación otra vez con el UART.

Pero ese error fue hace varios años, suponía que tal vez lo arreglaron.

También había otros errores similares. Esa fue una razón por la que decidí utilizar C18 (Ahora XC18) como compilador con los MCUs de 8 bits.
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado dogflu66

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3510
Re:Problema con #Use RS232()
« Respuesta #4 en: 02 de Enero de 2022, 16:49:50 »
Probado, funciona.

Bueno, estoy también usando los dos módulos del pic, uno recibe los datos y el otro los saca a otra velocidad. Todo funciona bien.
El problema en este caso es del hardware del pic, que está diseñado de esa forma posiblemente por las múltiples funciones que tiene.
En realidad en el datasheet lo indica más o menos claro. A mi lamentablemente me ha llevado varias horas verlo, después de ver el código desensamblado y releer varias veces el datasheet.  :oops:
Saludos desde Granada, España.


 

anything