This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| et:examples:communication:rs232 [2010/02/08 14:18] – Links to et:software:library:module:lcd_alphanumeric changed to et:software:homelab:library:module:lcd_alphanumeric mikk.leini | et:examples:communication:rs232 [2020/07/20 12:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== RS-232 ====== | ||
| + | //Vajalikud teadmised: [HW] [[et: | ||
| + | |||
| + | ===== Teooria ===== | ||
| + | |||
| + | [{{ : | ||
| + | |||
| + | RS-232 on füüsilise andmesideliidese standard, mida kasutatakse binaarandmete edastamiseks. Standard on kasutusel peamiselt arvutite jadaportides, | ||
| + | |||
| + | RS-232 liidest kasutatakse peamiselt koos UART nime kandva riistvaralise andmesidemooduliga, | ||
| + | |||
| + | UART on lahtitõlgituna " | ||
| + | |||
| + | [{{ : | ||
| + | |||
| + | Andmete edastamine toimub UART liideses kaadri (inglise keeles //frame//) kaupa, milles on andmebitte olenevalt seadistusest 5 kuni 9. Enamlevinud andmehulk on siiski 8 bitti, ehk 1 bait. Peale andmebittide edastatakse kaadriga ka lisabitte, mille abil toimub andmete saabumise ja lõppemise hetke äratundmine vastuvõtja poolel. Esimest neist nimetatakse startbitiks, | ||
| + | |||
| + | Peale kaadri struktuuri on veel üks tähtis parameeter - see on boodikiirus (inglise keeles //baud rate//), millega määratakse edastatavate sümbolite arv ühes sekundis. Bood näitab nimelt sümbolite arvu. UART puhul on 1 bood aga 1 bitt ja seepärast kaadri juures bittidest saigi räägitud. Põhimõtteliselt võib andmete edastamiseks kasutada ükskõik millist boodikiirust, | ||
| + | |||
| + | Lisainformatsioonina võiks teada, et RS-232 standard sisaldab peale andmesignaalide (RX, TX) veel andmevoo-kontrolli viike DTR, DCD, DSR, RI, RTS ja CTS, mida kasutatakse seadmetevahelise suhtluse juhtimiseks. Näiteks võib seade nende kaudu teada anda, kas ta on valmis andmeid vastu võtma või mitte. Kuna RS-232 liidese originaaleesmärk oli ühendada arvuteid modemiga, siis mõned signaalid on (pigem olid) kasutusel telefoniliini seisundi näitamiseks. | ||
| + | |||
| + | ===== Praktika ===== | ||
| + | |||
| + | Kodulabori Kontrollermooduli plaadil on RS-232 isa-tüüpi pesa. Selle kaudu saab kontrolleri arvutiga või teise kontrolleriga ühendada. Arvutiga ühendamiseks tuleb kasutada tavalist pööramata kaablit, mille üks pistik on ema-tüüpi, | ||
| + | |||
| + | <code c> | ||
| + | // | ||
| + | // Kodulabori Kontrollerimooduli arvutiga RS-232 kaudu liidestamine. | ||
| + | // Näide kasutab Digitaalset sisend-väljundmoodulit koos LCD ekraaniga. | ||
| + | // Arvuti terminalis sisestatud tekst kuvatakse LCD-l. | ||
| + | // | ||
| + | #include < | ||
| + | #include < | ||
| + | |||
| + | // | ||
| + | // USART liidese määramine | ||
| + | // | ||
| + | usart port = USART(0); | ||
| + | |||
| + | // | ||
| + | // Põhiprogramm | ||
| + | // | ||
| + | int main(void) | ||
| + | { | ||
| + | char c; | ||
| + | unsigned char row = 1; | ||
| + | |||
| + | // USART liidese seadistamine | ||
| + | usart_init_async(port, | ||
| + | USART_DATABITS_8, | ||
| + | USART_STOPBITS_ONE, | ||
| + | USART_PARITY_NONE, | ||
| + | USART_BAUDRATE_ASYNC(9600)); | ||
| + | |||
| + | // LCD ekraani seadistamine | ||
| + | lcd_gfx_init(); | ||
| + | |||
| + | // Ekraanil tervituse ütlemine | ||
| + | lcd_gfx_write_string(" | ||
| + | |||
| + | // Kursori teise rea algusesse viimine | ||
| + | lcd_gfx_goto_char_xy(0, | ||
| + | |||
| + | // Arvutile tere ütlemine | ||
| + | usart_send_string(port, | ||
| + | |||
| + | // Lõputu tsükkel | ||
| + | while (true) | ||
| + | { | ||
| + | // Jadaliidesest märgi lugemine | ||
| + | if (usart_try_read_char(port, | ||
| + | { | ||
| + | // Kas tegu on reavahetuse märgiga? | ||
| + | if (c == ' | ||
| + | { | ||
| + | // Rea vahetamine | ||
| + | row = 1 - row; | ||
| + | |||
| + | // Rea tühjendamine eelmisest teatest | ||
| + | lcd_gfx_clear_line(row); | ||
| + | } | ||
| + | else | ||
| + | { | ||
| + | // Märgi otse ekraanile väljastamine | ||
| + | lcd_gfx_write_char(c); | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | [[et: | ||
| + | |||
| + | [{{ : | ||
| + | |||
| + | Windows XP operatsioonisüsteemiga on kaasas programm HyperTerminal. See avaneb //Start// menüüst // | ||