Tradução: Maria Elisa - Assessoria em Inglês e Alemão
Revisão: Renato Kodaira
12.3.1 RECEPTOR DE 9 BITS DO USART COM DETECÇÃO DE ENDEREÇO
Quando o bit RX9 é ativado no registrador RCSTA, 9 bits são recebidos e o nono bit é colocado no bit RX9D do registrador RCSTA dos microcontroladores PIC16F627A, PIC16F628A e PIC16F648A. O módulo USART possui uma provisão especial para comunicação com multiprocessadores. A comunicação com multiprocessadores é habilitada ativando-se o bit ADEN (RCSTA<3>) juntamente com o bit RX9. A porta está agora programada de forma que quando o último bit for recebido, o conteúdo do Registrador de Deslocamento de Recepção (RSR) é transferido para o buffer de recepção, o nono bit do RSR (RSR<8>) é transferido para o RX9D, e a interrupção da recepção é ativada se, e somente se RSR<8> = 1. Esta característica pode ser utilizada no sistema de multiprocessadores como segue:
Um processador mestre pretende transmitir um bloco de dados para um dos muitos escravos. Ele deve primeiramente enviar um byte de endereço que identifica o escravo desejado. Um byte de endereço é identificado ativando-se o nono bit (RSR<8>) para '1' (ao invés de um '0' para um byte de dados). Se os bits ADEN e RX9 são ativados no registrador RCSTA do escravo, habilitando a comunicação com multiprocessadores, todos os bytes de dados serão ignorados. Entretanto, se o nono bit recebido é igual a '1', indicando que o byte recebido é de endereço, o escravo será interrompido e o conteúdo do registrador RSR será transferido para o buffer de recepção. Isto permite que o escravo seja interrompido somente por endereços, de forma que o escravo possa examinar o byte recebido para verificar se está sendo endereçado. O escravo endereçado irá apagar então o seu bit ADEN e se preparar para receber bytes de dados do mestre.
Quando o ADEN é habilitado (= 1), todos os Bytes de dados são ignorados. Na sequência do bit Stop, os dados não serão carregados para o buffer de recepção, e nenhuma interrupção ocorrerá. Caso um outro byte seja deslocado para o registrador RSR, o byte de dados anterior será perdido.
O bit ADEN somente terá efeito quando o receptor estiver configurado no modo de 9 bits (RX9 = 1). Quando o ADEN estiver desabilitado (= 0), todos os bytes de dados são recebidos e o 9º bit pode ser utilizado como o bit de paridade.
O diagrama de blocos da recepção é apresentado na Figura 12.4.
A recepção é habilitada ativando-se o bit CREN (RCSTA<4>).
12.3.1.1 Configurando o modo de 9 bits com Detecção de Endereço
Siga estes passos ao configurar a Recepção Assíncrona com a Detecção de Endereço Habilitada:
-
O TRISB<1> e o TRISB<2> devem ambos ser ativados para '1', a fim de configurar os pinos RB1/RX/DT e RB2/TX/CK como entradas. O drive de saída, quando requisitado, é controlado pelos circuitos periféricos.
-
Inicializar o registrador SPBRG para a taxa de transmissão apropriada. Se uma taxa de transmissão de alta velocidade é desejada, ativar o bit BRGH.
-
Habilitar a comunicação assíncrona ativando ou apagando o bit SYNC e ativando o bit SPEN.
-
Se interrupções forem desejadas, então ative o bit de habilitação RCIE.
-
Ativar o bit RX9 a fim de habilitar a recepção de 9 bits.
-
Ativar o ADEN para habilitar a detecção de endereço.
-
Habilitar a recepção ativando o bit CREN ou SREN.
-
O bit sinalizador RCIF será ativado quando a recepção estiver completa, e uma interrupção será gerada se o bit de habilitação RCIE tiver sido ativado.
-
Executar a leitura dos dados de 8 bits recebidos, através da leitura do registrador RCREG, a fim de determinar se o dispositivo está sendo endereçado.
-
Caso haja ocorrido um erro OERR, eliminar o erro apagando o bit de habilitação CREN, se ele já tiver sido ativado.
-
Caso o dispositivo tiver sido endereçado (RSR<8> = 1 com match de endereço habilitado), apagar os bits ADEN e RCIF para permitir que os bytes de dados e os bytes de endereço sejam lidos para o buffer de recepção, e interrompam a CPU
TABELA 12.8: REGISTRADORES ASSOCIADOS À RECEPÇÃO ASSÍNCRONA
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 |
0Ch |
PIR1 |
EEIF |
CMIF |
RCIF |
TXIF |
--- |
CCP1IF |
TMR2IF |
TMR1IF |
0000 -000 |
0000 -000 |
18h |
RCSTA |
SPEN |
RX9 |
SREN |
CREN |
ADEN |
FERR |
OERR |
RX9D |
0000 000x |
0000 000x |
1Ah |
RCREG |
Registrador de Dados Recebidos do USART |
0000 0000 |
0000 0000 |
8Ch |
PIE1 |
EEIE |
CMIE |
RCIE |
TXIE |
--- |
CCP1IE |
TMR2IE |
TMR1IE |
0000 -000 |
0000 -000 |
98h |
TXSTA |
CSRC |
TX9 |
TXEN |
SYNC |
--- |
BRGH |
TRMT |
TX9D |
0000 -010 |
0000 -010 |
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 a recepção assíncrona