====== USB ====== //Vajalikud teadmised: [HW] [[et:hardware:homelab:controller]], [LIB] [[et:software:homelab:library:usb]], \\ [LIB] [[et:software:homelab:library:module:lcd_graphic]]// ===== Teooria ===== ===== Praktika ===== Kodulabori III generatsiooni kontrolleritel on USB ühendus otse mikrokontrolleriga, mis võimaldab otseühendust mikrokontrolleri ja arvuti vahel. 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 '?' peale tagastatakse ADC lugemi väärtus. // 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("Ootan teadet"); lcd_gfx_goto_char_xy(0, row); // Käivita ADC adc_init(ADC_REF_AVCC,ADC_PRESCALE_128); // 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 == '\r') // Kas tegu on reavahetuse märgiga? { // 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,row); } 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,"\n\r ADC val: %4d. \n\r",adc_get_average_value(15,5)); usb_send_string(buf); } } usb_task(); } }