---
tags: ele-21
---
# Relatório da Aula 3 - Laboratório de EEA-27 2020
Alunos:
- Lucas Barioni Toma
- Michel Marcos Sena Farias
Consulte o manual do ATMEGA2560 (disponibilizado na pasta Referências), nas
seções USART (pag. 200 a 226) e TimerConter1 (pag.133 a 163).
- 1. Configure os registradores abaixo para que a USART1 opere com 8 bits de dados, 1 stop bit, sem paridade, transmissor e receptor ligados, modo assíncrono, baud rate de 9600bps (fosc=16MHz), sem interrupção. Preencha os valores dos registradores, em hexadecimal, abaixo:

```c
UCSR1A = 0x00;
UCSR1B = 0x18; // 1<<RXEN1 | 1<<TXEN1
UCSR1C = 0x06; // 1<<UCSZ11 | 1<<UCSZ10
UBRRH1 = 0x00; // UBRR = 103 & 0xFF00
UBRRL1 = 0x67; // UBRR = 103 & 0x00FF
```
- 2. Apresente a configuração dos registradores do Timer/Counter 1 operando no modo CTC com TOP=OCR1A, produzindo uma interrupção a cada 1 milisegundo. Utilizar prescaler = 1, ou seja, a base de tempo do T/C1 será de 16MHz (fosc). Sendo assim, para gerar 1ms, o contador TCNT1 precisa ser incrementado "0,001(1/16000000)" vezes, ou seja, 16000, que deve ser o valor do registrador de comparação OCR1A.

Preencha os valores dos registradores, em hexadecimal, abaixo:
```c
TCCR1A = 0x00;
TCCR1B = 0x09; // 1<<WGM12 | 1<<CS10
TCCR1C = 0x00;
OCR1A = 0x3E80;
```
- 3. No registrador `TIMSK1` foi setado o bit `OCIE1A`. Descreva o efeito que esse bit causa na execução do programa.
Quando o bit `OCIE1A` é setado para 1 e as interrupções estão globalmente habilitadas, a interrupção `TIMER1 COMPA` é habilitada, fazendo com que o fluxo do programa seja desviado para a rotina de serviço de interrupção cujo vetor é `TIMER1_COMPA_vect` (18, program address 0x0022).
- 4. Apresente abaixo o código para o interrupt driver ou rotina de serviço de interrupção (ISR - Interrupt Service Routine).
```c
ISR(TIMER1_COMPA_vect) {
if (contador < 5000) {
contador++;
} else {
printflag = 1;
contador = 0;
}
return(0);
}
```