Autor Tema: [Solucionado]Problema UART pic24f con XC16. Transmite bien, recibe mal  (Leído 7589 veces)

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

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Hola a todos, tengo un problema con la uart1 de un pic24f, resulta que el pic transmite bien (a traves de un max487) y para recibir utilizo la interrupcion y hasta aqui todo bien. Pero lo que recibo es basura.

A ver si alguien me puede dar una pista de por donde puedo buscar el error,  llevo un buen rato buscando y no encuentro nada.
Pro cierto, al pin enable:¿deberia ponerle una pull-down? Esto ya funciona perfectamente en dos pic con CCS, pero en c30 se me atraganta

Esta es la interrupcion:

Código: [Seleccionar]
/* Interrupción por recepcion de uart1 */
 void __attribute__((interrupt,no_auto_psv)) _U1RXInterrupt(void)
 {
    
    IFS0bits.U1RXIF = 0;        //Ponemos a 0 el flag de la interrupcion de recepcion
    rcvchar=0x00;               // Inicializo carácter recibido
    if(DataRdyUART1()){         // Si hay algo pendiente de recibir ...
        rcvchar=ReadUART1();    // lo descargo y ...
        putsUSBUSART(rcvchar); //para ver que recibimos
        CDCTxService();      
        addcbuff(rcvchar);      // lo añado al buffer
    }
    if(U1STAbits.OERR) U1STAbits.OERR=0;//si hay error de overflow es borrado
 }

La configuracion de la interrupcion y del periferico:

Código: [Seleccionar]
AD1PCFGL = 0xffff;          // todos los puertos digitales
    TRISFbits.TRISF3 = 0;       // RF3 configurado como salida
    TRISCbits.TRISC14 = 0;      // RC14 configurado como salida    
    TRISDbits.TRISD1 = 0;       // PIN TX como salida
    TRISDbits.TRISD2 = 1;       // PIN RX como entrada

// Asignacion de pines remapeables para el uso de la uart

    iPPSInput(IN_FN_PPS_U1RX,IN_PIN_PPS_RP23);      // Asignamos el pin remapeable RP23 a UART1RX
    iPPSOutput(OUT_PIN_PPS_RP24,OUT_FN_PPS_U1TX);   // Asignamos el pin remapeable RP24 a UART1TX

/*Activamos la interrupcion por recepcion prioridad 7 UART1. */
    ConfigIntUART1(UART_RX_INT_EN & UART_RX_INT_PR7 & UART_TX_INT_DIS);

 OpenUART1(UART_EN & UART_IDLE_CON & UART_DIS_WAKE & UART_DIS_LOOPBACK &
            UART_DIS_ABAUD & UART_NO_PAR_8BIT & UART_1STOPBIT &
            UART_IrDA_DISABLE & UART_MODE_SIMPLEX & UART_UEN_00 &
            UART_UXRX_IDLE_ZERO & UART_BRGH_FOUR , UART_IrDA_POL_INV_ZERO &
            UART_SYNC_BREAK_DISABLED & UART_TX_ENABLE & UART_INT_RX_CHAR &
            UART_ADR_DETECT_DIS , BRGVAL);




« Última modificación: 17 de Noviembre de 2012, 16:30:42 por alperez »

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Problema UART pic24f con XC16. Transmite bien, recibe mal
« Respuesta #1 en: 14 de Noviembre de 2012, 07:46:31 »
No entiendo como una cosa en principio tan sencilla se puede complicar tanto. He buscado y rebuscado y no hay respuestas válidas, he probado todo los ejemplos que he visto y nada. La única diferencia que tiene éste es que es un PIC 3v3 comunicandose con un PIC 5v, pero los pines son 5v tolerantes.
Lo único que me cabe pensar es un problema de impedancias o yo que sé.
Tenía ambos comunicándose con un max487 y lo he quitado, ya están directos y nada. Tengo a Tx funcionando perfecto pero Rx nada. Luego pondré una pulldown a ver si es que no "sabe" ditinguir entre +5v y +3v3
¿Alguien sabe como puedo localizar las erratas de este PIC (24fj256gb106)?

Desconectado josemyzm

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 309
Re: Problema UART pic24f con XC16. Transmite bien, recibe mal
« Respuesta #2 en: 15 de Noviembre de 2012, 01:52:17 »
En la pagina de microchip con toda la informacion del PIC
http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en531081

vas a la parte inferior a Documentation & Software y tienes el Dasheet Errata
http://ww1.microchip.com/downloads/en/DeviceDoc/80369n.pdf
Saludos desde Logroño (España)

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Problema UART pic24f con XC16. Transmite bien, recibe mal
« Respuesta #3 en: 15 de Noviembre de 2012, 05:32:24 »
En la pagina de microchip con toda la informacion del PIC
http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en531081

vas a la parte inferior a Documentation & Software y tienes el Dasheet Errata
http://ww1.microchip.com/downloads/en/DeviceDoc/80369n.pdf

Gracias

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Problema UART pic24f con XC16. Transmite bien, recibe mal
« Respuesta #4 en: 17 de Noviembre de 2012, 16:30:01 »
Bien, el problema está aquí:

Código: [Seleccionar]
putsUSBUSART(rcvchar); //para ver que recibimos
        CDCTxService();

Desconectado musttork

  • PIC10
  • *
  • Mensajes: 37
Re: [Solucionado]Problema UART pic24f con XC16. Transmite bien, recibe mal
« Respuesta #5 en: 21 de Agosto de 2013, 17:10:40 »
Se que hace ya casi un año de tu ultimo post, pero te voy a comentar lo que estoy haciendo y haber si puedes echarme una manilla.

Tengo el mismo micro que tu, y quiero mandarle cosas por el PC y que haga lo que yo quiero el micro, en principio me vale con una aplicacion en VB de pinchar a un boton y que mande el caracter L, y si el micro ve que es la L que encienda un LED. con eso ya me apaária por que lo que me está constando es realizar la conexion...:S

podrias ayudarme? un saludo

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: [Solucionado]Problema UART pic24f con XC16. Transmite bien, recibe mal
« Respuesta #6 en: 22 de Agosto de 2013, 14:38:57 »
Se que hace ya casi un año de tu ultimo post, pero te voy a comentar lo que estoy haciendo y haber si puedes echarme una manilla.

Tengo el mismo micro que tu, y quiero mandarle cosas por el PC y que haga lo que yo quiero el micro, en principio me vale con una aplicacion en VB de pinchar a un boton y que mande el caracter L, y si el micro ve que es la L que encienda un LED. con eso ya me apaária por que lo que me está constando es realizar la conexion...:S

podrias ayudarme? un saludo

Conexion hard o soft?
Pon mas datos, que tienes hecho y como quieres realizar la comunicación. Yo utilizo la uart2 con el pickit 2 clone para hacer debug y funciona muy bien

Desconectado musttork

  • PIC10
  • *
  • Mensajes: 37
Re: [Solucionado]Problema UART pic24f con XC16. Transmite bien, recibe mal
« Respuesta #7 en: 22 de Agosto de 2013, 15:49:35 »
Conexion hardware. en vez de tener un rs232 y un max232, tengo un conversor de USB-RS232 que me hace ese trabao entrgandome las tensiones TTL para el micro, tengo toda la placa (fisica) desarrollada pero ahora tengo que empezar a programar la apliccion VB (muy sencillita) y el micro. pero a la hora de programar el micro me encuentro con problemas de como comenzar, que librerias incrluir y que sentecias debo de poner xke no tengo ninguna guia buena en la que guiarme.

Programo el micro con el pickit 2. si deseas te mando el esquema para que lo puedas ver.

Saludos


Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: [Solucionado]Problema UART pic24f con XC16. Transmite bien, recibe mal
« Respuesta #8 en: 22 de Agosto de 2013, 17:27:43 »
tienes que tener en cuenta que NO todos los pines  del pic son 5v tolerantes, teniendo en cuenta eso, tienes que configurar los pines como entrada o salida según proceda, configurar los pines remapeables, NO todos los pines son remapeables, algunos tienen funciones especificas, y desde luego configurar la UART. Mas arriba tienes como lo tengo yo.

Para calcular la velocidad de transmision debes tener en cuenta la velocidad de FOSC.

Estoy asumiendo que lo vas a programar en XC16, por que en CCS es distinto.

¿Por cierto, por que no lo comunicas a través del USB y te ahorras ese conversor de USB-RS232?

Desconectado musttork

  • PIC10
  • *
  • Mensajes: 37
Re: [Solucionado]Problema UART pic24f con XC16. Transmite bien, recibe mal
« Respuesta #9 en: 23 de Agosto de 2013, 14:14:43 »
Pues tenia pensado programarlo con el C30 pero si me aconsejas que el X16 es mejor lo haré con ese.

En cuanto a los pines, si se que tengo que configurarlo y si te das cuenta segun mi esquema tengo dos pines remapeables que asignar a la UART.

He intentado programarlo en USB pero me da muchisimos problemas, no consigo que cuando conecto la placa al ordenador, me aparece continuamente el mensaje de "dispositivo USB no encontrado" he modificado miles de archivos y nada. por eso lo he dado por imposible y he decidido pasarme al RS232.

Empezaré de la manera que lo tienes tu arriba y si me van surgiendo problemas te los postearé.

Mi cristal es de 12MHz y tengo otro de 8 por si no fuera bien con el de 12Mhz. Que me aconsejas?

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: [Solucionado]Problema UART pic24f con XC16. Transmite bien, recibe mal
« Respuesta #10 en: 24 de Agosto de 2013, 05:48:18 »
C30 y XC16 son prácticamente lo mismo, pero XC16 es mas nuevo. En la página 200 del datasheet tienes la forma de calcular el baud rate y en este documento tienes mas información incluyendo el porcentaje de error sobre diferentes frecuencias FCY con los dos BRG posibles.


Desconectado musttork

  • PIC10
  • *
  • Mensajes: 37
Re: [Solucionado]Problema UART pic24f con XC16. Transmite bien, recibe mal
« Respuesta #11 en: 24 de Agosto de 2013, 07:05:55 »
Estoy calculado lo que me has estado comentado, y no entiedno muy bien lo del BRGH = 0 o igual a 1, que diferencias hay entre los dos?

Un saludo

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: [Solucionado]Problema UART pic24f con XC16. Transmite bien, recibe mal
« Respuesta #12 en: 24 de Agosto de 2013, 07:21:02 »
mira a ver si te sirve, yo tampoco lo entendía

http://www.todopic.com.ar/foros/index.php?topic=39579.0

Desconectado musttork

  • PIC10
  • *
  • Mensajes: 37
Re: [Solucionado]Problema UART pic24f con XC16. Transmite bien, recibe mal
« Respuesta #13 en: 24 de Agosto de 2013, 07:41:29 »
Pues tampoco me ha aclarado mucho jajaja,

yo es que tengo dos cristales, uno de 12Mhz, y otro de 8mHZ, si que es verdad que me he fijado en la pagina con el eerror y tal, que aparecen los baud rate para 1,4,8,12 y 16 FCY , pero claro si pongo mi cristal de 12MHZ serian FCY=6 no?

puede funcionar con el? o tendria que poner mejor el de 8Mhz?

Al utilizar las 2 formulas dependiendo del BRGH, me da el mismo error en ambas, como tu decias en tu post 0,16% entonces es indiferente cual utilice? asesorame pofavor

uN SALUDO y gracias por todo ;)

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: [Solucionado]Problema UART pic24f con XC16. Transmite bien, recibe mal
« Respuesta #14 en: 24 de Agosto de 2013, 08:12:36 »
FCY es FOSC/2 (en tu caso 6MHz) pero según creo lo puedes cambiar para los periféricos (BIT's DOZE).

Yo actualmente tengo este micro a 55536 bps con un cristal de 4Mhz, quiero decirte que a mi entender las tablas son orientativas, el por qué de esta velocidad tan "rara" es otra historia.

Creo que es indiferente cuál utilices si el error es el mismo, 0.16% es despreciable.

Yo tuve una historia con esto por que además queria utilizar el USB y hay que elegir el xtal cuidadosamente para que cuadre todo, el PLL el BRG, etc...