English
Language : 

PIC16F882_09 Datasheet, PDF (165/328 Pages) Microchip Technology – 28/40/44-Pin, Enhanced Flash-Based 8-Bit CMOS Microcontrollers with nanoWatt Technology
PIC16F882/883/884/886/887
12.3 EUSART Baud Rate Generator
(BRG)
The Baud Rate Generator (BRG) is an 8-bit or 16-bit
timer that is dedicated to the support of both the
asynchronous and synchronous EUSART operation.
By default, the BRG operates in 8-bit mode. Setting the
BRG16 bit of the BAUDCTL register selects 16-bit
mode.
The SPBRGH, SPBRG register pair determines the
period of the free running baud rate timer. In
Asynchronous mode the multiplier of the baud rate
period is determined by both the BRGH bit of the TXSTA
register and the BRG16 bit of the BAUDCTL register. In
Synchronous mode, the BRGH bit is ignored.
Table 12-3 contains the formulas for determining the
baud rate. Example 12-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 12-3. It may be
advantageous to use the high baud rate (BRGH = 1),
or the 16-bit BRG (BRG16 = 1) to reduce the baud rate
error. The 16-bit BRG mode is used to achieve slow
baud rates for fast oscillator frequencies.
Writing a new value to the SPBRGH, SPBRG register
pair causes the BRG timer to be reset (or cleared). This
ensures that the BRG does not wait for a timer overflow
before outputting the new baud rate.
If the system clock is changed during an active receive
operation, a receive error or data loss may result. To
avoid this problem, check the status of the RCIDL bit to
make sure that the receive operation is Idle before
changing the system clock.
EXAMPLE 12-1: CALCULATING BAUD
RATE ERROR
For a device with FOSC of 16 MHz, desired baud rate
of 9600, Asynchronous mode, 8-bit BRG:
Desired Baud Rate = 6---4----(--[---S---P---B----R----G--F--H--O--:--SS---CP----B----R---G-----]----+-----1----)
Solving for SPBRGH:SPBRG:
----------------F----O----S---C------------------
X = -D----e---s--i--r--e---d----B----a---u---d----R----a---t--e- – 1
64
1---6---0----0--0---0---0---0--
= ------9----6---0--0-------- – 1
64
= [25.042] = 25
Calculated Baud Rate = 6--1-4--6--(-0-2--0-5--0---+0---0--1-0---)
= 9615
Error = C-----a--l--c---.---B---a---u----d----R----a---t-e-----–----D----e---s--i--r--e---d-----B---a---u---d-----R---a---t--e---
Desired Baud Rate
= (---9---6---1---5----–-----9---6---0---0---)- = 0.16%
9600
TABLE 12-3: BAUD RATE FORMULAS
Configuration Bits
SYNC
BRG16
BRGH
BRG/EUSART Mode
0
0
0
0
1
1
Legend:
0
0
8-bit/Asynchronous
0
1
8-bit/Asynchronous
1
0
16-bit/Asynchronous
1
1
16-bit/Asynchronous
0
x
8-bit/Synchronous
1
x
16-bit/Synchronous
x = Don’t care, n = value of SPBRGH, SPBRG register pair
Baud Rate Formula
FOSC/[64 (n+1)]
FOSC/[16 (n+1)]
FOSC/[4 (n+1)]
TABLE 12-4: REGISTERS ASSOCIATED WITH THE BAUD RATE GENERATOR
Name
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Value on
POR, BOR
Value on
all other
Resets
BAUDCTL ABDOVF RCIDL
—
SCKP BRG16
—
WUE ABDEN 01-0 0-00
RCSTA
SPEN
RX9
SREN CREN ADDEN FERR OERR RX9D 0000 000x
SPBRG
BRG7 BRG6 BRG5 BRG4 BRG3 BRG2 BRG1 BRG0 0000 0000
SPBRGH BRG15 BRG14 BRG13 BRG12 BRG11 BRG10 BRG9 BRG8 0000 0000
TXSTA
CSRC
TX9
TXEN SYNC SENDB BRGH TRMT TX9D 0000 0010
Legend: x = unknown, - = unimplemented read as ‘0’. Shaded cells are not used for the Baud Rate Generator.
01-0 0-00
0000 000x
0000 0000
0000 0000
0000 0010
© 2009 Microchip Technology Inc.
DS41291F-page 163