제 2 장 AVR 마이크로제어기
내용
- 2.1 ATmega328P: 특징, 내부구조, 메모리와 주변장치, 시스템 클록
- 2.2 AVR CP - Core: AVR 프로세서 구조, 명령어 집합, 레지스터, 인터럽트
- 2.3 AVR Memories: Program & data memory, EEPROM
- 2.4 System Clock
- 2.5 Power Management and Sleep Modes
- 2.6 System Contro * and Reset
2.1 ATmega328P
- ATmega328P
- 개선된 RISC 구조를 갖는 8-비트 AVR 마이크로제어기
- 한 개의 클록 사이클에 약 한 개의 명령어 실행, 1MIPS
- 아두이노 우노에 탑재된 AVR 프로세서
2.2 AVR CP - Core
- CP - 기능
- 명령어 실행
- 산술 연산
- 기억장치 액세스
- 주변장치 제어
- 인터럽트 조작
-
2.2.1 AVR CPU
- 하버드 구조: 프로그램 메모리와 데이터 메모리 분리
- 프로그램 메모리는 파이프라인 형태로 동작: 명령어 실행 시 다음 명령어 선인출
- 프로그램 메모리는 In-System Programmable Flash memory
- 레지스터 파일
- 매 사이클 마다 액세스 가능한 8 비트 범용 레지스터 32 개
- 한 사이클 안에 두 개의 레지스터 값을 연산기로 보내 계산하고 결과를 저장
2.3 AVR Memories
- AVR 의 기억장치
- 데이터 메모리
- 프로그램 메모리
- 주요 시스템 변수 저장을 위한 EEPROM
- 2.3.1 In-System Reprogrammable Flash Program Memory
- 기억장치 구조는 16K´16. (명령어 크기에 맞춤)
- PC 는 14 bits: 16K 공간 지정 가능. 16K=214
- 10,000 write/erase cycles
- 두 개의 영역으로 구분
- 2.3.2 SRAM Data Memory
- Registers file
- 0x0000 ~ 0x001F, 32 개
- 실제로 기억장치는 아니지만 메모리 주소 영역을 사용한다.
- 64 I/O Registers
- I/O 소자들을 제어하는 64 개의 레지스터가 할당된 주소 영역
- IN/OUT 명령어의 I/O 주소는 0x00~0x3F 까지 (그림 틀림). 8 비트 주소 지정
- 0x00~0x1F 까지는 비트 단위 액세스 가능. 나머지는 불가.
- Load/Store 명령어의 메모리 주소는 0x0020 ~ 0x005F 까지: 16 비트 주소 지정
- 160 Ext I/O Registers
- 0x0060 ~ 0x00FF
- Load/Store 명령어로 액세스: 주소를 16 비트로 지정
- Internal SRAM (2048´8)
- 0x0100 ~ 0x08FF (2KB)
- 내부 메모리 액세스 시간은 2 클럭 사이클.
- Registers file
- 2.3.3 EEPROM Data Memory
- 전원이 제거되더라도 데이터가 보존되는 비휘발성 메모리
- 시스템 상수나 변수의 현재 값을 기록하기 위하여 사용됨.
- ATmega328P 의 EEPROM 용량은 1KB. 바이트 단위 액세스 가능.
- 100,000 write/erase cycles.
- EEPROM Address Register/EEPROM Data Register/EEPROM Control Register 를 통해서 액세스
2.4 System Clock
- 여러 가지 clock source 중 하나를 선택하여 시스템 클럭으로 사용.
- System Clock Prescaler 의 출력(clksys) 주파수가 시스템 클록 주파수이고, AVR Clock Control Unit 의 출력은 모두 같은 주파수로 동작한다.
- 전력 소모를 줄이기 위하여 현재 구동되는 모듈로만 클럭 공급
2.5 Power Management and Sleep Modes
- MUC 내부에서 사용하지 않는 모듈의 동작을 정지(shut down)시켜 소비 전력을 절감.
- SLEEP 명령어를 실행하면, 설정에 따라 6 가지 중 하나의 슬립 모드로 들어간다.
- 슬립 모드 동작
- MCU 가 슬립 모드일 때 허용된 인터럽트가 발생하면, 슬립 모드에서 해제된다.
- 슬립 모드에서 해제되면, 먼저 인터럽트 서비스 루틴이 실행되고, SLEEP 명령어 바로 뒤에 이어지는 명령어로 복귀한다.
- 레지스터 파일과 SRAM 의 내용은 변경되지 않는다.
- 슬립 모드 중에 리셋이 발생하면, MCU 는 깨어나서 Reset Vector 부터 실행한다.
- 여러 가지 슬립 모드 제공
- 정지(Idle)
- CPU 동작 중지
- SPI, USART, Analog Comparator, TWI, Timer/Counter, Watchdog 과 인터럽트 시스템은 계속 동작한다.
- CPU 클럭과 플래시 클럭을 차단하고, 나머지 클럭은 동작한다.
- ADC 잡음 절감(ADC Noise Reduction)
- 정확하게 아날로그 값을 측정하도록 ADC 주변의 잡음 환경을 개선하기 위한 모드
- CPU 클럭 차단
- ADC, 외부 인터럽트, TWI, Timer/Counter2, Watchdog 은 계속 동작
- I/O 클럭, CPU 클럭, 플래시 클럭을 차단하고, 나머지 클럭은 동작
- 전원 차단 (Power down)
- 모든 클럭 발생을 중단하고, 비동기 모듈만 동작한다.
- 외부 발진기가 정지되고
- 외부 인터럽트, TWI, Watchdog 은 계속 동작한다.
- 리셋과 외부 인터럽트, TWI 주소 일치, Watchdog 인터럽트에 의하여 깨어난다.
- 깨어날 때, 클럭 발진 회로가 안정 상태로 들어갈 때까지 충분한 기동 시간이 필요하다.
- 전원 절감 (Power save)
- 한 가지를 제외하고 전원 차단 모드와 동일.
- Timer/Counter2 는 외부 클럭으로 동작하는 기능이 있다. Timer/Counter2 에 의해 슬립 모드에서 깨어날 수 있다.
- 대기 (standby)
- 발진기가 계속 동작한다는 것 이외에 전원 차단(Power Down) 모드와 같다.
- 발진기가 계속 동작하기 때문에, 깨어날 때 발진기 안정 기간이 필요 없다.
- MCU 는 6 클럭 사이클 내에 깨어난다.
- 확장 대기(Extended Standby)
- 발진기가 계속 동작한다는 것 이외에 전원 절감(Power Save) 모드와 같다.
- 나머지는 대기(Standby)와 같다.
- 정지(Idle)
2.6 System Control and Reset
- 리셋 동작
- 모든 I/O 레지스터들이 초기값으로 세트되고, 프로그램은 Reset Vector 에서 실행을 시작한다.
- Reset Vector 에 있는 명령어는 리셋 처리 루틴으로 무조건 점프 명령어
- ATmega328P 의 리셋 소스는 4 개
- 리셋 소스가 활성화되면, MCU 는 동작을 완전히 멈추고, 리셋 소스가 해제된 후, 약간의 지연 시간을 거쳐, MCU 는 리셋 동작을 수행한다.
- 리셋 회로
- 리셋 소스
- Power-on Reset: 공급 전압이 Power-on Reset threshold 보다 낮을 때 MCU 는 리셋된다.
- External Reset: /RESET 핀에 최소 펄스 길이보다 길게 low level 이 감지될 때 리셋된다.
- Watchdog System Reset: Watchdog Timer 주기가 만료되고 Watch dog Timer Reset mode 가 활성화 되어 있을 때 리셋된다.
- Brown-out Reset: 공급 전압이 Brown-out Reset threshold 보다 낮고 Brown-out Detector 가 활성화되어 있을 때 리셋된다.
- 저전압 검출
- 불안정한 입력 전압으로 회로가 오동작하는 것을 방지하기 위하여
- 입력 전압이 일정 수준(BODLEVEL)보다 낮아지는 것을 검출하여 리셋.
- BOD 가 활성화되어 있고 VCC 레벨이 trigger level(VBOT-)보다 낮아질 때, Brown-out Reset 이 즉각 활성화된다.
- Vcc 가 trigger level(VBOT+)보다 높아질 때, delay counter 가 동작하고, tOUT 시간 후에 리셋이 끝난다.
요약
- 아두이노 우노에 사용된 ATmega328P 를 중심으로 AVR MCU 의 기능을 설명
- 내부구조
- I/O 핀 멀티플렉싱
- CPU 구조: 명령어 집합, 상태 레지스터, 범용 레지스터, 리셋과 인터럽트
- AVR 메모리: 프로그램 코드 플래시 메모리, 프로그램 데이터 SRAM, 시스템 설정 EEPROM
- 시스템 클럭: 내부 RC 발진기, 외부 수정 발진기
- 전력 관리 및 슬립 모드: 정지(Idle), 전원 차단(Power down), 전원 절감(Power save)
- 시스템 리셋: 전원인가 리셋, 외부 리셋 단자, 워치독 리셋, BOD 리셋
- 아두이노
- 공개 하드웨어 아두이노 제품군 소개
- 아두이노 우노 회로도
- 아두이노 우노 커넥터