|
|
PORTx : 포트 출력 레지스터
포트 핀에 전압을 출력할 때 사용 (0/1)
PINx : 포트 입력 레지스터
포트 핀의 현재 상태를 읽을 때 사용
DDRx (Data Direction Register) : 포트 방향 설정
0 → 입력, 1 → 출력
예시 (AVR 기준)
레지스터역할
| PORTA | A포트 출력 설정 |
| PINA | A포트 입력 상태 읽기 |
| DDRA | A포트 핀 방향 설정 |
2. 타이머/카운터 관련 레지스터
TCCRn (Timer/Counter Control Register) : 타이머 동작 모드 설정
TCNTn (Timer/Counter Register) : 현재 카운터 값 읽기/쓰기
OCRn (Output Compare Register) : 특정 값 도달 시 이벤트 발생
TIMSK / TIFR : 타이머 인터럽트 설정 및 플래그
3. 인터럽트 관련 레지스터
GICR / MCUCR / EIMSK : 인터럽트 허용/모드 설정
GIFR / EIFR : 인터럽트 발생 플래그
4. 전원 및 클럭 제어 레지스터
PRR (Power Reduction Register) : 특정 주변장치 전원 차단
CLKPR (Clock Prescaler Register) : 시스템 클럭 분주 설정
5. UART/통신 관련 레지스터
UDR : 송수신 데이터 레지스터
UCSRA/UCSRB/UCSRC : 통신 상태, 제어, 인터럽트 설정
6. ADC / 아날로그 관련 레지스터
ADMUX : 입력 채널 선택, 참조 전압 설정
ADCSRA : ADC 제어 및 시작
ADCH/ADCL : 변환 결과 읽기
7. 특수 기능/상태 레지스터
SREG (Status Register) : 연산 결과 플래그(Carry, Zero 등)
SP (Stack Pointer) : 스택 위치 저장
MCUCSR / MCUCR : MCU 상태 제어
💡 정리하면
대부분 레지스터는 하드웨어 기능별로 나뉘어 있으며, GPIO, Timer, Interrupt, UART, ADC, Power/Clock, Status 정도로 구분할 수 있습니다.
이름은 MCU 제조사/시리즈마다 달라지므로, 데이터시트를 참조해야 합니다.
임의로 레지스터 이름을 바꿀 수 없지만, 소프트웨어에서 #define이나 변수로 별칭(alias)을 만들어 접근하는 것은 가능합니다.
원하시면 제가 AVR, PIC, STM32 등 MCU별 대표 레지스터 이름과 기능을 표로 깔끔하게 정리해 드릴 수도 있습니다.
혹시 어느 MCU 기준으로 보고 싶으신가요?