Autor Tema: Duda configuración bits/segundo RS232 en pic18f97j60  (Leído 1712 veces)

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

Desconectado Maria33

  • PIC12
  • **
  • Mensajes: 54
Duda configuración bits/segundo RS232 en pic18f97j60
« en: 11 de Marzo de 2009, 12:23:43 »
Hola estoy realizando un programa en c18 para el pic18f97j60 en el que el pic envia y recibe datos por puerto serie. Los datos enviados al pic se transmiten desde un PC. En el pc el baudrate es 115200 y en el pic tengo el siguiente código:

// Initilize UART


BAUD_RATE = 115200;
    TXSTA = 0x20;
    RCSTA = 0x90;

   #define CLOSEST_SPBRG_VALUE ((GetPeripheralClock()+2ul*BAUD_RATE)/BAUD_RATE/4-1)
   #define BAUD_ACTUAL (GetPeripheralClock()/(CLOSEST_SPBRG_VALUE+1))
   #if (BAUD_ACTUAL > BAUD_RATE)
      #define BAUD_ERROR (BAUD_ACTUAL-BAUD_RATE)
   #else
      #define BAUD_ERROR (BAUD_RATE-BAUD_ACTUAL)
   #endif
   #define BAUD_ERROR_PRECENT   ((BAUD_ERROR*100+BAUD_RATE/2)/BAUD_RATE)
   #if BAUD_ERROR_PRECENT > 2
      // Use high speed (Fosc/4) 16-bit baud rate generator
      BAUDCONbits.BRG16 = 1;
      TXSTAbits.BRGH = 1;
      SPBRGH = ((GetPeripheralClock()+BAUD_RATE/2)/BAUD_RATE-1)>>8 & 0xFF;
      SPBRG = ((GetPeripheralClock()+BAUD_RATE/2)/BAUD_RATE-1) & 0xFF;
   #else
      // See if we can use the high baud (Fosc/16) 8-bit rate setting
      #if ((GetPeripheralClock()+2*BAUD_RATE)/BAUD_RATE/4 - 1) <= 255
         SPBRG = (GetPeripheralClock()+2*BAUD_RATE)/BAUD_RATE/4 - 1;
         TXSTAbits.BRGH = 1;
      #else   // Use the low baud rate 8-bit setting
         SPBRG = (GetPeripheralClock()+8*BAUD_RATE)/BAUD_RATE/16 - 1;
      #endif
   #endif
   
   // Use high priority interrupt
   IPR1bits.TXIP = 1;
   IPR1bits.RCIP = 1;


Mi duda es la siguiente:
Aunque en el PIC se establezca baudrate = 11500 ¿cual es la transmisión en bits por segundo?
No entiendo muy bien el código de inicialización del puerto serie en el PIC.
¿Alguien me prodría ayudar?
GRACIAS


 

anything