• Home
  • About
    • changsoooooo's Blog photo

      changsoooooo's Blog

      changsoooooo's Blog.

    • Learn More
    • Twitter
    • Facebook
    • Instagram
    • Github
    • Steam
  • 일상
  • 교육
    • 교육학
    • 정보 컴퓨터 교육
    • 임용
  • 개발
  • 잡지식
  • 한국사
  • Projects

[펌웨어]2장 AVR 마이크로제어기

03 Dec 2020

Reading time ~4 minutes

제 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 클럭 사이클.
  • 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)와 같다.

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 리셋
  • 아두이노
    • 공개 하드웨어 아두이노 제품군 소개
    • 아두이노 우노 회로도
    • 아두이노 우노 커넥터


Share Tweet +1