//Bibliotecas:
#define __AVR_ATmega2560__
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <stdint.h>
#include <util/delay.h>
/*Leia o texto da referência (1) e os slides sobre a USART02 da referência (2). Quais são
os valores dos registradores UBBR0, UCSR0A, UCSR0B, e UCSR0C, para que o periférico
USART0 somente receba quadros no formato 8N1 com a taxa de transmissão de 2400Bd.
Considere a frequência de relógio do microcontrolador igual a 4 MHz.*/
//---------------------------------------------------------------------------------------------
/*
BaudRate = Fcpu/(8x(UBBR0+1)) PARA U2X0 = 1
BaudRate = 2400 Bd
Fcpu = 4 Mhz
UBBR0 = Registrador a ser calculado
UBBR0 = 4 Mhz/(8x2400) - 1
UBBR0= 207
A taxa de tranmisssão será de 2403,85 erro de 0,16%
*/
// Página 220 para as informações de USART0_configura
void USART0_configura(void)
{
UBRR0 = 207;
UCSR0A = 0x02; // RXC0=0, TXC0=0, UDRE0=0, FE0=0, DOR0=0, UPE0=0, U2X0=1 e MPCM0 = 0
UCSR0B = 0x10; // RXCIE0=0, TXCIE0=0, UDRIE0=0, RXEN0=1, TXEN0=0, UCSZ0[2]=0, RXB80=0 e TXB80=0
UCSR0C = 0x06; //UMSEL0[1:0]=00, UPM0[1:0]=00, USBS0=0, UCSZ0[1:0]=11 e UCPOL0=0
}
/*
Escolhemos para o problema U2X0=1 e UBRR0=207.
(c) Transmitimos 8 bits de dados no quadro: UCSZ0[2:0]=011.
(d) Não será transmitido o bit de paridade: UPM0[1:0]=00.
(e) Geramos um bit de parada: USBS0=0.
(f) Habilitamos somente a recepção de quadros: TXEN0=0 e RXEN0=1.
*/
int main(void)
{
//---------------------------------------------------------------------------------------------
// Definição das Variáveis - Definir nome e tipo das variáveis
//---------------------------------------------------------------------------------------------
//Configuração do sistema - Definir as entradas, saídas e pull-up a nível de registradores
//DDRx: 1-Out, 0-In PORTx: 1-High , 0-Low "Escrever" PINx: "Leitura"
//---------------------------------------------------------------------------------------------
//Configuração inicial das Variáveis
//---------------------------------------------------------------------------------------------
while (1) // Laço infinito que será executado
{
}
return 0;
}