Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
et:examples:communication:usb [2015/02/19 15:42] raivo.sellet:examples:communication:usb [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
-~~PB~~+<pagebreak>
 ====== USB ====== ====== 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.
 +
 +<code c>
 +// Kodulabori USB liidese näidisprogramm
 +// Arvutist või mõnest teisest seadmest saadetud tekst kuvatakse LCD ekraanil
 +#include <homelab/module/lcd_gfx.h>
 +#include <homelab/usb/usb.h>
 +#include <homelab/adc.h>
 +
 +// 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();
 + }
 +}
 +</code>
et/examples/communication/usb.1424360554.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0