제한된 Port 활용하기.¶
일반적으로 processor의 I/O pin (or port)는 그 수가 제한 되어있기 때문에,
multiplexing이 사실상 필수이다.
MUX는 n개의 입력과 1개의 출력을 가짐.
다음은 secrete life of programs: Understand Computers 의 6장에 있는 그림으로
제한된 Processor의 port에서 다양한 I/O 장치를 multiplexing한 개략도 임.

4개의 Flexible Numeric Display (FND or 7-Segment Display)에서 \(4 \times 9\) 개의 Pins에
12개의 Buttons에 해당하는 12개의 Pins가 필요한 상황인데,
실제로는
- 8bit의
Port A와 - 4bit의
Port B, 그리고 - 3bit의
Port C만으로
처리한 구조를 간단하게 보여준다.
간략히 보면,
Port A는 모든FND에 공유되어 연결되어 있으면서Port B를 통해 특정FND를 선택해서 output을 보내는 구조이다.- 그리고
Port B는FND를 선택 (low인 경우 선택)하는 동시에,- 12개의
버튼을 4개 그룹으로 나누어 같이 선택하고 있다.
추가적으로,
FND에는Port A가 연결되어 있고(Processor 관점에서output),- Button에는 3개의 입력핀으로 구성된
Port C가 연결(Processor 관점에서input)된다.
앞서 살펴본 것처럼
- 4개의
FND가Port A를 시간으로 분할하여 공유하는 것처럼, - 4그룹의 버튼들도
Port C를 시간을 분할하여 공유하는 방식이다.
사실 위의 예는 매우 간단한 구조에 속한다.
보다 많은 I/O 소자들을 Multiplexing하는 경우,
MUX,DEMUX,Parallel2Serial Converter등의 소자들이 이용되기도 한다.
하나의 pin을 이용하여 serial communication을 이용하여 여러 bit의 정보를 보내는 소자를 활용하는 경우도 많다.
Serial communication과 Parallel communication의 차이에 대한 개념을 꼭 이해하고, 이들을 활용하자.
Tinkercad Example¶
다음 Tinkercad 예제에서는 Arduino UNO의 Port D와 Port A 일부를 활용하여 2개의 FND, 6개의 Button을 아까 살펴본 방식으로 연결하고 있다.
다시 한번 말하지만, embedding system을 다룰 경우, 이같이 제한된 port에 여러 소자를 연결하는 응용사례는 매우 일반적이다.