Autor Tema: Problema de recepcion con UART  (Leído 1678 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Problema de recepcion con UART
« en: 17 de Noviembre de 2012, 17:03:16 »
Hola a todos.
Le comento algo. Estoy tratando de enviar por la UART de un pic24f 126 bytes, estos bytes son devueltos por un pic 16f, estos caracteres van del 1 al 126, de tal forma que se envía el valor decimal y despues se compara para ver si hubo un error.
Pues resulta que todos los bytes son enviados y devueltos correctamente menos el 10, que me devuelve 13.
He probado a enviar 10 en un bucle infinito y siempre devuelve 13.
He probado un bucle que envia 10 desde el 16f y se recibe correctamente

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Problema de recepcion con UART
« Respuesta #1 en: 17 de Noviembre de 2012, 17:18:11 »
Hola, con que herramienta estas verificando eso ? Porque me llama la atención que envías un 10 que es el caracter line-feed y justamente el 13 es el Carriage return, que son los dos caracteres de próxima linea y retorno de carro, posiblemente la herramienta te los este convirtiendo.

Saludos !

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Problema de recepcion con UART
« Respuesta #2 en: 17 de Noviembre de 2012, 17:38:53 »
Hola, con que herramienta estas verificando eso ? Porque me llama la atención que envías un 10 que es el caracter line-feed y justamente el 13 es el Carriage return, que son los dos caracteres de próxima linea y retorno de carro, posiblemente la herramienta te los este convirtiendo.

Saludos !

El pic24f me los envia por usb_cdc al pc y los veo con slow de ccs. Esto ya funcionó con un 18f2550, así que descarto que sea del programa terminal.
Tiene que ser "algo" en el pic24f, por que el 16f hace lo que tiene que hacer por que como ya digo esto ya funcionaba antes.

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

Esta es la rutina para incluir el caracter recibido en un buffer:
Código: [Seleccionar]
void addcbuff(unsigned char c){
   cbuff[xbuff++]=c;            // Añade carácter recibido al Buffer
   if (c==end_of_transmit){     // Si el caracter en el indicador de final
      flag_buffer = 1;          // ya se puede procesar
   }
}

Esta el la funcion de envio al esclavo (16f1525). 'i' es un número decimal que se va incrementando en un bucle for desde 1 hasta 125
y justo en 10 tengo el problema  :shock:

Código: [Seleccionar]
putsUART1(printf("%c%c%c%c%c",RS485_D,RS485_ID,command_test,i,end_of_transmit));

Esta es la porción de código que recoge el byte de un buffer y lo envía por usb_cdc:

Código: [Seleccionar]
case 0x74:  //"t"
            cTest = arg[0];
            while(!USBUSARTIsTxTrfReady()){
                        CDCTxService();
                    }
            sprintf(iText,"Recibido %u \n\r",cTest);
            putsUSBUSART(iText);
            CDCTxService();

         break;


Como comprobarás es un código sencillo y ahora me pregunto si puede haber un problema con char, int o unsigned.
No debería, porque para eso utilizo hasta un valor máximo de 125.
Voy a probar con hiperterminal haber que pasa

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Problema de recepcion con UART
« Respuesta #3 en: 17 de Noviembre de 2012, 17:54:00 »


En hiperterminal pasa lo mismo

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Problema de recepcion con UART
« Respuesta #4 en: 17 de Noviembre de 2012, 18:19:01 »
Enviar envia bien, el problema está en la recepción/interpretación.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Problema de recepcion con UART
« Respuesta #5 en: 17 de Noviembre de 2012, 18:45:42 »
Hola, es una cosa muy rara :shock: ... Lamento no poder ayudarte

Saludos !


Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Problema de recepcion con UART
« Respuesta #6 en: 17 de Noviembre de 2012, 18:53:01 »
Hola, es una cosa muy rara :shock: ... Lamento no poder ayudarte

Saludos !



Estoy flipando. Realmente no me importa por que lo que quiero es utilizarlo para hacer un test de envio/recepcion de tramas en un bus rs485 y puedo simplemente saltarme ese byte, total uno menos, pero intentaré averiguar qué ocurre.


 

anything