Lecture 06_ Polling & Pull-up register
< Accessing I/O Devices >
> Memory-mapped I/O
: allows I/O registers to be accessed as memory addresses
: LOAD, STORE 명령어만 사용
< Simple Operations >
- Load (memory → register)
: 메인 메모리의 byte나 word를 register에 복사하여, register의 이전 내용에 overwriting
- Store (reigster → memory)
: register의 byte나 word를 메인메모리에 복사하여, 해당 위치의 이전내용에 overwriting
- Operate
: 2개의 registers의 내용을 ALU에 복사하고, 두 words에 대한 arithmetic operation을 수행한다.
(그 결과를 register에 저장하고, register의 이전 내용에 overwriting )
- Jump
: 명령어 자체에서 word를 추출하고 PC(Program Counter)에 복사하여 PC의 이전 값에 overwriting
< I/O Device Interface >
: device와 interconnection network 사이의 circuit
- data 전송, status 교환, control information의 수단을 제공한다.
- LOAD, STORE 명령어로 접근 가능한 data registers , status registers , control registers가 포함된다.
- Memory-mapped I/O를 통해 SW는 이러한 registers들이 메모리에 어떤 위치에 있는 지 볼 수 있다.

< Common Procedures for I/O >

Assume that the I/O devices have a way to send a ‘READY’ signal to the processor
- keyboard: character를 읽을 준비가 되었다고 알린다.
- display: character를 받아서 화면에 띄울 준비가 되었다고 알린다.
- The ‘READY’ signal = status flag in a status register that is polled by processor.
< Polling I/O >
> Polling
: CPU가 일정한 시간간격마다 이벤트가 있는지 테스트 하는 것
- 간단한 임베디드 시스템에서는 비교적 빨리 처리되어 크게 걱정할 필요 X
> Disadvantages
- time wasted on tests that could be spent computing
- Load(memory → I/O register) instruction 계속 진행하기 때문에 비효율적 → Interrupt로 해결
> An Example of Polling I/O

while 문 → DATA가 준비됐는지 확인
: DATA READY인지 확인하고 DATA READY 아니면, 계속 while문을 돈다
: 무한루프로 volatile 변수를 계속 확인하면 CPU 낭비 (다른 일 못한다)
< Polling Button Input >
- reset 버튼은 입력으로 쓸 수 없고 CPU reset에만 사용 가능

- 버튼을 누르지 않았다면 Floating (unkown state)
*Floating: not connected to any voltage supply, ground or ground-referenced signal source
- 버튼을 누르면 GND와 GPIO핀이 연결 → LOW(0) 신호

< Pull-up Registors >
: floating 상태일 때 입력값이 HIGH인지 LOW인지 알 수 없는, 불확실한 상태가 발생하지 않도록 하기 위해 사용
- known state로 만들기 위해
한 쪽 끝에는 pull-up resistor를 GPIO 핀에 연결
다른 쪽 끝에는 HIGH voltage(5V or 3.3V, HIGH(1))를 연결
- 스위치가 열리면 GPIO input pin은 5V(HIGH(1))에 연결
스위치가 닫히면 GPIO input pin은 0V(LOW(0))에 연결
: 스위치 떼면 high(1), 스위치 누르면 low(0)

< Pull-up vs. Pull-Down Registors >
- Pull-up register: 스위치 떼면 high(1), 스위치 누르면 low(0)
- Pull-down register: 스위치 누르면 high(1), 스위치 떼면 low(0)

자료는 이화여자대학교 윤명국 교수님의 임베디드시스템및실험 강의에서 가져온 것입니다.
'Study > 임베디드시스템및실험' 카테고리의 다른 글
| [Exercise 05] 버튼 2개 이용하여 LED 켜기 (0) | 2023.10.18 |
|---|---|
| [Exercise 04] 색깔 순서대로 LED 켜기 (1) | 2023.10.17 |
| [Lecture 05] Data Type (2) | 2023.10.17 |
| [Exercise 03] 두 LED 동시에 깜빡이기 (0) | 2023.10.17 |
| [Lecture 04] LED (1) | 2023.10.16 |