====== RS-232 Linuxis ====== Näide Ubuntu baasil Eeldused: minicom terminali emulaator Kui programm puudub, siis tuleks see paigaldada käsuga: //sudo apt-get install minicom// Ühendada mikrokontroller mõne USB-COM konverteriga ja kontrollida, kas see süsteemi poolt ka leiti: //dmesg | grep tty// tulemuseks võiks olla midagi sellist: [ 0.000000] console [tty0] enabled [ 3823.820524] usb 5-1: pl2303 converter now attached to ttyUSB0 [ 3937.382589] usb 5-2: FTDI USB Serial Device converter now attached to ttyUSB1 [ 4152.680434] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0 [ 4159.873377] ftdi_sio ttyUSB1: FTDI USB Serial Device converter now disconnected from ttyUSB1 [ 4164.285887] usb 5-2: FTDI USB Serial Device converter now attached to ttyUSB0 [ 4215.343098] usb 5-1: pl2303 converter now attached to ttyUSB1 [ 4633.056395] pl2303 ttyUSB1: pl2303 converter now disconnected from ttyUSB1 [ 4659.016240] usb 5-1: pl2303 converter now attached to ttyUSB1 Siit tuleks teha kindlaks milline port on omistatud USB konverterile. Kui näitekood on mikrokontrollerisse laetud tuleks avada minicom programm (soovitavalt root õigustes): //sudo minicom -s// {{:examples:communication:minicom_welcome.png?550|}} Esmalt tuleks konfigureerida ühendus: Pordi määramiseks vajutada klahvile A, määrata ühendus, näiteks ///dev/ttyUSB1// ja pordi parameetrid Bps/Par/Bits, näiteks: //115200 8N1// Väljumiseks vajutada ESC klahvi. {{:examples:communication:minicom_port_conf.png?550|}} Peale valikut //Exit// initsialiseerib minicom pordi ühenduse. Mikrokontroller tuleb ühendada arvuti USB konverteriga kasutades rist kaablit (tuntud ka kui 0-modem kaabel). Allolev programm kirjutab igale uart porti saadetud sümbolile vastuseks tervitusteksti ja inverteerib plaadil oleva LED-i. {{:examples:communication:minicom_action.png?550|}} Kui on soov näha ka oma klhvi vajutusi tuleks aktiveerida kohalik kaja: //CTRL+A E// #include #include #include usart port = USART(0); //COM connector pin led = PIN(B, 7); //red LED on controller board int main (void) { char c; pin_setup_output(led); //set led as output usart_init_async(port, //USART setup USART_DATABITS_8, USART_STOPBITS_ONE, USART_PARITY_NONE, USART_BAUDRATE_ASYNC(115200)); while (1) //infinite loop { //if char is sent to controller, read it into c if (usart_try_read_char(port, &c)) { //invert LED pin_toggle(led); // Write some greetings usart_send_string(port, "Tere volts!\r\n"); } } }