sistemas microprocessados - utfpr
TRANSCRIPT
Sistemas Microprocessados
sato<at>utfpr<dot>edu<dot>br
http://pessoal.utfpr.edu.br/sato/
Elaborado por Gilson Yukio Sato
USART do ATmega8
sato<at>utfpr<dot>edu<dot>br
Elaborado por Gilson Yukio Sato
Sobre o material
• Essas transparências foram baseadas no manual do ATmega8 da Atmel e no site da Atmel
Elaborado por Gilson Yukio Sato
Serial X Paralela
Elaborado por Gilson Yukio Sato
TX RX
Paralela
TX RX
Serial
Clock
Síncrona X Assíncrona
Elaborado por Gilson Yukio Sato
Clock
Data D0 D1 D2 D3 D4 D5 D6 D7
Síncrona
D0 D1 D2 D3 D4 D5 D6 D7StartBit
StopBit
Assíncrona
USART do ATmega8
• Full-duplex
– Registros independentes para TX e RX
• Assíncrona e Síncrona
• Gerador de Taxa de transmissão (baud rate)
• Frames de 5 a 9 bits de dados com 1 ou 2 stop bits
• Paridade par ou impar
Elaborado por Gilson Yukio Sato
Elaborado por Gilson Yukio Sato
USART do ATmega8
• Três partes principais
– Gerador de clock
– Transmissor
– Receptor
• Registradores de controle – UCSRA
– UCSRB
– UCSRC
Elaborado por Gilson Yukio Sato
Blocos
• Gerador de Clock – Modo síncrono: sincronização com o clock
externo (pino XCK)
– Gerador de Baud Rate
• Transmissor – Buffer (UDR: escrita)
– Shift register
– Gerador de paridade
– Controle
Elaborado por Gilson Yukio Sato
Blocos
• Receptor – Buffer duplo (UDR: recepção)
– Shift Register
– Unidade de recuperação para dados e clock (assíncrona)
– Verificador de paridade
– Controle
Elaborado por Gilson Yukio Sato
Gerador de Clock
• Gera o clock para o transmissor e o receptor
• Possui quatro modos de operação – Assíncrono
– Assíncrono com velocidade dupla
– Síncrono master
– Síncrono slave
Elaborado por Gilson Yukio Sato
Assíncrono X Síncrono
Elaborado por Gilson Yukio Sato
URSEL UMSEL UPM1 UPM0 UCSRC USBS UCSZ1 UCSZ0 UCPOL
Bit 6 Descrição
UMSEL USART Mode Select: - Se UMSEL=0 então Modo Assíncrono - Se UMSEL=1 então Modo Síncrono
Velocidade normal ou Dupla
Elaborado por Gilson Yukio Sato
RXC TXC UDRE FE UCSRA DOR PE U2X MPCM
Bit 1 Descrição
U2X
Double the USART Transmission Speed: - Só tem efeito na comunicação assíncrona - Deve ser 0 na comunicação síncrona - Se U2X=1 dobra a velocidade de comunicação
Pino XCK
• Ativo somente nos modos síncronos
• DDR_XCK
– Data Direction Register
– Master: saída
– Slave: entrada
Elaborado por Gilson Yukio Sato
Elaborado por Gilson Yukio Sato
Gerador de Baud Rate
• Usado no modo assíncrono e no síncrono master
• Entrada: fosc
• Prescaler
– UBRR + contador regressivo
– UBRR armazena valor inicial
– Contador gera clock quando chega em zero
Elaborado por Gilson Yukio Sato
Gerador de Baud Rate
• Prescaler
– Saída = fosc/(UBRR + 1)
– Dependo do modo a saída é dividida por 2, 8 ou 16
– O modo depende de UMSEL, U2X e DDR_XCK
Elaborado por Gilson Yukio Sato
Cálculo do Baud Rate
Elaborado por Gilson Yukio Sato
Formato de Frame
• Frame é um caractere formado por bits de dados, bits de sincronização e bits de detecção de erros
– Sincronização: Start e Stop bits
– Detecção de erros: bit de paridade
– Modo depende de UMSEL, U2X e DDR_XCK
Elaborado por Gilson Yukio Sato
Formato de Frame
• Combinações possíveis
– 1 start bit
– 5, 6, 7, 8 ou 9 bits de dados
– Sem paridade, paridade par ou impar
– 1 ou 2 stop bits
• Sequência
– Start bit, menos significativo até mais significativo, paridade, stop bit(s)
Elaborado por Gilson Yukio Sato
Formato de Frame
• Configuração (UCSRB e UCSRC)
– UCSZ2 ... UCSZ0
– UPM1 e UPM0
– USBS
• Transmissão e recepção usam a mesma configuração
Elaborado por Gilson Yukio Sato
Tamanho do Caractere
Elaborado por Gilson Yukio Sato
RXCIE TXCIE UDRIE RXEN UCSRB TXEN UCSZ2 RXB8 TXB8
URSEL UMSEL UPM1 UPM0 UCSRC USBS UCSZ1 UCSZ0 UCPOL
UCSZ2
UCSZ1
UCSZ0
Tamanho do Caractere
0 0 0 5 bits
0 0 1 6 bits
0 1 0 7 bits
0 1 1 8 bits
1 0 0 Reservado
1 0 1 Reservado
1 1 0 Reservado
1 1 1 9 bits
Paridade
Elaborado por Gilson Yukio Sato
URSEL UMSEL UPM1 UPM0 UCSRC USBS UCSZ1 UCSZ0 UCPOL
UPM1 UPM0 Modo de funcionamento do bit de Paridade
0 0 Desabilitado
0 1 Reservado
1 0 Habilitado, paridade par
1 1 Habilitado, paridade impar
Stop Bits
Elaborado por Gilson Yukio Sato
URSEL UMSEL UPM1 UPM0 UCSRC USBS UCSZ1 UCSZ0 UCPOL
Bit 3 Descrição
USBS Stop Bit Select: - Se USBS=0 então usa-se um Stop Bit - Se USBS=1 então usa-se dois Stop Bit
Inicialização da USART
• Inicialização necessária
– Baud rate
– Formato do frame
– Habilitação da transmissão/recepção
– Habilitação da interrupção (se for usada)
Elaborado por Gilson Yukio Sato
Transmissão
• Habilitação da transmissão
– A USART deve estar inicializada
– Setar o TXEN do UCSRB habilita a transmissão
– O pino TxD é a saída de dados
– No modo síncrono XCK opera como pino de clock da comunicação
Elaborado por Gilson Yukio Sato
Habilitação da Transmissão
Elaborado por Gilson Yukio Sato
Bit 3 Descrição
TXEN Transmitter Enable: - Se TXEN=0 então o transmissor está desabilitado - Se TXEN=1 então o transmissor está habilitado
RXCIE TXCIE UDRIE RXEN UCSRB TXEN UCSZ2 RXB8 TXB8
Transmissão
• Flags
– Flag UDRE: USART Data Register Empty
– Flag TXC: Transmission Complete
– Ambos podem ser usados para gerar interrupção
Elaborado por Gilson Yukio Sato
Flags
Elaborado por Gilson Yukio Sato
RXC TXC UDRE FE UCSRA DOR PE U2X MPCM
Bit 5 Descrição
UDRE
USART Data Register Empty: - Quando o HW faz UDRE=1 então o buffer de transmissão está pronto para receber um novo dado - Quando o HW faz UDRE=0 então o buffer de transmissão tem dados que ainda não estão no shift register
Bit 6 Descrição
TXC
Transmission Complete: - Quando o HW faz TXC=1 então o buffer de transmissão está vazio e o dado do shift register foi transmitido - O HW faz TXC=0 quando a interrupção é atendida ou quando SW faz TXC=0
Transmissão
• Interrupção
– Habilitação no bit UDRIE (UCSRB): USART Data Register Empty Interrupt
– Habilitação no bit TXCIE (UCSRB): Transmission Complete Interrupt
– Ambos precisam que o I(SREG) esteja setado (Interrupções habilitadas)
Elaborado por Gilson Yukio Sato
Interrupções
Elaborado por Gilson Yukio Sato
Bit 5 Descrição
UDRIE USART Data Register Empty Interrupt: - Se I(SREG)=1 e UDRIE=1 a interrupção está habilitada - Se o UDRE for para 1, então ocorre a interrupção
Bit 6 Descrição
TXCIE Transmission Complete Interrupt: - Se I(SREG)=1 e TXCIE=1 a interrupção está habilitada - Se o TXC for para 1, então ocorre a interrupção
RXCIE TXCIE UDRIE RXEN UCSRB TXEN UCSZ2 RXB8 TXB8
Recepção
• Habilitação da recepção
– A USART deve estar inicializada
– Setar o RXEN do UCSRB habilita a Recepção
– O pino RxD é a entrada de dados
– No modo síncrono XCK opera como pino de clock da comunicação
Elaborado por Gilson Yukio Sato
Habilitação da Recepção
Elaborado por Gilson Yukio Sato
Bit 4 Descrição
RXEN Receiver Enable: - Se RXEN=0 então o receptor está desabilitado - Se RXEN=1 então o receptor está habilitado
RXCIE TXCIE UDRIE RXEN UCSRB TXEN UCSZ2 RXB8 TXB8
Recepção
• Flags
– Flag RXC: Reception Complete
– Flag FE: Frame Error
– Flag DOR: Data OverRun
– Flag PE: Parity Error
• O flag RXC pode ser usado para gerar interrupção, os demais não
Elaborado por Gilson Yukio Sato
Flags
Elaborado por Gilson Yukio Sato
RXC TXC UDRE FE UCSRA DOR PE U2X MPCM
Bit 7 Descrição
RXC
Reception Complete: - Quando o HW faz RXC=1 então o buffer de recepção tem um dado a ser lido - Se o RXC=0 então o buffer de recepção está vazio
Recepção
• Interrupção
– Habilitação no bit RXCIE (UCSRB): Reception Complete Interrupt
– Precisa que o I(SREG) esteja setado (Interrupções habilitadas)
Elaborado por Gilson Yukio Sato
Interrupções
Elaborado por Gilson Yukio Sato
Bit 7 Descrição
TXCIE Reception Complete Interrupt: - Se I(SREG)=1 e RXCIE=1 a interrupção está habilitada - Se o RXC for para 1, então ocorre a interrupção
RXCIE TXCIE UDRIE RXEN UCSRB TXEN UCSZ2 RXB8 TXB8
Flags
Elaborado por Gilson Yukio Sato
RXC TXC UDRE FE UCSRA DOR PE U2X MPCM
Descrição
FE Frame Error: - O HW faz FE=1 porque houve um problema no stop bit
DOR
Data OverRun: - O HW faz DOR=1 quando tanto o buffer quanto o shift register de entrada estão com dados não lido e chega um novo start bit
FE Parity Error: - O HW faz PE=1 porque houve ocorreu um erro de paridade
Frames de 5 a 8 bits
• Transmissão
– Início = SW escreve no UDR
– Quando Shift Register pronto: UDR Shift Register
– Shift Register pino TxD
Elaborado por Gilson Yukio Sato
Frames de 5 a 8 bits
• Recepção
– Início = start bit no pino RxD
– Dados via RxD Shift Register até o primeiro stop bit
– Shift Register UDR
Elaborado por Gilson Yukio Sato
Frames de 9 bits
• Transmissão
– 9° bit bit TXB8 (UCSRB)
– Início = SW escreve no UDR
– Quando Shift Register pronto: UDR Shift Register
– Shift Register pino TxD
Elaborado por Gilson Yukio Sato
Frames de 9 bits
• Recepção
– Início = start bit no pino RxD
– Dados Shift Register até o primeiro stop bit
– 9° bit bit RXB8 (UCSRB)
– Shift Register UDR
Elaborado por Gilson Yukio Sato
Nono Bit
Elaborado por Gilson Yukio Sato
Descrição
RXB8 Receive Data Bit 8: - Nono bit do caractere recebido pela USART - Deve ser lido antes do UDR
TXB8 Transmit Data Bit 8: - Nono bit do caractere a ser transmitido pela USART - Deve ser escrito antes do UDR
RXCIE TXCIE UDRIE RXEN UCSRB TXEN UCSZ2 RXB8 TXB8
Sobre o material
• Essas transparências foram baseadas no manual do ATmega8 da Atmel e no site da Atmel
Elaborado por Gilson Yukio Sato