avr 에서는 아니 다양한 디지털 신호 처리 시스템을 공부하거나 실험 또는 작업을 항상 고민되는 것이 바로 high와 low의 기준이다.
(??? : high는 당연히 5v로 잡고 low는 0v아닌가??)
이론값은 그것이 당연하지만 현실에서는 안정적으로 5v가 들어간다면 좋겠지만 5v일때 도 있고, 4.8v 일때도 있고 다양하게 변화한다. 이렇게 전압값이 튀는 현상을 플로팅(floating)이라는 것이라고 부른다. 에 대한 원인은 전원 소스의 영향도 있을 수도 있고 ic에서 먹는 전류량이 온도에 따라 바뀌면서 생기는 노이즈나 손실때문일 수도 있다.
이를 위해서 각종 ic에서는 이러한걸 감안 해주듯이 margin-level이라는것을 정해둔다. 보통 0.7v정도잡혀있다. 하지만 이러한 방법으로 해결할 수 있는 방법도 있지만....
하지만 그럼에도 button과 같이 사람의 힘이 닿는곳에는 매우 불안정한 전기가 들어가기도 한다. 이는 마진 레벨을 뛰어넘는 양자화 오류를 보여준다.
보통적으로 0.7v의마진 레벨을 넘어가는 전압은 0 low를 잡도록 하지만
결국 이도 오류에 해당하는 부분이 된다.
그런 오류를 막기위해서 avr같은 곳에서는 내부 풀업 저항이 심어져 있다. 아니면 우리가 pullup pulldown 회로를 구성해서 이러한 오류를 많이 줄일 수 있다.
이번에는 이러한 pull-up, pull-down에대해서 알아보자.
PULL-UP
풀업이라는 말은 플로팅 상태일때 값을 끌어올린다는 의미이다.
스위치가 open일때
스위치가 열려있기 때문에 전류는 GND가 아닌 입출력핀으로 흐르게 되고 따라서는 입출력핀에서는 1(HIGH)값을 얻을 수 있다.
스위치가 close되었을 때
반대로 스위치가 닫히게 되면 vcc와 gnd가서로 연결 된다.
GND는 모든 전류가 도착하는 전압이 가장 낮은 지점이기 때문에 모든 전류는 GND 방향으로 흐르게 된다. 따라서 입출력핀에 흐르는 전류가 없기때문에 이때는 LOW가 출력 된다.
PULL-DOWN
풀다운의 의미는 풀업과 반대로 프로팅 상태의 값을 다운시켜버린다는 의미를 가지고 있다.
스위치가 open일때
스위치가 열려있게 되면 VCC와 회로는 단절되기 대문에 입출력핀에서 흐르는 저류는 GND로 향하게 된다.
따라서 입출력핀에는 0(LOW)값이 출력되는 것을 확인 할 수 있다.
스위치가 close되었을 때
스위치가 닫히게 되면 열려있을때 단절되어 있던 VCC부분이 회로와 연결이 되게 된다.
하지만 VCC는 GND에 있는 저항으로 인해서 흐르지 못하고 바로 입출력핀을 향하게 된다. 따라서 입출력핀에서는 1(HIGH)가 출력되는 것을 볼 수 있다.
이러한 처리를 풀업 풀다운이라고 한다. 이러한 작업이 AVR에서는 INPUT_PULLUP이라는 것이 소프트웨어 적으로 제공되고 이를 활용 할 수 있도록 되어 있다. 하지만 확실한 작업을 위해서는 이러한 회로적인 작업도 매우 중요하게 여겨 지고 있다.
'임베디드 > avr study' 카테고리의 다른 글
ddrx, pinx, portx (2020/10/04) (0) | 2020.10.04 |
---|---|
avr_study(2020/09/28)_폰노이만, 하버드 구조 비교 (0) | 2020.09.28 |
AVR-STUDY 2일차 (LED ON/OFF ) (0) | 2019.12.08 |
avr-study 1일차 (atmel studio 7 설치 및 실행 테스트) (0) | 2019.12.08 |