Skip to content

Push Buttons

Push button을 다음과 같이 Processor의 input pin에 연결하는 방식은
가장 간단한 형태로 입력을 구현한 것이라고 할 수 있다.

button

  • R : Pull-up Register로 button이 눌러지지 않은 경우 high가 나오도록 pull-up을 시켜주는 resistor임.
    pull-down 도 있으나 pull-up이 noise 등에 보다 robust하기 때문에 주로 사용됨. floating 상태를 방지.
  • IRQ : Interrupt ReQuest 의 약자.
    위의 그림에서 switch가 눌려지면 0IRQ로 들어가며, bubble이 나타내듯이 0이 들어오면 processor는 해당 pin에 할당된 interrupt가 발생하고, 이에 대한 Interrupt Service Routine (ISR)이 수행된다.

Interrupt ReQuest (IRQ)

Processor의 특정 pin들은 IRQ로 동작하는데 이 경우,

  • 해당 pin에 activation signal이 들어오면
  • processor에게 interrupt 요청이 발생한다.
  • 중요한 event등의 발생여부를 확인하는 가장 기본적인 방법 이나
  • IRQ의 수가 제한 되어 있기 때문에 확장성을 제한하는 부분이기도 하다.

IRQ의 activation 방식은 크게 2가지인데,

  • Level sensitive 인 경우보다
  • Edge Triggered 인 경우가 보다 많다.

컴퓨터나 Processor에게 어떤 일을 해야한다고 알려주는게 interrupt 이며, 컴퓨터에선 주변기기들과 연결시 해당 주변기기에 IRQ를 하나씩 할당 해주는 방식으로 동작한다. 여러 주변기기가 추가될 때 IRQ 충돌이 날 수 있기 때문에 최근의 주변기기 interface들은 IRQ 공유기능 등을 통해 IRQ 충돌 등을 방지하고 있다.

Interrupt는 매우 중요한 개념이다. Embedding system 분야 외에서도 병렬처리 등에서도 요구되는 개념이므로 정의를 꼭 기억해둬야 한다.
Processor등이 어떤 동작을 수행하고 있는지에 상관없이 중요한 event가 발생할 경우, core (or processor)가 해당 event에 대한 처리를 해야 한다면, interrupt를 이용하여 처리하게 된다.
즉, event가 발생하면 interrupt가 발생하여 processor에게 event가 발생함을 알려준다. Processor는 interrupt요청을 받고나서, 해당하는 ISR에게 제어를 넘겨 event에 대한 처리를 수행하도록 한다.

OS나 Microprocessor에서 배울 때 주의를 기울여서 잘 이해하도록 해야한다.


Bouncing

push button의 기계적 요소로 인해 누르는 동작에서 0,1 신호가 매우 짧은 시간에 왔다갔다하는 현상을 가르킨다.

이를 방지해주는 button을 bouncing-free button 이라고도 하는데 조금 고가임. 일반 push button을 이용하고 S/W적으로 처리하는 경우도 많다 (S/W는 쉽게 구현가능하고 무엇보다 싸다).

bouncing

  • switch가 눌릴 경우, interrupt handler에서 일정시간 이후에 다시 switch의 상태를 확인하는 방식으로 제거 가능함. (time설정이 어려움)
  • Finite Impulse Response Filter (신호처리등에 나오는 개념)를 사용하여 제거한다. 쉽게 생각하면 일종의 low pass filter를 이용 하여 짧은 시간에서의 변화는 무시하고 긴 시간 동안 유지되는 변화만을 감지하는 것임. averaging등을 이용하여 구현가능하다.