====== 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_STOPBITS_ONE// - Üks stoppbitt. * //USART_STOPBITS_TWO// - Kaks stoppbitti. * **//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 ===== * **//USART_BAUDRATE_ASYNC(baud)//** \\ Makrofunktsiooni USART mooduli asünkroonse režiimi boodikiiruse registri väärtuse arvutamiseks. Parameetrid: * //baud// - Boodikiirus. * Tagastab boodikiiruse registri väärtuse. * **//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. * **//void usart_send_char(usart port, char symbol)//** \\ Blokeeruv sümboli saatmise funktsioon. Funktsioon ootab, kuni saatmise puhver tühjeneb ja kirjutab sinna saatmiseks uue sümboli. Parameetrid: * //port// - USART liidese muutuja. * //symbol// - Saadetav sümbol. * **//void usart_send_string(usart port, char *text)//** \\ Blokeeruv teksti saatmise funktsioon. Parameetrid: * //port// - USART liidese muutuja. * //text// - Viit tekstile. Tekst peab lõppema binaarse 0 sümboliga. * **//bool usart_has_data(usart port)//** \\ Sisendpuhvris andmete olemasolu kontroll. Parameetrid: * //port// - USART liidese muutuja. * Tagastab //true//, kui sisendpuhvris on sümbol ja //false// kui mitte. * **//char usart_read_char(usart port)//** \\ Sisendpuhvrist sümboli lugemine. Enne lugemist peab veenduma, et puhvris on sümbol. Parameetrid: * //port// - USART liidese muutuja. * Tagastab sümboli. * **//bool usart_try_read_char(usart port, char *symbol)//** \\ 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 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); }