오후 1:02 00-01-28
조경민 bro@shinbiro.com

8255, RS232 , IO 포트 , 시리얼 포트 제어 정리
--------------------------------------------------------------------

I/O 포트
컴퓨터에 붙는 주변장치( 프린터, 모뎀, 등등)의  Input Output을 하는 통로
IO포트에는
직렬 포트 ( Serial Port )가 있으며 병렬포트 (Palleral )가 있다

직렬 포트 - 8개의 비트가 하나씩 송수신된다. 느리며, 전송길이가 짧다.(케이블선)
병렬 포트 - 8개의 비트가 한번에 송수신 된다. 빠르며, 전송길이가 길다.

시리얼 포트는 9핀과 24핀짜리가 있는데 9핀은 1~9번 핀을 사용하며 24핀은
   2~9번 핀을 사용한다. 나머지는 n/c 노캐리어로 사용 안하고 방치한다.
결국 같은 것이다.

  IO 포트 제어에는 어떤 다른 옵션적인 일을 하는것 없이 원초적으로 입력과
출력 함수만 제공된다.
_oup, _inp 을 쓴다.


8255 이란?
-------------------------------------------------------------------
IBM Intel 칩의 이름으로 이 칩이다.

다음 표는 8255에서 쓸수있는 포트 어드레스와 설명이다. 보아야할것은
포트 주소 3F8이 COM1 이라는 것이다.

TABLE 2: EXPANSION SLOT ADDRESSES
ADDRESS (HEX/DEC) DESCRIPTION     ADDRESS (HEX/DEC) DESCRIPTION
218-21F (536-543) AVAILABLE       390-39F (906-927) AVAILABLE
250-277 (592-631) AVAILABLE       3AA-3AF (938-943) AVAILABLE
280-2EF (640-751) AVAILABLE       3B0-3BF (944-959) AVAILABLE
300-31F (768-799) AVAILABLE       3F8-3FF           COM 1

포트 어드레스 값
----------------------------------------------------------------
port address
3F8h = COM1
2F8h = COM2
3E8h = COM3
2E8h = COM4

   For the standard PC ports, the UART registers are based at 3F8h
      (COM1), 2F8h (COM2), 3E8h (COM3), and 2E8h (COM4).  COM1 and COM3
      share interrupt request line IRQ4 while COM2 and COM4 share request
      line IRQ3. This means that COM1 and COM3 can't be used concurrently.
      Similarly for COM2 and COM4.


VC의 경우

short _stdcall Out8255( int PortAddress, int PortData )
{
  short Dummy;
  // Need Dummy since _outp officially returns int
  // short is a 16-bit integer in Win32 C++
  // whereas int is 32-bit integer Win32 C++
  // use (short) to force returning 16-bit integer
  // back to VB
  Dummy = (short)(_outp( PortAddress, PortData ));

  return(Dummy);

}; // end of Out8255


통신 방식상 ( RS232, RS485 이란 )
-----------------------------------------------------------------------
RS232는 편리하나 전송 길이가 3M 이내로 제한이 있다.
따라서 긴 케이블이 필요한 경우에는 485통신(1.5km까지)을 해야 한다.
아파트의 경우에는 485 통신으로 각 가정의 컴퓨터의 케이블을 연결하되,
컴퓨터 포트 접지 할때는 RS232로 컨버터를 붙여서 쓴다.

RS485 통신 - Half-Duplex 반이중 통신
RS232 통신 - 전이중 통신


가볼만한 사이트
-----------------------------------------------------------------
IO 직접 제어관련 사이트
http://www.lvr.com/parport.htm#Programming

IO 제어 Win9x/WinNT용 라이브러리
ftp://ftp.keithley.com/pub/metrabyte/unsupport/

제어에 관한 프로그래밍 튜토리얼
http://www.boondog.com/


8핀의 정보
------------------------------------------------------------------
pin 정보 ( 9핀짜리라면 각 핀에 있는 선의 기능 )

1 CD ( Carier Dectect ) 데이타 채널 수신 캐리어 검출

2 TD ( Transmit Data ) 송신 보내기 = TX

3 RD ( Receive Data ) 수신 받기 = RX

4 DTR( Data Terminal Ready ) - 터미날 장치 준비

5 SG ( Signal Group ) - 신호용 접지 = GRD

6 DSR ( Data Set Ready ) - 수신 준비 완료

7 RTS ( Request To Send ) - 송신 요구

8 CTS ( Clear To Send ) - 송신 가능

9 RI ( Ring Indicator ) - 피 호출 표시

1,2,6,8,9  [in]방향
3,4,7 [out] 방향
5 접지( Ground )


흐름 제어
하드웨어 흐름제어 방식 ( RTS /DTS )를 쓴다.
소프트 웨어 흐름 제어 방식 ( XON/XOFF)를 쓴다.


도스에서는 포트를 직접 어드레싱을 할 수 있어서 그것으로 포트에
값을 넣고, 쓰고 했으나 Win에서는 윈도우 운영체제가 관장하게 된다.
따라서 아래의 포트로 도스처럼 직접 쓰고 싶을때에는 따로
http://www.lvr.com/parport.htm#Programming 에 가서 원하는 라이브러리
를 받아서 직접 포트 제어를 해서 쓸 수 있다.

+ Recent posts