/* * UART.c * * Created: 25/11/2021 16:26:10 * Author: n0x */ #include "UART.h" #define SIZE_BUFFER 500 struct CircularBuffer{ volatile char data[SIZE_BUFFER]; volatile uint16_t Readpointer; volatile uint16_t Writepointer; }; struct CircularBuffer TxBuffer; struct CircularBuffer RxBuffer; volatile uint8_t TxActive; void uart_init(void) { UBRR0 = 103; /* set BAUD rate to 9600 */ UCSR0C |= (0<=SIZE_BUFFER){ TxBuffer.Writepointer = 0; } } else { TxActive = 1; UDR0 = c; } UCSR0B |= (1<= SIZE_BUFFER){ TxBuffer.Readpointer = 0; } } else { TxActive = 0; } } /* ------------------------ */ /* Receiving Data */ /* ------------------------ */ uint8_t uart_data_available(void) { uint8_t dataAvailabel = 0; UCSR0B &= ~(1<= SIZE_BUFFER){ RxBuffer.Readpointer = 0; } } UCSR0B |= (1<>FE0))) == 0){ RxBuffer.data[RxBuffer.Writepointer++] = data; if(RxBuffer.Writepointer >= SIZE_BUFFER) { RxBuffer.Writepointer = 0; } } }