Altana Tubes > Blog > PIC16F627A/628A/648A > Módulo USART > Taxa

12.1 Gerador de Taxa de Transmissão (BRG) do USART dos microcontroladores PIC16F627A, PIC16F628A e PIC16F648A

Tradução: Maria Elisa - Assessoria em Inglês e Alemão 

Revisão: Renato Kodaira

O BRG dos microcontroladores PIC16F627A, PIC16F628A e PIC16F648A suporta ambos os modos Assíncrono e Síncrono do USART. Consiste em um gerador de taxa de transmissão (Baud Rate Generator) com 8 bits dedicados. O registrador SPBRG controla o período de um temporizador de 8 bits de funcionamento livre. No modo Assíncrono, o bit BRGH (TXSTA<2>) também controla a taxa de transmissão. No modo Síncrono, o bit BRGH é ignorado. A Tabela 12.1 apresenta a fórmula para o cálculo da taxa de transmissão para diferentes modos do USART, a qual se aplica somente ao modo Mestre (clock interno).

Dada a taxa de transmissão desejada, e a FOSC, o valor inteiro mais próximo para o registrador SPBRG pode ser calculado utilizando-se a fórmula na Tabela 12.1. A partir deste, o erro na taxa de transmissão pode ser determinado.

O Exemplo 12.1 apresenta o cálculo do erro da taxa de transmissão para as seguintes condições:

  • FOSC = 16 MHz
  • Taxa de Transmissão Desejada = 9600
  • BRGH = 0
  • SYNC = 0

EXEMPLO 12.1: CÁLCULO DO ERRO DA TAXA DE TRANSMISSÃO

Pode ser vantajoso se utilizar a alta taxa de transmissão (BRGH = 1) mesmo para clocks de transmissão mais lenta. Isto porque a equação FOSC/(16(x + 1)) pode reduzir o erro da taxa de transmissão em alguns casos.

A escrita de um novo valor no registrador SPBRG faz o temporizador BRG ser reinicializado (ou apagado) e assegura que o BRG não espere por um overflow do temporizador para dar saída a uma nova taxa de transmissão.

Os dados no pino RB1/RX/DT são amostrados três vezes por um circuito detector de maioria, a fim de determinar se um nível alto ou baixo está presente no pino RX.

TABELA 12.1: FÓRMULA DA TAXA DE TRANSMISSÃO

SYNC BRGH = 0 (Baixa Velocidade) BRGH = 1 (Alta Velocidade)
0 (Assíncrono) Taxa de Transmissão = FOSC/(64(x + 1)) Taxa de Transmissão = FOSC/(16(x + 1))
1 (Síncrono) Taxa de Transmissão = FOSC/(4(x + 1)) NA

TABELA 12.2: REGISTRADORES ASSOCIADOS AO GERADOR DE TAXA DE TRANSMISSÃO

Endereço Nome Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valor na POR Valor em Todas as Outras Reinicializações
98h TXSTA CSRC TX9 TXEN SYNC --- BRGH TRMT TX9D 0000 -010 0000 -010
18h RCSTA SPEN RX9 SREN CREN ADEN FERR OERR RX9D 0000 000x 0000 000x
99h SPBRG Registrador Gerador de Taxa de Transmissão 0000 0000 0000 0000

Legenda:
x = desconhecido
- = não implementado, lido como '0'
células sombreadas = não utilizadas para o BRG

TABELA 12.3: TAXAS DE TRANSMISSÃO PARA O MODO SÍNCRONO

TAXA DE TRANSMISSÃO (x1000) FOSC = 20 MHz FOSC = 16 MHz FOSC = 10 MHz
TAXA CALCULADA ERRO Valor de SPBRG (decimal) TAXA CALCULADA ERRO Valor de SPBRG (decimal) TAXA CALCULADA ERRO Valor de SPBRG (decimal)
0,3 NA --- --- NA --- --- NA --- ---
1,2 NA --- --- NA --- --- NA --- ---
2,4 NA --- --- NA --- --- NA --- ---
9,6 NA --- --- NA --- --- 9,766 +1,73% 255
19,2 19,53 +1,73% 255 19,23 0,16% 207 19,23 +0,16% 129
76,8 76,92 +0,16% 64 76,92 +0,16% 51 75,76 -1,36% 32
96 96,15 +0,16% 51 95,24 -0,79% 41 96,15 +0,16% 25
300 294,1 -1,96% 16 307,69 +2,56% 12 312,5 +4,17% 7
500 500 0 9 500 0 7 500 0 4
ALTA 5000 --- 0 4000 --- 0 2500 --- 0
BAIXA 19,53 --- 255 15,625 --- 255 9,766 --- 255

 

TAXA DE TRANSMISSÃO (x1000) FOSC = 7,15909 MHz FOSC = 5,0688 MHz FOSC = 4 MHz
TAXA CALCULADA ERRO Valor de SPBRG (decimal) TAXA CALCULADA ERRO Valor de SPBRG (decimal) TAXA CALCULADA ERRO Valor de SPBRG (decimal)
0,3 NA --- --- NA --- --- NA --- ---
1,2 NA --- --- NA --- --- NA --- ---
2,4 NA --- --- NA --- --- NA --- ---
9,6 9,622 +0,23% 185 9,6 0 131 9,615 +0,16% 103
19,2 19,24 +0,23% 92 19,2 0 65 19,231 +0,16% 51
76,8 77,82 +1,32% 22 79,2 +3,13% 15 75,923 +0,16% 12
96 94,20 -1,88% 18 97,48 +1,54% 12 100 +4,17% 9
300 298,3 -0,57% 5 316,8 +5,60% 3 NA --- ---
500 NA --- --- NA --- --- NA --- ---
ALTA 1789,8 --- 0 1267 --- 0 100 --- 0
BAIXA 6,991 --- 255 4,950 --- 255 3,906 --- 255

 

TAXA DE TRANSMISSÃO (x1000) FOSC = 3,579545 MHz FOSC = 1 MHz FOSC = 32,768 kHz
TAXA CALCULADA ERRO Valor de SPBRG (decimal) TAXA CALCULADA ERRO Valor de SPBRG (decimal) TAXA CALCULADA ERRO Valor de SPBRG (decimal)
0,3 NA --- --- NA --- --- 0,303 +1,14% 26
1,2 NA --- --- 1,202 +0,16% 207 1,170 -2,48% 6
2,4 NA --- --- 2,404 +0,16% 103 NA --- ---
9,6 9,622 +0,23% 92 9,615 +0,16% 25 NA --- ---
19,2 19,04 -0,83% 46 19,24 +0,16% 12 NA --- ---
76,8 74,57 -2,90% 11 83,34 +8,51% 2 NA --- ---
96 99,43 +3,57% 8 NA --- --- NA --- ---
300 298,3 -0,57% 2 NA --- --- NA --- ---
500 NA --- --- NA --- --- NA --- ---
ALTA 894,9 --- 0 250 --- 0 8,192 --- 0
BAIXA 3,496 --- 255 0,9766 --- 255 0,032 --- 255

TABELA 12.4: TAXAS DE TRANSMISSÃO PARA O MODO ASSÍNCRONO (BRGH = 0)

TAXA DE TRANSMISSÃO (x1000) FOSC = 20 MHz FOSC = 16 MHz FOSC = 10 MHz
TAXA CALCULADA ERRO Valor de SPBRG (decimal) TAXA CALCULADA ERRO Valor de SPBRG (decimal) TAXA CALCULADA ERRO Valor de SPBRG (decimal)
0,3 NA --- --- NA --- --- NA --- ---
1,2 1,221 +1,73% 255 1,202 +0,16% 207 1,202 +0,16% 129
2,4 2,404 +0,16% 129 2,404 +0,16% 103 2,404 +0,16% 64
9,6 9,469 -1,36% 32 9,615 +0,16% 25 9,766 +1,73% 15
19,2 19,53 +1,73% 15 19,23 +0,16% 12 19,53 +1,73% 7
76,8 78,13 +1,73% 3 83,33 +8,51% 2 78,13 +1,73% 1
96 104,2 +8,51% 2 NA --- --- NA --- ---
300 312,5 +4,17% 0 NA --- --- NA --- ---
500 NA --- --- NA --- --- NA --- ---
ALTA 312,5 --- 0 250 --- 0 156,3 --- 0
BAIXA 1,221 --- 255 0,977 --- 255 0,6104 --- 255

 

TAXA DE TRANSMISSÃO (x1000) FOSC = 7,15909 MHz FOSC = 5,0688 MHz FOSC = 4 MHz
TAXA CALCULADA ERRO Valor de SPBRG (decimal) TAXA CALCULADA ERRO Valor de SPBRG (decimal) TAXA CALCULADA ERRO Valor de SPBRG (decimal)
0,3 NA --- --- 0,31 +3,13% 255 0,3005 -0,17% 207
1,2 1,203 +0,23% 92 1,2 0 65 1,202 +1,67% 51
2,4 2,380 -0,83% 46 2,4 0 32 2,404 +1,67% 25
9,6 9,322 -2,90% 11 9,9 +3,13% 7 NA --- ---
19,2 18,64 -2,90% 5 19,8 +3,13% 3 NA --- ---
76,8 NA --- --- 79,2 +3,13% 0 NA --- ---
96 NA --- --- NA --- --- NA --- ---
300 NA --- --- NA --- --- NA --- ---
500 NA --- --- NA --- --- NA --- ---
ALTA 111,9 --- 0 79,2 --- 0 62,5 --- 0
BAIXA 0,437 --- 255 0,3094 --- 255 3,906 --- 255

 

TAXA DE TRANSMISSÃO (x1000) FOSC = 3,579545 MHz FOSC = 1 MHz FOSC = 32,768 kHz
TAXA CALCULADA ERRO Valor de SPBRG (decimal) TAXA CALCULADA ERRO Valor de SPBRG (decimal) TAXA CALCULADA ERRO Valor de SPBRG (decimal)
0,3 0,301 +0,23% 185 0,300 +0,16% 51 0,256 -14,67% 1
1,2 1,190 -0,83% 46 1,202 +0,16% 12 NA --- ---
2,4 2,432 +1,32 22 2,232 -6,99% 6 NA --- ---
9,6 9,322 -2,90% 5 NA --- --- NA --- ---
19,2 18,64 -2,90% 2 NA --- --- NA --- ---
76,8 NA --- --- NA --- --- NA --- ---
96 NA --- --- NA --- --- NA --- ---
300 NA --- --- NA --- --- NA --- ---
500 NA --- --- NA --- --- NA --- ---
ALTA 55,93 --- 0 15,63 --- 0 0,512 --- 0
BAIXA 0,2185 --- 255 0,0610 --- 255 0,0020 --- 255

TABELA 12.5: TAXAS DE TRANSMISSÃO PARA O MODO ASSÍNCRONO (BRGH = 1)

TAXA DE TRANSMISSÃO (x1000) FOSC = 20 MHz FOSC = 16 MHz FOSC = 10 MHz
TAXA CALCULADA ERRO Valor de SPBRG (decimal) TAXA CALCULADA ERRO Valor de SPBRG (decimal) TAXA CALCULADA ERRO Valor de SPBRG (decimal)
9.600 9.615 +0,16% 129 9.615 +0,16% 103 9.615 +0,16% 64
19.200 19.230 +0,16% 64 19.230 +0,16% 51 18.939 -1,36% 32
38.400 37.878 -1,36% 32 38.461 +0,16% 25 39.062 +1,7% 15
57.600 56.818 -1,36% 21 58.823 +2,12% 16 56.818 -1,36% 10
115.200 113.636 -1,36% 10 111.111 -3,55% 8 125.000 +8,51% 4
250.000 250.000 0 4 250.000 0 3 NA --- ---
625.000 625.000 0 1 NA --- --- 625.000 0 0
1.250.000 1.250.000 0 0 NA --- --- NA --- ---

 

TAXA DE TRANSMISSÃO (x1000) FOSC = 7,16 MHz FOSC = 5,068 MHz FOSC = 4 MHz
TAXA CALCULADA ERRO Valor de SPBRG (decimal) TAXA CALCULADA ERRO Valor de SPBRG (decimal) TAXA CALCULADA ERRO Valor de SPBRG (decimal)
9.600 9.520 -0,83% 46 9.598,485 -0,016% 32 9.615,385 +0,16% 25
19.200 19.454 +1,32% 22 18.632,35 -2,956% 16 19.230,77 +0,16% 12
38.400 37.286 -2,90% 11 39.593,75 +3,109% 7 35.714,29 -6,994% 6
57.600 55.930 -2,90% 7 52.791,67 -8,348% 5 62.500 +8,507% 3
115.200 111.860 -2,90% 3 105.583,3 -8,348% 2 125.000 +8,507% 1
250.000 NA --- --- 316.750 +26,700% 0 250.000 0 0
625.000 NA --- --- NA --- --- NA --- ---
1.250.000 NA --- --- NA --- --- NA --- ---

 

TAXA DE TRANSMISSÃO (x1000) FOSC = 3,579545 MHz FOSC = 1 MHz FOSC = 32,768 kHz
TAXA CALCULADA ERRO Valor de SPBRG (decimal) TAXA CALCULADA ERRO Valor de SPBRG (decimal) TAXA CALCULADA ERRO Valor de SPBRG (decimal)
9.600 9.725,543 +1,308% 22 8.928 -6,994% 6 NA --- ---
19.200 18.640,63 -2,913% 11 20.833,3 +8,507% 2 NA --- ---
38.400 37.281,25 -2,913% 5 31.250 -18,620% 1 NA --- ---
57.600 55.921,88 -2,913% 3 62.500 +8,507% 0 NA --- ---
115.200 111.243,8 -2,913% 1 NA --- --- NA --- ---
250.000 223.687,5 -10,525% 0 NA --- --- NA --- ---
625.000 NA --- --- NA --- --- NA --- ---
1.250.000 NA --- --- NA --- --- NA --- ---
<-Anterior Índice Próximo->