This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
et:examples:communication:usb [2015/02/19 15:42] – raivo.sell | et:examples:communication:usb [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ~~PB~~ | + | < |
====== USB ====== | ====== USB ====== | ||
+ | //Vajalikud teadmised: | ||
+ | [HW] [[et: | ||
+ | [LIB] [[et: | ||
+ | [LIB] [[et: | ||
+ | |||
+ | ===== Teooria ===== | ||
+ | |||
+ | ===== Praktika ===== | ||
+ | Kodulabori III generatsiooni kontrolleritel on USB ühendus otse mikrokontrolleriga, | ||
+ | |||
+ | Näiteprogrammi testimiseks on vaja mõnda terminal tüüpi tarkvara, nt HyperTerminal (Windows XP). Linux operatsiooniga arvutitel võib kasutada programmi minicom. Aknas sisestatud tähed kuvatakse LCD ekraanil. Klahvi Enter vajutus muudab rida LCD ekraanil. Sümboli '?' | ||
+ | |||
+ | <code c> | ||
+ | // Kodulabori USB liidese näidisprogramm | ||
+ | // Arvutist või mõnest teisest seadmest saadetud tekst kuvatakse LCD ekraanil | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | // Põhiprogramm | ||
+ | int main(void) | ||
+ | { | ||
+ | char c; | ||
+ | unsigned char row = 1; | ||
+ | char buf[20]; | ||
+ | |||
+ | // LCD ekraani seadistamine ja tervitusteksti kuvamine | ||
+ | lcd_gfx_init(); | ||
+ | lcd_gfx_write_string(" | ||
+ | lcd_gfx_goto_char_xy(0, | ||
+ | |||
+ | // Käivita ADC | ||
+ | adc_init(ADC_REF_AVCC, | ||
+ | |||
+ | // USB liidese seadistamine | ||
+ | usb_init(); | ||
+ | |||
+ | // Lõputu tsükkel | ||
+ | while (1) | ||
+ | { | ||
+ | // Loe USB liidesest märk ja kontrolli, kas oli märk olemas | ||
+ | c = usb_read_byte(); | ||
+ | if (c >= 0) | ||
+ | { | ||
+ | // Saada märk USB liideseesse tagasi | ||
+ | usb_send_char(c); | ||
+ | if (c == ' | ||
+ | { | ||
+ | // Rea vahetamine | ||
+ | if (row < 12) row++; | ||
+ | else row = 0; | ||
+ | // Rea tühjendamine eelmisest teatest | ||
+ | lcd_gfx_clear_line(row); | ||
+ | // Kursor uue rea algusesse | ||
+ | lcd_gfx_goto_char_xy(0, | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | // Märgi otse ekraanile väljastamine | ||
+ | lcd_gfx_write_char(c); | ||
+ | } | ||
+ | // Kui saadeti küsimärk, siis tagasta ka ADC lugem. | ||
+ | if(c == '?' | ||
+ | { | ||
+ | sprintf(buf," | ||
+ | usb_send_string(buf); | ||
+ | } | ||
+ | } | ||
+ | usb_task(); | ||
+ | } | ||
+ | } | ||
+ | </ |