12.5 Modo Síncrono Escravo do USART dos microcontroladores PIC16F627A, PIC16F628A e PIC16F648A
Tradução: Maria Elisa - Assessoria em Inglês e Alemão
Revisão: Renato Kodaira
O modo Síncrono Escravo dos microcontroladores PIC16F627A, PIC16F628A e PIC16F648A difere do modo Mestre pelo fato de o clock de deslocamento ser alimentado externamente no pino RB2/TX/CK (ao invés de ser alimentado internamente, como no modo Mestre). Isto permite que o dispositivo transfira ou receba dados durante a Hibernação. O modo Escravo é selecionado apagando-se o bit CSRC (TXSTA<7>).
12.5.1 TRANSMISSÃO SÍNCRONA ESCRAVA DO USART
A operação dos modos Mestre e Escravo é identica, exceto no caso do modo de Hibernação.
Se duas palavras são escritas no TXREG e depois a instrução SLEEP é executada, o seguinte irá ocorrer:
-
A primeira palavra será imediatamente transferida para o registrador TSR e transmitida.
-
A segunda palavra permanecerá no registrador TXREG.
-
O bit sinalizador TXIF não será ativado.
-
Quando a primeira palavra tiver sido deslocada para o TSR, o registrador TXREG transferirá a segunda palavra para o TSR e o bit sinalizador TXIF agora será ativado.
-
Caso o bit de habilitação TXIE for ativado, a interrupção removerá o chip da Hibernação e se a interrupção global for habilitada o programa desviará para o vetor de interrupção (0004h).
Siga estes passos ao configurar uma Transmissão Síncrona Escrava:
-
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.
-
Habilitar a porta serial síncrona escrava ativando os bits SYNC e SPEN, e apagando o bit CSRC.
-
Apagar os bits CREN e SREN.
-
Se interrupções forem desejadas, ativar o bit de habilitação TXIE.
-
Se a transmissão de 9 bits for desejada, ativar o bit TX9.
-
Habilitar a transmissão ativando o bit TXEN.
-
Se a transmissão de 9 bits for selecionada, o nono bit deve ser carregado para o bit TX9D.
-
Iniciar a transmissão através do carregamento de dados para o registrador TXREG.
12.5.2 RECEPÇÃO SÍNCRONA ESCRAVA DO USART
A operação dos modos Síncrono Mestre e Síncrono Escravo é idêntica, exceto no caso do modo de Hibernação. Além disso, o bit SREN é do tipo "indiferente" no modo Escravo.
Se a recepção estiver habilitada pela ativação do bit CREN antes da instrução SLEEP, então uma palavra pode ser recebida durante a Hibernação. Tendo recebido a palavra completamente, o registrador RSR transferirá os dados para o registrador RCREG, e se o bit de habilitação RCIE for ativado, a interrupção gerada removerá o chip da Hibernação. Se a interrupção global for habilitada, o programa desviará para o vetor de interrupção (0004h).
Siga estes passos ao configurar uma Recepção Síncrona Escrava:
-
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.
-
Habilitar a porta serial síncrona mestre ativando os bits SYNC e SPEN, e apagando o bit CSRC.
-
Se interrupções forem desejadas, ativar o bit de habilitação RCIE.
-
Se a recepção de 9 bits for desejada, ativar o bit RX9.
-
Para habilitar a recepção, ativar o bit de habilitação CREN
-
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 do registrador RCSTA para obter o nono bit (caso esteja habilitado) e determinar se algum erro ocorreu durante a recepção.
-
Executar a leitura dos dados de 8 bits recebidos, através da leitura do registrador RCREG.
-
Caso haja ocorrido um erro OERR, eliminar o erro apagando o bit de habilitação CREN.
TABELA 12.11: REGISTRADORES ASSOCIADOS À TRANSMISSÃO SÍNCRONA ESCRAVA
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 |
19h |
TXREG |
Registrador de Dados Transmitidos 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 transmissão síncrona escrava
TABELA 12.12: REGISTRADORES ASSOCIADOS À RECEPÇÃO SÍNCRONA ESCRAVA
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 síncrona escrava