CS/Embedded System

I/O Devices - Polling & Pull-up resistor

WakaraNai 2021. 10. 13. 18:01
728x90
반응형

I/O Devices

하드웨어 구성요소들은 bus라고 불리는 상호 연결된 network를 통해서 메모리를 주고 받음

 

Memory-mapped I/O를 이용하여 I/O register를 memory address에 접근할 수 있도록 함

따라서 이 register들은 LOAD와 STORE 명령어만 할 수 있음

 

 

I/O Device Interface

  • 장치와 네트워크 사이 회로
  • 데이터 전송, 상태 교환, control information
  • data register, status register, control register가 LOAD, STORE 명령어로 접근
    • status register : 이전에 받은 명령을 다 처리하여 새 명령을 받을 수 있는지
    • control register : 화면 밝기 제어, 화면을 한 번에 지우기 등
  • Memory-mapped I/O로 이 register가 메모리의 어디에 위치했는 볼 수 있음
  • processor에서 scanf라는 명령어를 본다면
    • 1. Display로 가서 커서가 깜빡거리며 사용자 입력을 기다리는 것을 표시
      • display status에게 띄울 준비가 되었는지 물어봐야함
    • 2. processor의 control register는 keyboard의 status에게 지금 입력 받았는지 물어봄
  • keyboard control에서 
    • Caps lock, num lock, 하나의 키에 두 가지 기능이 포함된 키로 인하여 어떤 상태를 유지해야하는지
    • 사용자가 입력하는 값들이 즉각즉각 전송되는 것이 어렵기에 buffer를 이용하여 잠시 저장. 이러한 버퍼의 내용을 초기화해야하는 것도 keyboard control에 내장됨

 

 

 

Common Procedure for I/O

  • I/O 장치에는 READY 신호를 processor에게 보낼 방도가 필요
      • 키보드는 한 글자씩 읽을 준비가 되었다고
      • 화면은 한 글자씩 받아서 띄울 준비가 되었다고
  • READY 신호 ==  status register 속 status flag 
  • processor가 poll한 것

 


 

 

Polling I/O

polling :  정기적으로 (시간 간격마다)  CPU에 이벤트가 들어왔는지 확인

  • delay 없이 이벤트를 다루기 위해 충분히 종종 polling하기
while (1){
  if (Ready) {
      break
  }
}

 

 

무한루프로 volatile 변수를 계속 확인하면 CPU 낭비 (다른 일 못함)

  • Uses CPU inefficiently
  • 간단한 임베디드 시스템에서는 비교적 빨리 처리되어 크게 걱정할 필요 X
  • 키보드가 READY 상태가 되어야 다음 과정을 진행할 수 있도록 함

 

Polling Button Input

  • reset 버튼은 입력으로 쓸 수 없음. CPU reset만 가능
      • S1 버튼은 GPIO P1.1
      • S2 버튼은 GPIO P1.4
  • 버튼을 누르지 않았다면 unknown state(floating)
  • 버튼을 누르면 GND와 GPIO핀이 연결됨. 즉 LOW(0) 신호

 

Pull-up Resistor

사용하는 이유

  • floating 상태일 때 입력값이 HIGH인지 LOW인지 알 수 없는, 불확실한 상태가 발생하지 않도록 하기 위해 사용

 

사용 방법

  • known state로 만들기 위해서는 
    • 한 쪽 끝에는  pull-up resistor을 GPIO 핀에 연결하고 
    • 다른 쪽에는 HIGH voltage(5V, 3.3V)를 연결
  • pull-up 저항은 스위치와 함께 사용되어
  • 스위치가 동작하지 않으면 pull-up 저항에 의해 VCC로 흐르게 되어 
  • HIGH 값으로 읽음
  • 스위치가 동작하면 입력 핀이 GND로 흐르게 되어
  • LOW 값으로 읽음
  • pull up register는 VCC에 아주 강력한 저항을 두어서
  • VCC 쪽으로 역류하지 않도록 막음
  • 10k옴(10000)으로도 충분히 잘 동작함 

 

  • pull up & pull down이 MSP432P3111에 내장되어있다.

 

 

 

 

728x90
반응형