Autor Tema: UART a 921600 baudios (SOLUCIONADO)  (Leído 854 veces)

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

Desconectado RodrigoAndres

  • PIC16
  • ***
  • Mensajes: 171
UART a 921600 baudios (SOLUCIONADO)
« en: 24 de Enero de 2016, 10:41:54 »
ola a todos, lo que pasa es que necesito hacer correr el puerto uart a 921600 baudios con el PIC18F4550, pero el problema es que haciendo los calculos la velocidad mas cercana que alcanza es un millon de baudios, eso seria como 8% de error y no creo que sea bueno. lo que me pregunto es si hay algun pic parecido que no tenga tanto error y alcanze 921600 baudios??
« Última modificación: 24 de Enero de 2016, 11:44:57 por RodrigoAndres »

Desconectado RodrigoAndres

  • PIC16
  • ***
  • Mensajes: 171
Re:UART a 921600 baudios
« Respuesta #1 en: 24 de Enero de 2016, 11:44:41 »
la clave era colocar el BAUDCONbits.BRG16=1; para que quedara con la formula de 48000000/(4*(n+1))

Código: [Seleccionar]

    OpenUSART(USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE &
    USART_EIGHT_BIT & USART_SINGLE_RX & USART_BRGH_HIGH,12);
    BAUDCONbits.BRG16=1;


Desconectado RodrigoAndres

  • PIC16
  • ***
  • Mensajes: 171
Re:UART a 921600 baudios (SOLUCIONADO)
« Respuesta #2 en: 24 de Enero de 2016, 21:06:50 »
En realidad es asi:

Código: [Seleccionar]
    OpenUSART(USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE &
             USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH,12);
    BAUDCONbits.BRG16=1;   
    RCONbits.IPEN = 1; // abilitamos Prioridades
    IPR1bits.RCIP = 1; //alta priorida usar

la diferencia es el USART_SINGLE_RX, no se que es esa cosa rara pero hace que no alla interrupcion, se la cambie por USART_CONT_RX  y funsiono muy bien. se lo recomiendo mucho a la gente que programa pics