× Aktuálně z oboru

Vychází Game Ready ovladače pro Far Cry 5 [ clanek/2018040603-vychazi-game-ready-ovladace-pro-far-cry-5/ ]
Celá zprávička [ clanek/2018040603-vychazi-game-ready-ovladace-pro-far-cry-5/ ]

Komunikace po RS232

[ http://programujte.com/profil/90-ondrej-karas/ ]Google [ ?rel=author ]       [ http://programujte.com/profil/20356-michal-zima/ ]Google [ ?rel=author ]       9. 11. 2006       55 852×

Tento díl je určen zejména začátečníkům, kteří s komunikací po sériové lince teprve začínají. Věnuje se nejen suché teorii, ale také praktické stránce problému, a přináží řešení hardware s převodníkem MAX232.

V čem je problém a na co je třeba MAX232?

V sekci download na webu http://k-programs.net [ http://k-programs.net/ ] je možné si stáhnou specifikaci RS232, kterou se stavy na sériové lince řídí, ale pro nezasvěcené tyto informace raději zopakuji.

Klidový stav je u Rozhraní RS232 reprezentován logickou 1, v tomto případě reprezentovanou záporným napětím. Log. 0 je naproti tomu reprezentována napětím kladným. V případě vysílače může napětí dosahovat min. −15 a max. +15 V, a to by obvody pracující s TTL úrovněmi spolehlivě zničilo.

Z tohoto důvodu je nutné použít obvod, který nám převede urovně z RS232 do úrovní TTL. Jedním z nich je i MAX232 (nebo např. ST232). Tento obvod je napájen 5 V a využívá nábojové pumpy pro tvorbu vyššího výstupního napětí.

Tento obvod vyrábí více výrobců, a tak není třeba zůstávat pouze u produktů firmy MAXIM. Např. SGH-THOMSON vyrábí ST232, který v závislosti na typu umožňuje využít menší hodnoty kondenzátorů, a tak i zmenšit i aplikaci, ve které je použit.

Vždy je nutné pečlivě si prostudovat dokumentaci k obvodům, které používáte. Přestože se výrobci snaží vyrábět pinově kompatibilní obvody, mnohdy se stává, že špatným nastudováním katalogového listu vzniknou zbytečné chyby.

Pokud to není nutné, nepoužívejte elektrolytických kondenzátorů, které mají na používané frekvenci poměrně vysoký sériový odpor, a zařízení se tak stává nespolehlivým. Doporučují se tantalové kondenzátory nebo keramické s hmotou X7R.

Kondenzátory umisťujte co nejblíže k vývodům obvodu.


Dobře, a teď k té praktické stránce

Tento díl má za úkol nejen plnit funkci vzdělávací, ale také čtenáři přinést námět, jak si vyrobit vlastní převodník s obvodem MAX232. Následující schéma ukazuje doporučené zapojení převodníku spolu se zdrojem.

Jak je dobře vidět, zapojení vychází z doporučeného zapojení výrobce. Funkci doplňují dvě diody pro indikaci stavu na linkách Rx, Tx. Tyto dvě diody doporučuji 2mA, aby neovlivňovaly funkci převodníku. Pakliže by bylo nutné z nějakého důvodu využít LED s větší spotřebou, je nutné pro ně přidat do zapojení spínací tranzistory. Například BC547, nebo obdobné.

Zapojení pak už jen doplňuje zdrojová část, jejíž funkci myslím nikomu nemusím vysvětlovat. Následují obrázky návrhu pložného spoje.

Dále je nutné si připravit konektor CANON9 a dostatečně dlouhý 3 žilový kabel, který na jednom konci připájíme k pinům 2, 3, 5 a na druhém k dutinkové liště se třemi pozicemi. Připomínám, že na konektoru je nutné mít pospojované piny 7, 8 a 1, 4, 6. Oživení přípravku je záležitostí jedné či dvou minut. Propojte TTL výstup s TTL vstupem, např. jumperem a ve vhodném terminálu odesílejte znaky. Pracuje-li přípravek, pak budete to samé přijímat. Indikaci přenosu obstarávají diody D2, D3.

V tuto chvíli máme postavený převodník RS232 ↔ TTL. Některá PC ale už Port s rozhrním RS232 nevlastní, a proto by se hodilo zapojení pro USB port. To si ukážeme příště spolu s ukázkovým programem pro AVR.

Pro nedočkavé přeci jen uvádím zdrojový kód:

;uart.asm
;
;test program for Duplex UART

     	.include        "m16def.inc"

     	ser             r16                    	;port B all outputs
     	out            	ddrb,r16
	ldi             r16,RAMEND         	;initialise stack pointer
	out             spl,r16
	sbi             ucr,txen                ;enable UART transmitter
	sbi             ucr,rxen                ;enable UART receiver
	ldi             r16,5000000/(9600*16)-1 ;set baud rate
	out             ubrr,r16


loop:
     	rcall           serin
	rcall           serout
	rjmp            loop                    ;do forever


;serial output routine - output byte in r16 to UART

serout:
	out             udr,r16         	;load UART data register
serout1:
	sbis            usr,udre        	;if UART data register empty bit is clear
	rjmp            serout1         	;       loop back
						;else return
	ret

;serial input routine - input byte from UART to r16

serin:
        sbis            usr,rxc     		;if UART Receive Complete bit is clear
        rjmp            serin       		;       loop back
        in              r16,udr     		;else get received byte in r16
        ret                         		;and return

Program pochází z tohoto zdroje: www.geocities.com/leon_heller/uart.html [ http://www.geocities.com/leon_heller/uart.html ]


Článek stažen z webu Programujte.com [ http://programujte.com/clanek/2006110301-komunikace-po-rs232/ ].