작동 원리 Keypad 20072413 박민호
Schematic Keypad General Purpose Registers(GPRs) : 우리가 자주 사용하는 레지스터에 해당하는 R0~R31 부분입니다. 데이터를 우리 마음대로 저장할 수 있습니다. 0x00 - 0x1F 주소 범위의 32Bytes 용량 I/O memory : 모든 AVR 마이크로컨트롤러(이하 MCU(microcontroller unit))는 최소 64byte의 I/O memory를 가지고 있습니다. 이걸 Standard I/O memory 또는 Standard I/O Register 라고 부르지요.(다른 MCU에서는 SFRs라고 Special Function Registers로도 불립니다.) 이 SFR부분 외에도 컨트롤러마다 더 추가되는 레지스터가 존재하는데 그게 Extended I/O Memory에 해당합니다. Atmega128은 사진과 같이 DDRF, PORTF같은 부분이 이에 해당하네요.(근데 데이터시트를 살펴보면 PINF는 Extended가 아닌 SFR에 들어갑니다. Atmega103 호환모드때문에 이렇게 해놨다는데, 자세한건 생략하겠습니다.) Standard I/O memory -> 0x20 - 0x5F 주소 범위의 64Bytes 용량 Extended I/O memory -> 0x60 - 0xFF 주소 범위의 160Bytes 용량 Internal data SRAM : 내부 메모리 입니다. Atmega128은 Extended I/O memory 영역이 존재하므로 내부 메모리는 0x0100번지부터 시작합니다. 하지만 Atmega103모드에서는 Extended I/O memory 영역이 없으므로 0x0060부터 시작하지요.(앞으로 특별한 이유가 없으면 Atmega103 호환모드는 생략합니다.) 그래서 0x10FF까지 총 4KB가 됩니다. External data SRAM : MCUCR 레지스터의 SRE 비트를 1로 활성화 시켜주면 접근 가능한 메모리 영역입니다. 여기서 외부메모리 영역을 사용하기 위해서는 CY62256같은 SRAM을 장착하여 Atmega128에 연결시켜야 합니다. 평소에는 내부메모리인 0x10FF까지 사용하다가 메모리가 모자라다거나 다른 이유 때문에(대체로 Stack과 영역이 겹쳐서) 사용하게 되는 Data Memory 영역입니다. 0x1100 - 0xFFFF 주소 범위의 61183Bytes 용량 출처 : Easy Processor Kit Schematic
Keypad Thank you Q&A