--- 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: ![](https://i.imgur.com/pJWlgzE.png) ```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. ![](https://i.imgur.com/NBTQAJf.png) 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); } ```