Compare commits

...

1 Commits
dev ... uart

Author SHA1 Message Date
Kirill Kurshakow
fad04330de added clear_buffer 2024-02-27 14:01:42 +03:00
3 changed files with 4 additions and 2 deletions

View File

@ -3,7 +3,7 @@
#include "circular_buf.h" #include "circular_buf.h"
void initialize_buffer(struct circular_buffer* cb) { void clear_buffer(struct circular_buffer* cb) {
cb->buf_head = 0; cb->buf_head = 0;
cb->buf_tail = 0; cb->buf_tail = 0;
} }

View File

@ -9,7 +9,7 @@ struct circular_buffer{
unsigned char buf_tail; unsigned char buf_tail;
}; };
void initialize_buffer(struct circular_buffer* cb); void clear_buffer(struct circular_buffer* cb);
int buffer_empty(const struct circular_buffer* cb); int buffer_empty(const struct circular_buffer* cb);
int buffer_full(const struct circular_buffer* cb); int buffer_full(const struct circular_buffer* cb);
void write_buffer(struct circular_buffer* cb, int value); void write_buffer(struct circular_buffer* cb, int value);

View File

@ -24,6 +24,7 @@ void UART_send(uint8_t* data, size_t length) {
} }
} }
UCSR0B |= (1 << TXCIE0); // включаем прерывание по завершении передачи UCSR0B |= (1 << TXCIE0); // включаем прерывание по завершении передачи
clear_buffer(&uartTxBuffer);
} }
// Получение данных из буфера // Получение данных из буфера
@ -41,6 +42,7 @@ int UART_receive(uint8_t* data, size_t length) {
if (byteCount > length) { if (byteCount > length) {
overflow = 1; overflow = 1;
} }
clear_buffer(&uartRxBuffer);
return overflow ? -1 : byteCount; // Возвращает количество успешно принятых байт или -1 в случае переполнения return overflow ? -1 : byteCount; // Возвращает количество успешно принятых байт или -1 в случае переполнения
} }