Witam, chciałbym się z wami podzielić moją malutką biblioteką do obsługi UART.
Jest to pierwsze moje wystąpienie z kodem C na tym forum!
Założenia:
1.
Praca oparta o przerwania nadajnika i odbiornika.1. Ilość przesyłanych danych mała do kilkudziesięciu bajtów.
2. Praca na dwóch buforach Tx i Rx.
3. Transmisja oparta o znaki ASCII
W moim przykładzie obsługa sprowadza się do wykorzystania:
1. USART_UDRE_vect - przerwanie od pustego buforu nadajnika
2. USART_RXC_vect - przerwanie od odebranej danej przez UART.
3. Bufor Tx - bufor danych wysyłanych, wielkość buforu ustalana na stałe
4. Bufor Rx - bufor danych odbieranych, wielkość buforu ustalana na stałe
5. Flaga "Jest_dana_z_RX" - flaga ustawiana kiedy zostanie odebrana cała ramka, czyli jeśli zostanie odebrany znak "CR" (0x0D)
Dane wysyłane do uC muszą być zakończone znakiem "CR" (0x0D)
Dane wysyłane z uC muszą być zakończone zerem (0x00). - zero oznacza, że uC ma przestać wysyłać dane.
Flaga "Jest_dana_z_RX" wykorzystywana do obsługi odebranych danych, patrz przykład kod poniżej.Napisałem 4 funkcje obsługujące UART:
1. Inicjalizacja Uarta
2. Wysłanie pojedynczego znaku
3. Wysłanie danych z RAM
4. Wysłanie danych z ROM
Poniżej przedstawiam kod:
UART_ATMega.h
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
UART_ATMega.c
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
main.c
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Poniżej obrazek z terminala dla tego testowego programu.

Proszę o opinie, może jakieś ciekawe podpowiedzi ? utrzymując założenie, że obsługa ma być stosunkowo prosta i na przerwaniach

.
Pozdrawiam