

GPIO(General-Purpose Input/Output)
: 마이크로컨트롤러나 컴퓨터의 칩에서 주변 장치와 상호 작용하기 위해 사용하는 핀(Pin).
🔹 GPIO의 주요 특징
- 범용성(General-Purpose)
- 특정 기능이 정해져 있지 않으며, 프로그래밍을 통해 입력(Input) 또는 출력(Output)으로 설정할 수 있음.
- 입력(Input) 모드
- 버튼, 센서 등에서 신호를 받아들이는 용도로 사용됨.
- 예: 스위치를 눌렀을 때 HIGH(1) 또는 LOW(0) 감지
- 출력(Output) 모드
- LED, 모터, 부저 등 외부 장치를 제어하는 데 사용됨.
- 예: LED를 켜고 끄거나 모터를 회전시키기
- 디지털 신호 처리
- GPIO는 0V(LOW) 또는 3.3V/5V(HIGH)와 같은 디지털 신호를 사용함.
🔹 GPIO가 사용되는 대표적인 장치
- 라즈베리파이 (Raspberry Pi)
- 아두이노 (Arduino)
- ESP32, ESP8266 등의 IoT 보드
- 임베디드 시스템 (예: STM32, BeagleBone 등)
🔹 GPIO의 실제 활용 예시
✅ LED 켜고 끄기
✅ 버튼 입력 감지하기
✅ 모터 제어
✅ 센서 데이터 읽기
✅ I2C, SPI, UART 통신을 통해 외부 기기와 연결
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#define F_CPU 16000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
volatile unsigned char data = 0b00000000;
SIGNAL(SIG_INTERRUT4) { // SIG_INTERRUT4는 스위치 1번에 해당함.
data = ~data; // "모든 비트를 뒤집어라"라는 뜻.
}
void display_led(int data) {
PORTA = data; // 11111111 은 turn on
_delay_ms(300);
}
int main() {
DDRA = 0b11111111; // A에 해당하는 포트를 전부 출력하겠다. (DDRA는 LED를 의미함.)
DDRE = 0b11101111; // 스위치 1번이 연결되어있는 부분인 PE4번만 입력으로 판단하겠다는 뜻.
EICRB = 0x02;
EIMSK = 0b00010000; // INT4 interrupt enable (인터럽트 마스크 레지스터 External interrupt MaSK register)
SREG I = 1<<7; // SREG bit7 = I (interrupt enable) == sei(); (상태 레지스터 flag register)
}
while (1) { // true
display_led(data);
}
|
cs |
인터럽트 기반으로 입출력 작업을 수행할때도 직접적으로 레지스터를 건드리는 부분이 아주 밑단에서 이루어짐.
'PRACTICE > Basic' 카테고리의 다른 글
[Python] 프로세스, 스레드 조작 (0) | 2025.03.14 |
---|---|
[JAVA] '좋은 수' 구하기 (백준 1253번) (0) | 2024.08.30 |
[JAVA] 구간 합 구하기 (백준 11659번) (0) | 2024.08.30 |
[Python] 패스워드 생성기 (0) | 2021.03.02 |
[Python] 문자열 역순 출력 - reverse_sentence (0) | 2021.03.02 |
댓글