/*
 * USART0Custom.c
 *
 * Created: 26.10.2023 17:37:08
 *  Author: Katya
 */ 

#include "USART0Custom.h"

void USART_Init (uint16_t speed) {
	// Ст. и мл. скорость
	UBRR0H = 0;
	UBRR0L = (uint8_t)(speed);
	// Прерывания при приеме, вкл прием/передача
	UCSR0B =  (1 << RXEN0) | (1 << TXEN0);
	// 8 бит данных, 2 стоп-бита
	UCSR0C = (1<<USBS0) | (3<<UCSZ00);
}

void USART_Transmit (uint8_t data) {
	while (!(UCSR0A & (1<<UDRE0)));  // Ожидание конца передачи
	UDR0 = data;  // Начало передачи
}

uint8_t USART_Receive() {
	while (!(UCSR0A & (1 << RXC0)));  // Ожидание конца приема
	return UDR0;  // Принятые данные
}

uint8_t USART_DataAvailable() {
	// Пришел ли пакет в приемную шину
	return (UCSR0A & (1 << RXC0)) ? 1 : 0;
}