Jadaliides
Tegu on AVR universaalse jadaliidese kasutamise teegiga. Võimaldab asünkroonset andmete kirjutamist ja lugemist.
Andmetüübid
usart
USART liidese registrite hoidmise andmetüüp. usart-tüüpi muutuja on konstantne ja see tuleb väärtustada kohe programmi alguses. Väärtustamise lihtsustamiseks on makrofunktsioon USART, mille parameetriks on liidese indeks (0 või 1).
usart_databits
Andmebittide arvu valiku tüüp. Väärtuste variandid:
USART_DATABITS_5 - Andmebitte 5.
USART_DATABITS_6 - Andmebitte 6.
USART_DATABITS_7 - Andmebitte 7.
USART_DATABITS_8 - Andmebitte 8.
USART_DATABITS_9 - Andmebitte 9.
usart_stopbits
Stoppbittide arvu valiku tüüp. Väärtuste variandid:
usart_parity
Paarsuskontrolli valiku tüüp. Väärtuste variandid:
USART_PARITY_NONE - Paarsuskontrolli ja -bitti ei kasutata.
USART_PARITY_EVEN - Ühtede paarisarvulisuse kontroll.
USART_PARITY_ODD - Ühtede paarituarvulisuse kontroll.
Funktsioonid
Makrofunktsiooni USART mooduli asünkroonse režiimi boodikiiruse registri väärtuse arvutamiseks. Parameetrid:
void usart_init_async(usart port, usart_databits data_bits, usart_stopbits stop_bits, usart_parity parity, usart_baudrate baudrate)
Jadaliidese asünkroonseks seadistamine. Parameetrid:
port - USART liidese muutuja.
data_bits - Andmebittide arv.
stop_bits - Stoppbittide arv.
parity - Paarsuse tüüp.
baudrate - Boodi kiirus, mis on arvutatud USART_BAUDRATE_ASYNC makro funktsiooniga.
Blokeeruv sümboli saatmise funktsioon. Funktsioon ootab, kuni saatmise puhver tühjeneb ja kirjutab sinna saatmiseks uue sümboli. Parameetrid:
Blokeeruv teksti saatmise funktsioon. Parameetrid:
Sisendpuhvris andmete olemasolu kontroll. Parameetrid:
Sisendpuhvrist sümboli lugemine. Enne lugemist peab veenduma, et puhvris on sümbol. Parameetrid:
Sisendpuhvri sümboli olemasolu kontroll ja selle lugemise ühisfunktsioon. Parameetrid:
port - USART liidese muutuja.
symbol - Viit sümbolile. Kui sisendpuhvris on sümbol, siis see kirjutatakse siia.
Tagastab true, kui sisendpuhvris oli sümbol ja false kui mitte.
Näide
Jadaliidese seadmistamine töötab asünkroonselt 8 andmebiti, ühe stoppbiti ja ilma paarsuse kontrollita boodikiirusel 9600. Programm saadab teksti ja loeb sissetuleva sümboli.
#include <homelab/usart.h>
usart port = USART(0);
int main(void)
{
char c;
// Jadaliidese seadistamine
usart_init_async(port, USART_DATABITS_8, USART_STOPBITS_ONE,
USART_PARITY_NONE, USART_BAUDRATE_ASYNC(9600));
// Teksti saatmine
usart_send_string(port, "Tere!\r\n");
// Sissetuleva sümboli ootamine
while (!usart_has_data(port)) {}
// Sümboli lugemine
c = usart_read_char(port);
}