Datasheet

PIC16F913/914/916/917/946
DS41250F-page 132 © 2007 Microchip Technology Inc.
9.2 AUSART Baud Rate Generator
(BRG)
The Baud Rate Generator (BRG) is an 8-bit timer that
is dedicated to the support of both the asynchronous
and synchronous AUSART operation.
The SPBRG register determines the period of the free
running baud rate timer. In Asynchronous mode the
multiplier of the baud rate period is determined by the
BRGH bit of the TXSTA register. In Synchronous mode,
the BRGH bit is ignored.
Table 9-3 contains the formulas for determining the
baud rate. Example 9-1 provides a sample calculation
for determining the baud rate and baud rate error.
Typical baud rates and error values for various
asynchronous modes have been computed for your
convenience and are shown in Table 9-3. It may be
advantageous to use the high baud rate (BRGH = 1), to
reduce the baud rate error.
Writing a new value to the SPBRG register causes the
BRG timer to be reset (or cleared). This ensures that
the BRG does not wait for a timer overflow before out-
putting the new baud rate.
EXAMPLE 9-1: CALCULATING BAUD
RATE ERROR
TABLE 9-3: BAUD RATE FORMULAS
TABLE 9-4: REGISTERS ASSOCIATED WITH THE BAUD RATE GENERATOR
For a device with FOSC of 16 MHz, desired baud rate
of 9600, Asynchronous mode:
Solving for SPBRG:
X
F
OSC
Desired Baud Rate
---------------------------------------------
64
--------------------------------------------- 1=
Desired Baud Rate
F
OSC
64 SPBRG 1+()
---------------------------------------=
16000000
9600
------------------------
64
------------------------1=
25.042[]25==
Calculated Baud Rate
16000000
64 25 1+()
---------------------------=
9615=
Error
Calc. Baud Rate Desired Baud Rate
Desired Baud Rate
--------------------------------------------------------------------------------------------=
9615 9600()
9600
---------------------------------- 0 . 1 6 %==
Configuration Bits
AUSART Mode
Baud Rate Formula
SYNC BRGH
00 Asynchronous F
OSC/[64 (n+1)]
01 Asynchronous F
OSC/[16 (n+1)]
1x Synchronous F
OSC/[4 (n+1)]
Legend: x = Don’t care, n = value of SPBRG register
NameBit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
Value on
POR, BOR
Value on
all other
Resets
RCSTA SPEN
RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 0000 000x
SPBRG BRG7 BRG6 BRG5 BRG4 BRG3 BRG2 BRG1 BRG0 0000 0000 0000 0000
TXSTA
CSRC TX9 TXEN SYNC —BRGHTRMT TX9D 0000 -010 0000 -010
Legend: x = unknown, - = unimplemented read as ‘0’. Shaded cells are not used for the Baud Rate Generator.