#include <avr/io.h>
#include <avr/interrupt.h>
#include "C++.h"
#include "UART.h"
namespace UART
{
Buffer* rxBuffer;//Puntatore al buffer software di ricezione del UART
Buffer* txBuffer;//Puntatore al buffer software di Trasmissione del UART
}
void UART::Init(uint16_t ubrr)
{
UCSR0B = (1<<RXEN0) | (1<<TXEN0); //Abilito il pin di ricezione e il pin di trasmissione
UCSR0C = (1<<UCSZ01) | (1<<UCSZ00);//Imposto a 8 la lunghezza in bit di un carattere
UBRR0H = ubrr >> 8;
UBRR0L = ubrr;
UART::rxBuffer = new Buffer(UARTRxBufferSize);//Creo una nuova istanza di Buffer per il buffer di ricezione
UART::txBuffer = new Buffer(UARTTxBufferSize);//Creo una nuova istanza di Buffer per il buffer di trasmissione
UART::RxInterruptEnabled();//Abilito l'interrupt per la ricezione di un byte
UART::TxInterruptEnabled();//Abilito l'interrupt per la conclusione di invio di un byte
}