직 / 병렬통신 1. 병렬전송 2. 직렬전송 3. RS-232 통신 4. RS-422 통신 5. RS-485 통신 직 / 병렬통신 1 전송방식 직 / 병렬통신 2 1
병렬전송 병렬전송 한번에 1 개의비트가아닌 n 개의그룹의비트를전송 n 비트를전송하기위해 n 개의전선을사용 장점 직렬전송에비해 n 배만큼전송속도가증가 단점 가격이비싸다 짧은거리만가능 직 / 병렬통신 3 병렬전송 병렬전송 주로 CPU 와주변장치연결시사용 대량의정보를한클럭 (Clock) 에전송함으로써처리능력향상 CPU 의정보처리량을증가시키는것으로, 데이터비트수로써나타남 32bit : DSP, ARM 16bit : 89c196 8bit : 8051, AVR 통신거리의제한성 구현상기술적인어려움과비용이너무고가 단거리전송에주로사용 직 / 병렬통신 4 2
병렬전송 병렬전송의종류 LPT (Line Print Terminal) 프린터나기타다른장치에접속하기위한 PC의병렬포트를지칭하는통상적인호칭 대부분의 PC들은하나또는두개의 LPT 접속을가지고있으므로, 각각을 LPT1과 LPT2 사용자는자신의컴퓨터에병렬포트어댑터를장착함으로써, 두번째프린터나기타다른장치용병렬포트추가가능 병렬접속에는전통적으로프린터통신을위한센트로닉스인터페이스사용 프린터포트 (LPT1) 는 3개의주소 ( 어드레스 ) 로구성 데이터출력포트, 상태포트, 제어포트.» LPT1의경우데이터출력포트주소는 378h» 상태포트주소는 379h 프린터에러및종이유무및기타작동상태등을나타냄» 제어포트주소는 37Ah 직 / 병렬통신 5 병렬전송 Data Address (378H) 프린터포트의 pin2 ~ pin9 어드레스 378H 의 bit0 ~ bit7 Status Address (379H) 프린터포트의 pin10 ~ pin13, pin15 어드레스 379H 의 bit3 ~ bit7 Control Address (37AH) 프린터포트의 pin1 ~ pin14, pin16, pin17 어드레스 37AH 의 bit0 ~ bit3 직 / 병렬통신 6 3
병렬전송 병렬전송의종류 GPIB (General Purpose Interface Bus) 컴퓨터와주변기기를연결하여정보를전달하기위한외부버스의일종 범용인터페이스버스 원래는휴렛패커드 (HP-현 Agilent) 사가개발하여 HPIB 미국전기전자학회 (IEEE) 가 1975년경에 IEEE 488로표준화된것을기본으로하여국제전기표준회의 (IEC) 가 IEC 625로표준화 GPIB는컴퓨터와각종전자계측기기, 센서, 자동시험기기등생산자동화관련기기를연결하여정보를교환하거나컴퓨터로부터계측기기등을제어하기위한외부버스의사실상의업계표준또는국제표준 일반적인 PC에서는많이사용되지않음 GPIB 인터페이스를사용하기위해서는별도의 GPIB Board 를사용해야하며가장많이사용하는 GPIB Board는 National Instrument 사와 Agilent사에서만든 Board 임 직 / 병렬통신 7 직렬전송 직렬전송 한개의비트단위로외부기기와통신하므로, 통신하는두장치간하나의데이터채널만필요 병렬 / 직렬컨버터와직렬 / 병렬컨버터필요 장점 하나의통신채널만가지므로병렬전송에비해 1/n 만큼의비용절감 장치내통신은병렬로구성 송신자와전선사이 ( 병렬 - 직렬 ) 및전선과수신자 ( 직렬 - 병렬 ) 사이의인터페이스에서변환장치가필요 시리얼버스 : TXD,RXD,GND 3 라인 직 / 병렬통신 8 4
직렬전송 컴퓨터가외부와의통신을할때주로사용 데이터비트를 1 개의비트단위로외부와송수신하는방식 구현하기가쉽고, 장거리송수신가능 기존의통신선로 ( 전화선등 ) 를쉽게활용가능하여비용절감가능 직렬통신의대표적인것으로모뎀, LAN, RS232 및 X.25 등 비동기식또는동기식으로구성 직 / 병렬통신 9 직렬전송 비동기식구성 신호의타이밍을중요시하지않음 정보교환은합의된패턴으로수신및변환 보통 8 비트인각그룹은링크를따라한단위로전송 송신시스템과는무관하게언제든지링크에중계가능 총 8 개의데이터비트와 2 개의추가비트로구성 보통 0 인시작비트를바이트시작부분에추가 바이트끝에끝을알리는보통 1 로구성되는정지비트추가 start-stop 전송방식 패러티 (Parity) 비트가더추가될수도있음 문자위주의전송에주로사용 수신장치는각각의수신바이트마다재동기화 바이트와다음바이트사이에간격존재 수신자는시작비트를수신후, 수신되는비트수를세면서 n 비트를수신후, 정지비트를찾고그후모든펄스를무시 5 ~ 8bit 로단순하고, 저렴 직 / 병렬통신 10 5
직렬전송 비동기식구성 직 / 병렬통신 11 직렬전송 패리티비트 직렬통신시송수신되는데이터의에러유무를알려주는비트 종류 짝수패리티 (Even Parity) 홀수패리티 (Odd Parity) Even Parity 데이터중에 1 의짝수개있는경우, 패리티비트는 0 데이터 0110 0011 에대한짝수패리티는 0 데이터 1101 0110 의경우패리티는 1 Odd Parity 데이터중에 1 의홀수개있는경우, 패리티비트는 0 데이터 0110 0011 에대한홀수패리티는 1 데이터 1101 0110 의경우패리티는 0 직 / 병렬통신 12 6
직렬전송 동기식구성 정해진동기화 clock 에의해 data 를전송하는방식 1 송신기와수신기에동일한 clock 을별도로제공 ( 종속동기 ) 2 데이터신호내클럭정보제공 ( 상호동기 ) 직 / 병렬통신 13 직렬전송 동기식구성 다수의바이트로구성 바이트와다음바이트사이의간격이없음 연속적으로데이터전송 0 과 1 로끊임없이수신된문자열을수신자는재구성 수신자는수신된바이트를 8 비트단위의그룹으로분리 장점 비동기식에비해고속 고속응용에유리 데이터링크계층에서이루어짐 직 / 병렬통신 14 7
직렬전송 동기식구성 data 블럭의시작과끝을결정하기위한프레임동기화가필요함 데이터 + 제어정보 = 프레임 (frame) 프레임의정확한형식 사용되는데이터링크제어프로시저에따라결정됨. 가변길이 동기프레임형식 직 / 병렬통신 15 직렬전송 동기식구성 상당히큰데이터블록인경우동기전송이비동기전송보다훨씬효율적 비동기전송 : 20% 이상의오버헤드가요구됨 동기전송 : 제어정보는대체적으로 100 비트보다작음 토폴로지 (Topology), 링크가반이중, 전이중에따라구분 토폴로지 한 link 에접속된 station 들의물리적배열 point-to-point link( 지점간링크 ) 1 각터미널에대하여 1 개 I/O PORT 2 각각전용선 1 개 point-to-multipoint link( 두개의지점 ) 1 1 개 I/O PORT 2 H/W 비용절감 3 1 개전용회선만 직 / 병렬통신 16 8
직렬전송 전이중및반이중 반이중 (half duplex) 점대점링크상의두스테이션중하나만이그시간에전송가능 두스테이션이전송을교대로행함 교대 2 방향 (two-way alternate) 전이중 (full duplex) 두스테이션이서로동시에데이터를주고받을수있다. 동시 2 방향 (two-simultaneous) 유도 (guided) 전송을요구하는디지털신호법 전이중방식 : 두개의별도전송회선을필요로함. 2 트위스트페어 반이중방식 : 한개의회선이면가능 직 / 병렬통신 17 직렬전송의종류 직렬전송 직 / 병렬통신 18 9
직렬전송 Signaling Mode 데이터전송시전압 / 신호형태 싱글엔디드 (single-ended) n+1 개의선이필요 N 개는신호선이고 1 개의그라운드선을공통으로사용» RS-232, PS/2 마우스와키보드커넥터 디퍼런티얼 (Differential ) 2n 개의선이필요 n 개의신호선과 n 개의그라운드선사용 낮은전압을사용함으로써전력소모를크게줄이고, 고속전송및장거리전송가능» RS-422, RS-485, USB Fully-Differential Inputs 노이즈를최대로줄이려고할때사용 각각의 Ext(+) Ext(-) 선에 feedback 을걸어줌으로써전원에대한노이즈감소가능 직 / 병렬통신 19 RS-232 보장사용거리 : 약 15m RS-232C 규격은미국의 EIA(Electronic Industries Association) 에의해규격화된것 정확하게는 EIA-RS232C 규격 RS-232C에서 232는전기공업협회에서 232번째제정한규정한것 ( RS-232C : Recommended Standard 232 Revision C ) RS-232C는 DTE와 DCE간을연결하는직렬 single-ended 신호규격과커넥터사양에대한규정 전기적 / 기계적특성과인터페이스회로의기능등을정의 RS-232C는컴퓨터가모뎀과같은다른직렬장치들과데이터를주고받기위해사용하는인터페이스 현재가장보편적으로사용하는버전이 "C" 직 / 병렬통신 20 10
RS-232 RS-232C 는 2 개의송. 수신신호선 (TXD/RXD) 과 6 개의제어선 ( CTS/RTS, DTR/DSR, DCD, RI ) 그리고 1 개의접지선이필요 2 개의송수신신호선과 1 개의접지선만있어도가능 직 / 병렬통신 21 RS-232 신호선설명 TXD Transmit Data 비동기식직렬통신장치가외부장치로정보를보낼때직렬통신데이터가출력되는신호선 RXD Receive Data 외부장치로부터전송되는직렬통신데이터를수신하는신호선 RTS Ready To Send 컴퓨터와같은 DTE 장치가모뎀또는프린터와같은 DCE 장치에게데이터를받을준비가되었는지의여부를나타내는신호선. CTS Clear To Send 모뎀또는프린터와같은 DCE 장치가컴퓨터와같은 DTE 장치에게데이터를받을준비가됐음을나타내는신호선 직 / 병렬통신 22 11
RS-232 신호선설명 DTR Data Terminal Ready 컴퓨터또는터미널이모뎀에게자신이송수신가능한상태임을알리는신호선 일반적으로컴퓨터등이전원인가후통신포트를초기화한후이신호를출력 DSR Data Set Ready 모뎀이컴퓨터또는터미널에게자신이송수신가능한상태임을알려주는신호선 일반적으로모뎀에전원인가후모뎀이자신의상태를파악한후이상이없을때이신호를출력 직 / 병렬통신 23 RS-232 신호선설명 DCD Data Carrier Detect 모뎀이상대편모뎀과전화선등을통해서접속이완료되었을때상대편모뎀이캐리어신호를보내오는데이신호의검출여부를컴퓨터또는터미널에알려주는신호선 RI Ring Indicator 상대편모뎀이통신을하기위해서먼저전화를걸어오면전화벨이울리게된다. 이때이신호를모뎀이인식하여컴퓨터또는터미널에알려주는신호선 일반적으로컴퓨터가이신호를받게되면전화벨신호에응답하는프로그램을인터럽트등을통해서호출 직 / 병렬통신 24 12
RS-232 신호선설명 용도이름약어기능 신호발생원 DTE DCE 공통 GND Ground GND 데이터전달용 H/W 기반흐름제어용 Transmitted Data TxD DTE 에서 DCE 로의송신데이터 Received Data RxD DTE 가 DCE 로부터받는수신데이터 Request To Send RTS DTE 가 DCE 에게전송할데이터가있으니수신준비를요청함 Clear To Send CTS DCE 가 DTE 에게수신가능함을응답함 동작상태점검용 Data Terminal Ready Data Set Ready DTR DSR DTE 가 DCE 에게동작준비완료되었음을보고함 DCE 가 DTE 에게동작준비완료되었음을보고함 연결및통신상태표시용 Ring Indicator Carrier Detect RI CD DCE 가 DTE 에게원격에있는상대방으로부터전화연결요청이왔음을보고함 상대방 DCE 와모뎀기능이작동함을 DTE 에게보고함 직 / 병렬통신 25 RS-232 직 / 병렬통신 26 13
RS-232 RS232 핸드셰이킹 (Handshaking) 비동기자료전송방식의하나로서자료전송시송신측과수신측에서자료송신과자료수신의제어신호를사용하여서로의동작을확인하면서자료를전송하는방식 하드웨어흐름제어 (Hardware Flow Control) 직 / 병렬통신 27 RS-232 RS232 핸드셰이킹 (Handshaking) 소프트웨어흐름제어 (Software Flow Control) 프로그램에서데이터를체크하여흐름제어하는방식 사용자가지정한특수문자를사용하여전송을중지및재개 Xoff 문자전송으로상대방데이터전송을중지 Xon 문자전송으로상대방데이터전송재개 직 / 병렬통신 28 14
USART USART (Universal Synchronous and Asynchronous Serial Receiver and Transmitter) 동기식, 비동기식직렬통신장치 동기식통신 고속전송이가능하지만동기를맞추기위한하드웨어가필요하고제어가비동기식에비해어려움 SPI, TWI(I2C) 비동기식통신 RS-232 통신방식사용 보통 UART ( 비동기식통신 ) 라고함 보레이트 ( 통신속도 ) 결정 UBRR =25; ATmega128 에는 2 개의시리얼통신 (USART0 과 USART1) 이존재 USART0 과 1 은서로다른입출력 (I/O) 레지스터를갖고있음 직 / 병렬통신 29 9 핀사양및 AVR 과의연결 시리얼통신인터페이스 1 6 AVR 직 / 병렬통신 30 15
시리얼통신인터페이스 UART 에서나오는신호는보통 TTL 신호레벨을갖기때문에노이즈에약하고통신거리에제약이있음. 이러한 TTL 신호를입력받아노이즈에강하고장거리송수신이가능하도록해주는인터페이스 IC 를 LINE DRIVER/RECEIVER 라부르며이중대표적인것이 MAX232, MAX485, MAX489 등이있다. 직 / 병렬통신 31 MAX232 Dual Drivers/Receivers 시리얼통신인터페이스 직 / 병렬통신 32 16
MAX232 내부회로 시리얼통신인터페이스 직 / 병렬통신 33 AVR 과의시리얼통신인터페이스 RS232 직 / 병렬통신 34 17
관련레지스터 USART 입출력데이터레지스터 - UDR UDR 레지스터는송신데이터버퍼레지스터 (TXB) 와수신데이터버퍼레지스터 (RXB) 가 UDR 이라는하나의 I/O 주소를공유 송신데이터처리 UDR 레지스터에데이터를쓰고 (write) 수신데이터처리 UDR 레지스터에서데이터를읽는다 리턴 (return) 직 / 병렬통신 35 관련레지스터 USART 제어및상태레지스터 A - UCSRA RXC : 수신완료 데이터가수신되어 UDR 레지스터로전달될때, 이비트는 1 로셋 이비트를체크해서데이터가수신되었지검출 TXC : 송신완료 데이터의내용이모두전달되어, UDR 레지스터가비어있을때 1 로셋 UDRE : 데이터처리레지스터가비어있음 새로운문자를받을준비가되어있음을표시 초기상태값이 1 로되어있음 U2X0 전송속도를 2 배로 직 / 병렬통신 36 18
관련레지스터 USART 제어및상태레지스터 B - UCSRB 송신을가능하게하려면 UCSR0B 레지스터의비트 3 (TXEN0) 이 1 수신을가능하게하려면 UCSR0B 레지스터의비트 4 (RXEN0) 이 1 송신인터럽트를가능하게하려면 TXCIE0 이 1 수신인터럽트를가능하게하려면 RXCIE0 이 1 UCSRB = 0x18; // RXEN0, TXEN0 enable UCSRB = 0xD8 ; // TXCIE0, RXCIE0, RXEN0, TXEN0 enable UCSRB = (1<<RXCIE) (1<<TXCIE) (1<<RXEN) (1<<TXEN); 직 / 병렬통신 37 관련레지스터 USART 제어및상태레지스터 C - UCSRC 비동기식과동기식결정 외부기기와의인터페이스를위한패러티, 데이터비트, 스탑비트설정 UCSRC = 0x06; // no parity, 1 stop bit, 8 bit data 비트 6 - UMSELn (USART Mode SELect) 비트 동기식통신과비동기식통신모드결정 비동기식 0 동기식 1 직 / 병렬통신 38 19
관련레지스터 UCSRC = 0x06; // no parity, 1 stop bit, 8 bit data 비트 5:4 - UPMn1:0 (USART Parity Mode) 비트 패리티발생유형과 ( 짝수, 홀수 ) 체크가능 UPMn1 UPMn0 패리티모드 0 0 no parity 0 1 Reserved 1 0 짝수패리티방식사용 1 1 홀수패리티방식사용 USBSn 스톱비트 0 1 비트 1 2 비트 비트 3 - USBSn (USART Stop Bit Select) 비트 송신데이터에삽입되는스톱비트의수선택 직 / 병렬통신 39 관련레지스터 비트 2:1 UCSZn1:0 (USART Character SiZe) 비트 이비트는 UCSRB 레지스터에있는 UCSZ2 와결합해서 (3 비트로 ) 데이터길이 ( 캐릭터사이즈 ) 를결정 UCSR0C = 0x06; // no parity, 1 stop bit, 8 bit data 직 / 병렬통신 40 20
관련레지스터 USART 보레이트레지스터 - UBRRnL, UBRRnH 12 비트로보레이트를결정 값으로입력 UBRRH = 0x00; UBRRL = 25; // Baud Rate - 9600@ 4 MHz // UBRR0L=0x19; 직 / 병렬통신 41 보레이트값 직 / 병렬통신 42 21
시리얼통신 (USART) 으로문자를보내고받기 #include <tiny2313.h> void uart_init(void) { UCSRB = 0x18; // RXEN, TXEN enable( 0001 1000 ), 송수신허용 UBRRL = 25; // Buad Rate - 9600 @ 4 MHz void main(void) { char rx; uart_init( ); while(1) // 키보드로입력 ( 수신 ) 된데이터를터미널에출력 ( 송신 ) { if(ucsrb.7) { // 수신된데이터가있는지검사 rx = getchar( ) ; // 수신된데이터저장 putchar(rx) ; // 수신된데이터다시송신 직 / 병렬통신 43 시리얼통신 (USART) 으로문자를보내고받기 코드비젼에는시리얼통신용터미널이내장되어있다 1) Settings 메뉴의 Terminal 을클릭 2) 보레이트를 9600 으로설정 3) Tools 메뉴의 Terminal 를클릭 직 / 병렬통신 44 22
시리얼통신 (USART) 으로문자를보내고받기 #include <mega8535.h> void putch(char data) { while(!(ucsra & 0x20)); // UCSRA 레지스터의 UDRE 레지스터가 1 이면 // 즉, 버퍼가비어있어송신가능하면 UDR = data; // 데이터송신 ( 라이트 ) char getch(void) { while(!(ucsra & 0x80)); // UCSRA 레지스터의 RXC 레지스터가 1 이면 // 즉, 읽지않은데이터가수신버퍼에있으면 return UDR; // 데이터수신 void uart_init(void) { UCSRB = 0x18; // RXEN0, TXEN0 enable( 0001 1000 ), 송수신허용 UBRRL = 25; // Buad Rate - 9600 @ 4 MHz 직 / 병렬통신 45 시리얼통신 (USART) 으로문자를보내고받기 void main(void) { char rx; uart_init( ); putch('a'); while(1) // 키보드로입력 ( 수신 ) 된데이터를터미널에출력 ( 송신 ) { rx = getch( ); putch(rx); 터미널창이열리면서 'A' 라고찍히고키보드를누르면터미널창에표시키보드로입력한값이 AVR 키트로보내졌다가다시터미널창으로보내져서표시된것 직 / 병렬통신 46 23
RS-422 RS422 는 EIA 에의해서전기적인사양이규정되어있으나물리적인코넥터및핀번호에대한사양은규정되어있지않음 RS422 에서는 Point To Point 모드와 Multi-Drop 모드존재 코넥터사양 직 / 병렬통신 47 RS-422 신호선에대한설명 RS422 신호선은 RS232 와거의동일 물리적으로하나의신호선에두개의라인이필요 신호선이름뒤에 + 와 - 로써구분표기 RS232 의 TXD 신호선이 RS422 에서는 (TXD+ 와 TXD-), RXD 가 (RXD+, RXD-) 신호선으로나누어짐 직 / 병렬통신 48 24
RS-422 결선도 Point To Point 모드 RS232 의한신호선당 2 개의라인이필요한것만빼고사용하는방법은동일 GND 는연결하지않아도됨 + 신호선은 + 신호선과 신호선은 신호선과연결 직 / 병렬통신 49 RS-422 결선도 Multi-Drop 모드 Multi-Drop 모드가사용되는시스템은하나의마스터에여러개의슬레이브가연결 마스터가어떤슬레이브와통신을할것인지를결정 해당슬레이브를호출하면호출된슬레이브가응답 하나의마스터에최대 10개까지의슬레이브연결가능 마스터는 Point To Point 모드로설정되어있어도상관이없으나슬레이브는반드시 Multi-Drop 모드로설정 직 / 병렬통신 50 25
RS-422 결선도 Multi-Drop 모드 슬레이브가 TXD 신호라인을통해정보를출력시킬때공통 TXD 라인을통해접속 n 개의슬레이브중선택된슬레이브하나만이신호출력 하나의슬레이브가계속 TXD 신호라인을공통 TXD 라인에접속시키면마스터에의해서호출된다른슬레이브가정보를출력시켰을때계속접속된슬레이브때문에공통 TXD 라인에전기적인충돌발생 직 / 병렬통신 51 RS-422 직 / 병렬통신 52 26
RS-422 RS-422 Multi-Drop 모드 TXD 신호선과공통 TXD 라인에 TXD 신호선을접속또는차단시켜주는폐신호사이에 S/W 또는 H/W 에의한적절한타이밍조절이필요 TXD 인에이블신호를사용하여제어 먼저슬레이브가마스터로데이터를출력하기전 ( 슬레이브측의 UART TXD 신호선 ) 먼저개폐신호출력 슬레이브측의 RS422 개폐신호에서 Logic "1" 이면접속 Logic "0" 이면차단 직 / 병렬통신 53 RS-422 S/W 에서먼저 RS422 개폐신호를접속상태로출력시키고난후 TXD 라인에데이터를출력시키며 TXD 라인에마지막데이터의스톱비트까지출력되고난것을확인후개폐신호를차단상태로출력 RS422 개폐신호가단락상태일때슬레이브측의 TXD+ 와 TXD- 출력단이플로팅 (Hi-Z) 상태 직 / 병렬통신 54 27
AVR 과의시리얼통신인터페이스 Full-Duplex RS-422 통신 MAX489 이용 직 / 병렬통신 55 종단처리방법 도선의끝에저항을붙임으로네트워크상에서신호를흡수함으로써다시반향되지않도록함 반사파없이깨끗한원신호로전달가능하게함 네트워그양끝단에풀업 / 풀다운저항을붙임 이런저항을테미네이터라함 직 / 병렬통신 56 28
AVR 과의시리얼통신인터페이스 SN75176 또는 MAX485 2 개이용 TXD RXD 송신모드 : DE 1 /RE 0 수신모드 : DE 0 /RE 1 직 / 병렬통신 57 RS-422 시리얼통신 (USART) 예 #include <tiny2313.h> void uart_init(void) { UCSRB = 0x18; // RXEN0, TXEN0 enable( 0001 1000 ), 송수신허용 UBRRL = 25; // Buad Rate - 9600 @ 4 MHz void main(void) { char rx; uart_init( ); while(1) // 키보드로입력 ( 수신 ) 된데이터를터미널에출력 ( 송신 ) { if(ucsrb.7) { rx = gerchar( ); // 수신된데이터저장 putchar(rx); // 수신된터미널에출력 RS-422 통신은 RS-232와회로만조금다를뿐거의똑같음직 / 병렬통신 58 29
RS-485 RS485 는 EIA 에의해서전기적인사양이규정되어있으나물리적인코넥터및핀에대한사양은규정되어있지않음다음내용은시스템베이스에서규정하여사용하는사양 RS485 인경우 RS232 나 RS422 처럼 Full Duplex 가아닌 Half Duplex 전송방식만지원 RS422 의 Multi-Drop 모드의슬레이브처럼 RS485 의모든마스터는 TXD 와 RXD 신호선을멀티포인트버스에접속또는차단시켜제어 멀티포인트버스 모든마스터가공유하는신호선 하나의버스에여러개의마스터가연결 Echo 모드와 Non Echo 모드 직 / 병렬통신 59 RS485 코넥터사양 RS-485 RS485 에서는 TRXD+, TRXD- 2 선만사용 2 선의통신선로를통해송신또는수신 동시에송수신불가능 직 / 병렬통신 60 30
RS-485 신호선에대한설명 신호선은 RS232 와거의동일 물리적으로하나의신호선에두개의라인이필요 신호선명뒤에 + 와 - 로써구분표기 UART 의 TXD, RXD 신호선이멀티포인트버스에의하여공동으로사용 하나의마스터는멀티포인트버스를출력이면출력, 입력이면입력으로구분하여사용 Half Duplex 결선도 직 / 병렬통신 61 RS-485 직 / 병렬통신 62 31
RS-485 RS485 Echo, Non Echo 모드에대한설명 멀티포인트버스를사용하는시스템은하나의버스에여러개의마스터가연결되어사용 하나의마스터가다른마스터와통신할경우에는반드시출력을개폐 RS422의 Multi-Drop 모드와동일 동시에여러개의마스터가출력하여데이터가충돌하는현상을방지하기위해 S/W적으로해결 충돌여부를확인하는방법중하나가자기가보낸정보를자기가받아보아충돌여부를확인 RS485 Echo 모드 어떤마스터가멀티포인트버스에예를들어 "ABC" 라는데이터를보내면이것이자동적으로되돌아오므로 (Echo) 이것을읽어와 ABC 여부를확인하여동일한정보가아니거나들어온데이터의수가틀리면충돌한것으로보고적절한시간의지연을거쳐다시출력시켜정확한값이되돌아올때까지되풀이 이때마스터의 RXD 신호선은항상멀티포인트버스에접속되어있어자신의데이터뿐만아니라다른마스터가보내는데이터수신가능직 / 병렬통신 63 RS-485 RS485 Echo, Non Echo 모드에대한설명 RS485 Echo 모드는마스터의 RXD 신호선은항상멀티포인터버스에접속 TXD 신호선은데이터를출력할때만멀티포인터버스에접속하고나머지는반드시차단 RS485 Echo 모드에서자기가보낸데이터가자기자신에게되돌아오는기능을없앤것이 RS485 Non Echo 모드 RS485 Non Echo 모드는 TXD 신호선을멀티포인트버스에접속시키면, 그즉시 RXD 신호선이멀티포인트버스에서차단 TXD 신호선을멀티포인트버스에서차단시키면그즉시 RXD 신호선이멀티포인트버스에접속 Half Duplex RS485 개폐신호는 RTS 나 DTR 신호중하나를사용 직 / 병렬통신 64 32
AVR 과의시리얼통신인터페이스 MAX485 RS485/RS422 에사용 RO RXD DI TXD 마스터 슬레이브 PD0 PD2 PD1 송신모드 : DE 1 /RE 0 수신모드 : DE 0 /RE 1 직 / 병렬통신 65 AVR 과의시리얼통신인터페이스 Half-Duplex RS-485 통신구성 MAX485 이용 직 / 병렬통신 66 33
AVR 과의시리얼통신인터페이스 SN75176 이용 MULTIPOINT-LVDS LINE DRIVER AND RECEIVER 직 / 병렬통신 67 마스터송신 RS-485 시리얼통신 (USART) 예 #include <tiny2313.h> #define RE_DE PORTD.2 void uart_init(void) { UCSRB = 0x18; // RXEN0, TXEN0 enable( 0001 1000 ), 송수신허용 UBRRL = 25; // Buad Rate - 9600 @ 4 MHz void main(void) { DDRD = (1<<2); // 송수신모드설정위해 PD.2 를출력으로설정 RE_DE = 1; // 송신모드 char rx; uart_init( ); 하이퍼터미널로데이터가송수신되므로, PD0 와 PD1 은무의미 직 / 병렬통신 68 34
RS-485 시리얼통신 (USART) 예 while(1) // 키보드로입력 ( 수신 ) 된데이터를터미널에출력 ( 송신 ) { if(ucsrb.7) { rx = gerchar( ); / 키보드로입력된데이터저장 putchar(rx); // 데이터터미널에출력및송신 직 / 병렬통신 69 슬레이브수신 RS-485 시리얼통신 (USART) 예 #include <tiny2313.h> #define RE_DE PORTD.2 void uart_init(void) { UCSRB = 0x18; // RXEN0, TXEN0 enable( 0001 1000 ), 송수신허용 UBRRL = 25; // Buad Rate - 9600 @ 4 MHz void main(void) { DDRD = (1<<2); // 송수신모드설정위해 PD.2 를출력으로설정 RE_DE = 0; // 수신모드 char rx; uart_init( ); 직 / 병렬통신 70 35
RS-485 시리얼통신 (USART) 예 while(1) // 키보드로입력 ( 수신 ) 된데이터를터미널에출력 ( 송신 ) { if(ucsrb.7) { rx = gerchar( ); // 수신된데이터저장 putchar(rx); // 수신된터미널에출력 직 / 병렬통신 71 36