아트멜

Atmel 8비트 AVR 마이크로컨트롤러(2/4/8K 바이트 시스템 내 프로그래밍 가능 플래시 포함)칩

 

특징

  • 고성능, 저전력 AVR® 8비트 마이크로컨트롤러
  • 고급 RISC 아키텍처
  • 120 개의 강력한 명령어 – 대부분의 단일 클록 사이클 실행
  • 32 x 8 범용 작업 레지스터
  • 완전 정적 작동
  • 비 휘발성 프로그램 및 데이터 메모리
  • 2 / 4 / 8K 바이트의 시스템 내 프로그래밍 가능 프로그램 메모리 플래시
  • 지구력: 10,000 쓰기/지우기 주기
  • 128/256/512 바이트 시스템 내 프로그래밍 가능 EEPROM
  • 지구력: 100,000 쓰기/지우기 주기
  • 128/256/512 바이트 내부 SRAM
  • 자체 프로그래밍 플래시 프로그램 및 EEPROM 데이터 보안을위한 프로그래밍 잠금

주변 기능

  • 프리스케일러 및 8 개의 PWM 채널이있는 XNUMX 비트 타이머 / 카운터
  • 별도의 프리스케일러가있는 8 비트 고속 타이머 / 카운터
  • 별도의 출력 비교 레지스터가있는 2 개의 고주파 PWM 출력
  • 프로그래밍 가능한 데드 타임 생성기
  • USI – 시작 상태 감지기가있는 범용 직렬 인터페이스
  • 10비트 ADC

4 개의 단일 종단 채널

프로그래밍 가능한 이득이있는 2 개의 차동 ADC 채널 쌍 (1x, 20x)

온도 측정

별도의 온칩 발진기가있는 프로그래밍 가능 워치 독 타이머

온칩 아날로그 비교기

특수 마이크로 컨트롤러 기능

debugWIRE 온칩 디버그 시스템

SPI 포트를 통해 시스템 내 프로그래밍 가능

외부 및 내부 인터럽트 소스

저전력 유휴, ADC 노이즈 감소 및 파워 다운 모드

강화 된 파워 온 리셋 회로

프로그래밍 가능한 저전압 감지 회로

내부 보정 발진기

I / O 및 패키지

프로그래밍 가능한 I / O 라인 XNUMX 개

8 핀 PDIP, 8 핀 SOIC, 20 패드 QFN / MLF 및 8 핀 TSSOP (ATtiny45 / V 만 해당)

운영 볼륨tage
– ATtiny1.8V / 5.5V / 25V의 경우 45 – 85V
– ATtiny2.7 / 5.5 / 25의 경우 45 – 85V

속도 등급
– ATtiny25V / 45V / 85V : 0 – 4MHz @ 1.8 – 5.5V, 0 – 10MHz @ 2.7 – 5.5V
– ATtiny25 / 45 / 85 : 0 – 10MHz @ 2.7 – 5.5V, 0 – 20MHz @ 4.5 – 5.5V

산업 온도 범위

낮은 전력 소모

활성 모드 :

1MHz, 1.8V : 300µA

파워 다운 모드 :

핀 구성

핀아웃 ATtiny25 / 45 / 85 구성

핀 설명

VCC: 공급량tage.
GND: 접지.
포트 B(PB5:PB0): 포트 B는 내부 풀업 저항(각 비트에 대해 선택됨)이 있는 6비트 양방향 I/O 포트입니다. 포트 B 출력 버퍼는 높은 싱크 및 소스 기능을 모두 갖춘 대칭 드라이브 특성을 가지고 있습니다. 풀업 저항이 활성화되면 입력으로 외부에서 풀 로우인 포트 B 핀이 전류를 소싱합니다. 클록이 실행되지 않는 경우에도 재설정 조건이 활성화되면 포트 B 핀은 XNUMX중 상태가 됩니다.

포트 B는 또한 나열된 ATtiny25 / 45 / 85의 다양한 특수 기능의 기능을 제공합니다.
ATtiny25에서 프로그래밍 가능한 I / O 포트 PB3 및 PB4 (핀 2 및 3)는 ATtiny15와의 하위 호환성을 지원하기 위해 ATtiny15 호환 모드에서 교환됩니다.

RESET: 리셋 입력. 최소 펄스 길이보다 긴 이 핀의 로우 레벨은 클럭이 실행되지 않고 리셋 핀이 비활성화되지 않은 경우에도 리셋을 생성합니다. 최소 펄스 길이는 다음과 같습니다. 표 21-4 165페이지에. 더 짧은 펄스는 리셋을 생성한다고 보장되지 않습니다.

리셋 핀은 (약한) I / O 핀으로도 사용할 수 있습니다.

위에view

ATtiny25 / 45 / 85는 AVR 강화 RISC 아키텍처를 기반으로하는 저전력 CMOS 8 비트 마이크로 컨트롤러입니다. 단일 클록 사이클에서 강력한 명령을 실행함으로써 ATtiny25 / 45 / 85는 MHz 당 1MIPS에 가까운 처리량을 달성하여 시스템 설계자가 전력 소비 대 처리 속도를 최적화 할 수 있습니다.

블록 다이어그램 블록 다이어그램

AVR 코어는 32 개의 범용 작업 레지스터와 풍부한 명령어 세트를 결합합니다. 32 개의 레지스터는 모두 ALU (Arithmetic Logic Unit)에 직접 연결되어있어 하나의 클록 사이클에서 실행되는 하나의 단일 명령어로 두 개의 독립적 인 레지스터에 액세스 할 수 있습니다. 결과 아키텍처는 기존 CISC 마이크로 컨트롤러보다 최대 XNUMX 배 빠른 처리량을 달성하면서 코드 효율성이 더 높습니다.

ATtiny25 / 45 / 85는 다음 기능을 제공합니다 : 2 / 4 / 8K 바이트의 시스템 내 프로그래밍 가능 플래시, 128/256/512 바이트 EEPROM, 128/256/256 바이트 SRAM, 6 개의 범용 I / O 라인, 32 개의 일반 목적 작업 레지스터, 비교 모드가있는 8 비트 타이머 / 카운터 8 개, 4 비트 고속 타이머 / 카운터 10 개, 범용 직렬 인터페이스, 내부 및 외부 인터럽트, XNUMX 채널, XNUMX 비트 ADC, 내부 프로그램 가능 감시 타이머 발진기 및 세 가지 소프트웨어 선택 가능 절전 모드. 유휴 모드는 SRAM, 타이머 / 카운터, ADC, 아날로그 비교기 및 인터럽트 시스템이 계속 작동하도록 허용하면서 CPU를 중지합니다. 전원 차단 모드는 레지스터 내용을 저장하고 다음 인터럽트 또는 하드웨어 재설정까지 모든 칩 기능을 비활성화합니다. ADC 노이즈 감소 모드는 ADC를 제외한 모든 I / O 모듈과 CPU를 중지하여 ADC 변환 중 스위칭 노이즈를 최소화합니다.

이 장치는 Atmel의 고밀도 비 휘발성 메모리 기술을 사용하여 제조됩니다. 온칩 ISP 플래시를 사용하면 SPI 직렬 인터페이스, 기존의 비 휘발성 메모리 프로그래머 또는 AVR 코어에서 실행되는 온칩 부트 코드를 통해 프로그램 메모리를 시스템 내에서 다시 프로그래밍 할 수 있습니다.

ATtiny25 / 45 / 85 AVR은 C 압축기, 매크로 어셈블러, 프로그램 디버거 / 시뮬레이터 및 평가 키트를 포함한 전체 프로그램 및 시스템 개발 도구 제품군으로 지원됩니다.

리소스 정보

포괄적 인 개발 도구 세트, 애플리케이션 노트 및 데이터 시트를 다운로드 할 수 있습니다. http://www.atmel.com/avr.

코드 예amp레

이 문서에는 간단한 코드 ex가 포함되어 있습니다.amp장치의 다양한 부분을 사용하는 방법을 간략하게 보여주는 파일. 이러한 코드 전amples는 부품별 헤더라고 가정합니다. file 컴파일 전에 포함됩니다. 모든 C 컴파일러 공급업체가 헤더에 비트 정의를 포함하는 것은 아닙니다. files 및 C의 인터럽트 처리는 컴파일러에 따라 다릅니다. 자세한 내용은 C 컴파일러 설명서를 확인하십시오.

확장 I / O 맵에있는 I / O 레지스터의 경우 "IN", "OUT", "SBIS", "SBIC", "CBI"및 "SBI"명령은 확장 I에 대한 액세스를 허용하는 명령으로 대체되어야합니다. /영형. 일반적으로 이것은 "SBRS", "SBRC", "SBR"및 "CBR"과 결합 된 "LDS"및 "STS"를 의미합니다. 모든 AVR 장치에 확장 I / O 맵이 포함되어있는 것은 아닙니다.

정전식 터치 감지

Atmel QTouch 라이브러리는 Atmel AVR 마이크로컨트롤러의 터치 감지 인터페이스에 사용하기 쉬운 솔루션을 제공합니다. QTouch 라이브러리에는 QTouch® 및 QMatrix® 획득 방법에 대한 지원이 포함되어 있습니다.

터치 감지는 QTouch 라이브러리를 연결하고 라이브러리의 애플리케이션 프로그래밍 인터페이스 (API)를 사용하여 터치 채널과 센서를 정의함으로써 모든 애플리케이션에 쉽게 추가됩니다. 그런 다음 애플리케이션은 API를 호출하여 채널 정보를 검색하고 터치 센서의 상태를 확인합니다.

QTouch 라이브러리는 무료이며 Atmel에서 다운로드할 수 있습니다. web대지. 구현에 대한 자세한 정보 및 세부사항은 QTouch 라이브러리 사용자 가이드를 참조하십시오. web대지.

데이터 보존

Reliability Qualification 결과에 따르면 예상 데이터 보존 실패율은 1 ° C에서 20 년 또는 85 ° C에서 100 년 동안 25PPM보다 훨씬 낮습니다.

AVR CPU 코어

소개

이 섹션에서는 일반적으로 AVR 핵심 아키텍처에 대해 설명합니다. CPU 코어의 주요 기능은 올바른 프로그램 실행을 보장하는 것입니다. 따라서 CPU는 메모리에 액세스하고, 계산을 수행하고, 주변 장치를 제어하고, 인터럽트를 처리 할 수 ​​있어야합니다.

아키텍처 오버view 건축학

성능과 병렬 처리를 극대화하기 위해 AVR은 프로그램과 데이터를위한 별도의 메모리와 버스가있는 Harvard 아키텍처를 사용합니다. 프로그램 메모리의 명령어는 단일 레벨 파이프 라이닝으로 실행됩니다. 하나의 명령어가 실행되는 동안 다음 명령어는 프로그램 메모리에서 프리 페치됩니다. 이 개념을 사용하면 모든 클록주기에서 명령을 실행할 수 있습니다. 프로그램 메모리는 시스템 내 재 프로그래밍 가능한 플래시 메모리입니다.

빠른 액세스 레지스터 File 단일 클록 주기 액세스 시간이 있는 32 x 8비트 범용 작업 레지스터를 포함합니다. 이를 통해 단일 주기 ALU(산술 논리 장치) 작업이 가능합니다. 일반적인 ALU 연산에서는 두 개의 피연산자가 레지스터에서 출력됩니다. File, 작업이 실행되고 결과가 레지스터에 다시 저장됩니다. File– 한 클록 사이클에서.

32 개의 레지스터 중 16 개를 데이터 공간 주소 지정을위한 16 개의 XNUMX 비트 간접 주소 레지스터 포인터로 사용할 수 있으므로 효율적인 주소 계산이 가능합니다. 이러한 주소 포인터 중 하나는 플래시 프로그램 메모리의 조회 테이블에 대한 주소 포인터로도 사용할 수 있습니다. 이러한 추가 기능 레지스터는이 섹션의 뒷부분에서 설명하는 XNUMX 비트 X-, Y- 및 Z- 레지스터입니다.

ALU는 레지스터 사이 또는 상수와 레지스터 사이의 산술 및 논리 연산을 지원합니다. 단일 레지스터 작업은 ALU에서 실행할 수도 있습니다. 산술 연산 후 상태 레지스터는 연산 결과에 대한 정보를 반영하도록 업데이트됩니다.

프로그램 흐름은 전체 주소 공간을 직접 처리 할 수있는 조건부 및 무조건 점프 및 호출 명령에 의해 제공됩니다. 대부분의 AVR 명령어에는 단일 16 비트 워드 형식이 있지만 32 비트 명령어도 있습니다.

인터럽트 및 서브 루틴 호출 중에 리턴 주소 PC (프로그램 카운터)가 스택에 저장됩니다. 스택은 일반 데이터 SRAM에 효과적으로 할당되며 결과적으로 스택 크기는 총 SRAM 크기와 SRAM 사용량에 의해서만 제한됩니다. 모든 사용자 프로그램은 리셋 루틴에서 SP를 초기화해야합니다 (서브 루틴 또는 인터럽트가 실행되기 전에). SP (스택 포인터)는 I / O 공간에서 읽기 / 쓰기 액세스가 가능합니다. 데이터 SRAM은 AVR 아키텍처에서 지원되는 XNUMX 가지 주소 지정 모드를 통해 쉽게 액세스 할 수 있습니다.

AVR 아키텍처의 메모리 공간은 모두 선형 및 일반 메모리 맵입니다.

유연한 인터럽트 모듈은 상태 레지스터의 추가 글로벌 인터럽트 활성화 비트와 함께 I / O 공간에 제어 레지스터를 가지고 있습니다. 모든 인터럽트에는 인터럽트 벡터 테이블에 별도의 인터럽트 벡터가 있습니다. 인터럽트는 인터럽트 벡터 위치에 따라 우선 순위를 갖습니다. 인터럽트 벡터 주소가 낮을수록 우선 순위가 높습니다.

I/O 메모리 공간에는 제어 레지스터, SPI 및 기타 I/O 기능과 같은 CPU 주변 장치 기능을 위한 64개의 주소가 포함됩니다. I/O 메모리는 직접 액세스하거나 레지스터 다음 데이터 공간 위치로 액세스할 수 있습니다. File, 0x20 – 0x5F.

ALU – 산술 논리 장치

고성능 AVR ALU는 32 개의 범용 작업 레지스터 모두와 직접 연결되어 작동합니다. 단일 클록 사이클 내에서 범용 레지스터 사이 또는 레지스터와 즉시 사이의 산술 연산이 실행됩니다. ALU 연산은 산술, 논리 및 비트 함수의 세 가지 주요 범주로 나뉩니다. 아키텍처의 일부 구현은 또한 부호있는 / 부호없는 곱셈과 분수 형식을 모두 지원하는 강력한 곱셈기를 제공합니다. 자세한 설명은 "명령어 세트"섹션을 참조하십시오.

상태 등록

상태 레지스터에는 가장 최근에 실행 된 산술 명령어의 결과에 대한 정보가 포함됩니다. 이 정보는 조건부 연산을 수행하기 위해 프로그램 흐름을 변경하는 데 사용할 수 있습니다. 상태 레지스터는 Instruction Set Reference에 지정된대로 모든 ALU 작업 후에 업데이트됩니다. 이렇게하면 전용 비교 명령어를 사용할 필요가 없어져서 더 빠르고 간단한 코드가 생성됩니다.

상태 레지스터는 인터럽트 루틴에 들어갈 때 자동으로 저장되지 않고 인터럽트에서 복귀 할 때 복원됩니다. 이것은 소프트웨어로 처리되어야합니다.

SREG – AVR 상태 레지스터

AVR 상태 레지스터 – SREG –는 다음과 같이 정의됩니다.

조금 7 6 5 4 3 2 1 0
0x3F I T H S V N Z C SREG
읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기
초기값 0 0 0 0 0 0 0 0

비트 7 – I : 글로벌 인터럽트 활성화

인터럽트를 활성화하려면 Global Interrupt Enable 비트를 설정해야합니다. 그런 다음 개별 인터럽트 활성화 제어가 별도의 제어 레지스터에서 수행됩니다. Global Interrupt Enable Register가 지워지면 개별 인터럽트 활성화 설정과 관계없이 인터럽트가 활성화되지 않습니다. I- 비트는 인터럽트가 발생한 후 하드웨어에 의해 지워지고 RETI 명령에 의해 후속 인터럽트를 활성화하도록 설정됩니다. I- 비트는 명령어 세트 참조에 설명 된대로 SEI 및 CLI 명령어를 사용하여 애플리케이션에서 설정하고 지울 수도 있습니다.

비트 6 – T : 비트 복사 저장

비트 복사 명령어 BLD(Bit Load) 및 BST(Bit STore)는 T-비트를 작동된 비트의 소스 또는 대상으로 사용합니다. 레지스터의 레지스터에서 비트 File BST 명령어에 의해 T에 복사될 수 있고 T의 비트는 레지스터의 레지스터에 있는 비트에 복사될 수 있습니다. File BLD 명령에 의해.

비트 5 – H : 하프 캐리 플래그

Half Carry 플래그 H는 일부 산술 연산에서 Half Carry를 나타냅니다. Half Carry는 BCD 산술에 유용합니다. 자세한 내용은 "명령어 세트 설명"을 참조하십시오.

비트 4 – S: 부호 비트, S = N ⊕ V

S- 비트는 항상 배타적이거나 네거티브 플래그 N과 XNUMX의 보완 오버플로 플래그 V 사이입니다. 자세한 내용은 "명령어 세트 설명"을 참조하십시오.

비트 3 – V : XNUMX의 보수 오버플로 플래그

Two 's Complement Overflow Flag V는 XNUMX의 보수 산술을 지원합니다. 자세한 내용은 "명령어 세트 설명"을 참조하십시오.

비트 2 – N : 네거티브 플래그

음수 플래그 N은 산술 또는 논리 연산에서 음의 결과를 나타냅니다. 자세한 내용은 "명령어 세트 설명"을 참조하십시오.

비트 1 – Z : 제로 플래그

제로 플래그 Z는 산술 또는 논리 연산에서 제로 결과를 나타냅니다. 자세한 내용은 "명령어 세트 설명"을 참조하십시오.

비트 0 – C : 캐리 플래그

캐리 플래그 C는 산술 또는 논리 연산의 캐리를 나타냅니다. 자세한 내용은 "명령어 세트 설명"을 참조하십시오.

범용 레지스터 File

레지스터 File AVR Enhanced RISC 명령어 세트에 최적화되어 있습니다. 필요한 성능과 유연성을 달성하기 위해 레지스터는 다음 입력/출력 체계를 지원합니다. File:

8 비트 출력 피연산자 8 개와 XNUMX 비트 결과 입력 XNUMX 개

8 개의 8 비트 출력 피연산자 및 XNUMX 개의 XNUMX 비트 결과 입력

8 개의 16 비트 출력 피연산자 및 XNUMX 개의 XNUMX 비트 결과 입력

16 비트 출력 피연산자 16 개와 XNUMX 비트 결과 입력 XNUMX 개

그림 4-2 CPU에있는 32 개의 범용 작업 레지스터의 구조를 보여줍니다. 일반용도

표시된 바와 같이 그림 4-2, 각 레지스터에는 데이터 메모리 주소도 할당되어 사용자 데이터 공간의 처음 32개 위치에 직접 매핑합니다. 물리적으로 SRAM 위치로 구현되지는 않았지만 이 메모리 구성은 레지스터에 액세스할 때 큰 유연성을 제공합니다. X, Y 및 Z 포인터 레지스터를 file.레지스터에서 동작하는 대부분의 명령어 File 모든 레지스터에 직접 액세스할 수 있으며 대부분은 단일 사이클 명령어입니다.

X- 레지스터, Y- 레지스터 및 Z- 레지스터

레지스터 R26..R31에는 범용 사용에 몇 가지 추가 기능이 있습니다. 이러한 레지스터는 데이터 공간의 간접 주소 지정을위한 16 비트 주소 포인터입니다. 세 개의 간접 주소 레지스터 X, Y 및 Z는 다음에 설명 된대로 정의됩니다. 그림 4-3.

등록하다

다른 주소 지정 모드에서 이러한 주소 레지스터는 고정 변위, 자동 증가 및 자동 감소 기능을 갖습니다 (자세한 내용은 명령어 세트 참조 참조).

스택 포인터

스택은 주로 임시 데이터 저장, 지역 변수 저장 및 인터럽트 및 서브 루틴 호출 후 반환 주소 저장에 사용됩니다. 스택 포인터 레지스터는 항상 스택의 맨 위를 가리 킵니다. 스택은 더 높은 메모리 위치에서 더 낮은 메모리 위치로 성장하는 것으로 구현됩니다. 이것은 Stack PUSH 명령이 Stack Pointer를 감소 시킨다는 것을 의미합니다.

스택 포인터는 서브 루틴 및 인터럽트 스택이있는 데이터 SRAM 스택 영역을 가리 킵니다. 데이터 SRAM의이 스택 공간은 서브 루틴 호출이 실행되거나 인터럽트가 활성화되기 전에 프로그램에 의해 정의되어야합니다. 스택 포인터는 0x60 이상을 가리 키도록 설정해야합니다. 스택 포인터는 데이터가 PUSH 명령으로 스택에 푸시 될 때 XNUMX 씩 감소하고 리턴 주소가 서브 루틴 호출 또는 인터럽트로 스택에 푸시되면 XNUMX만큼 감소합니다. 스택 포인터는 POP 명령을 사용하여 스택에서 데이터를 팝할 때 XNUMX 씩 증가하고, 서브 루틴 RET에서 리턴하거나 인터럽트 RETI에서 리턴하여 스택에서 데이터를 팝할 때 XNUMX 씩 증가합니다.

AVR 스택 포인터는 I / O 공간에서 두 개의 8 비트 레지스터로 구현됩니다. 실제로 사용되는 비트 수는 구현에 따라 다릅니다. AVR 아키텍처의 일부 구현에서 데이터 공간이 너무 작아서 SPL 만 필요합니다. 이 경우 SPH 레지스터는 존재하지 않습니다.

SPH 및 SPL — 스택 포인터 레지스터

조금 15 14 13 12 11 10 9 8
0x3E SP15 SP14 SP13 SP12 SP11 SP10 SP9 SP8 영어: SPH는
0x3D SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0 영어:
7 6 5 4 3 2 1 0
읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기
읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기
초기값 라멘드 라멘드 라멘드 라멘드 라멘드 라멘드 라멘드 라멘드
초기값 라멘드 라멘드 라멘드 라멘드 라멘드 라멘드 라멘드 라멘드

명령어 실행 타이밍

이 섹션에서는 명령어 실행을 위한 일반적인 액세스 타이밍 개념에 대해 설명합니다. AVR CPU는 칩에 대해 선택한 클록 소스에서 직접 생성되는 CPU 클록 clkCPU에 의해 구동됩니다. 내부 클럭 분할이 사용되지 않습니다.

그림4.4

그림 4-4 Harvard 아키텍처와 빠른 액세스 레지스터에 의해 활성화된 병렬 명령어 페치 및 명령어 실행을 보여줍니다. File 개념. 이것은 비용당 기능, 클록당 기능, 전원 장치당 기능에 대한 고유한 결과와 함께 MHz당 최대 1MIPS를 얻기 위한 기본 파이프라이닝 개념입니다.

그림 4-5. 단일 사이클 ALU 작동

그림4.5

재설정 및 인터럽트 처리

AVR은 여러 다른 인터럽트 소스를 제공합니다. 이러한 인터럽트와 별도의 리셋 벡터는 각각 프로그램 메모리 공간에 별도의 프로그램 벡터를 가지고 있습니다. 모든 인터럽트에는 인터럽트를 활성화하기 위해 상태 레지스터의 글로벌 인터럽트 활성화 비트와 함께 논리 XNUMX을 작성해야하는 개별 활성화 비트가 할당됩니다.

프로그램 메모리 공간에서 가장 낮은 주소는 기본적으로 재설정 및 인터럽트 벡터로 정의됩니다. 벡터의 전체 목록은 다음과 같습니다. 48 페이지의 "인터럽트". 목록은 또한 다른 인터럽트의 우선 순위 수준을 결정합니다. 주소가 낮을수록 우선 순위가 높습니다. RESET은 가장 높은 우선 순위를 가지며 다음은 INT0 – 외부 인터럽트 요청 0입니다.

인터럽트가 발생하면 Global Interrupt Enable I- 비트가 지워지고 모든 인터럽트가 비활성화됩니다. 사용자 소프트웨어는 I- 비트에 로직 XNUMX을 작성하여 중첩 된 인터럽트를 활성화 할 수 있습니다. 활성화 된 모든 인터럽트는 현재 인터럽트 루틴을 인터럽트 할 수 있습니다. I- 비트는 인터럽트로부터 복귀 명령어 (RETI)가 실행될 때 자동으로 설정됩니다.

기본적으로 두 가지 유형의 인터럽트가 있습니다. 첫 번째 유형은 인터럽트 플래그를 설정하는 이벤트에 의해 트리거됩니다. 이러한 인터럽트의 경우 인터럽트 처리 루틴을 실행하기 위해 프로그램 카운터가 실제 인터럽트 벡터로 벡터화되고 하드웨어는 해당 인터럽트 플래그를 지 웁니다. 인터럽트 플래그는 지울 플래그 비트 위치에 논리 XNUMX을 작성하여 지울 수도 있습니다. 해당 인터럽트 활성화 비트가 해제되는 동안 인터럽트 조건이 발생하면 인터럽트 플래그가 설정되고 인터럽트가 활성화되거나 소프트웨어에 의해 플래그가 해제 될 때까지 기억됩니다. 마찬가지로, Global Interrupt Enable 비트가 해제되는 동안 하나 이상의 인터럽트 조건이 발생하면 해당 Interrupt Flag (s)가 설정되고 Global Interrupt Enable 비트가 설정 될 때까지 기억 된 다음 우선 순위에 따라 실행됩니다.

두 번째 유형의 인터럽트는 인터럽트 조건이 존재하는 한 트리거됩니다. 이러한 인터럽트에는 반드시 인터럽트 플래그가 없습니다. 인터럽트가 활성화되기 전에 인터럽트 조건이 사라지면 인터럽트가 트리거되지 않습니다.

AVR이 인터럽트에서 종료되면 항상 주 프로그램으로 돌아가서 보류중인 인터럽트가 제공되기 전에 하나 이상의 명령을 실행합니다.

상태 레지스터는 인터럽트 루틴에 들어갈 때 자동으로 저장되지 않으며 인터럽트 루틴에서 복귀 할 때 복원되지 않습니다. 이것은 소프트웨어로 처리되어야합니다.

CLI 명령을 사용하여 인터럽트를 비활성화하면 인터럽트가 즉시 비활성화됩니다. CLI 명령어와 동시에 발생하더라도 CLI 명령어 이후에는 인터럽트가 실행되지 않습니다. 다음 예ample는 시간이 지정된 EEPROM 쓰기 시퀀스 동안 인터럽트를 피하기 위해 이것이 어떻게 사용될 수 있는지 보여줍니다.

어셈블리 코드 예ample
r16에서 SREG; SREG 값 저장

클리; 타임 시퀀스 동안 인터럽트 비활성화

sbi EECR, EEMPE ; EEPROM 쓰기 시작

sbi EECR, EEPE

출력 SREG, r16 ; SREG 값 복원(I-비트)

C 코드 예ample
문자 cSREG;

cSREG = SREG; /* SREG 값 저장 */

/* 타임 시퀀스 동안 인터럽트 비활성화 */

_CLI ();

EECR |= (1<

EECR | = (1 <

SREG = cSREG; /* SREG 값 복원(I-bit) */

SEI 명령어를 사용하여 인터럽트를 활성화할 때 SEI 다음 명령어는 이 예와 같이 보류 중인 인터럽트 전에 실행됩니다.amp르.

어셈블리 코드 예ample
세이 ; 전역 인터럽트 활성화 설정

잠; 인터럽트 대기, 절전 모드 진입

; 참고 : 보류 중이되기 전에 절전 모드로 전환됩니다.

; 인터럽트

C 코드 예ample
_SEI(); /* 전역 인터럽트 활성화 설정 */

_잠(); /* 인터럽트를 기다리며 휴면에 진입 */

/ * 참고 : 보류중인 인터럽트 전에 절전 모드로 들어갑니다. * /

인터럽트 응답 시간

활성화 된 모든 AVR 인터럽트에 대한 인터럽트 실행 응답은 최소 XNUMX 클럭 사이클입니다. XNUMX 클럭 사이클 후에 실제 인터럽트 처리 루틴을위한 프로그램 벡터 주소가 실행됩니다. 이 XNUMX 개의 클럭주기 기간 동안 프로그램 카운터는 스택으로 푸시됩니다. 벡터는 일반적으로 인터럽트 루틴으로의 점프이며이 점프는 XNUMX 클럭 사이클이 걸립니다. 다중 사이클 명령 실행 중에 인터럽트가 발생하면이 명령은 인터럽트가 제공되기 전에 완료됩니다. MCU가 슬립 모드 일 때 인터럽트가 발생하면 인터럽트 실행 응답 시간이 XNUMX 클럭주기 증가합니다. 이 증가는 선택한 절전 모드의 시작 시간에 추가됩니다.

인터럽트 처리 루틴에서 복귀하는 데는 XNUMX 클럭 사이클이 걸립니다. 이 XNUMX 개의 클럭 사이클 동안 프로그램 카운터 (XNUMX 바이트)는 스택에서 다시 팝되고 스택 포인터는 XNUMX 씩 증가하며 SREG의 I- 비트가 설정됩니다.

AVR 추억

이 섹션에서는 ATtiny25 / 45 / 85의 다양한 메모리에 대해 설명합니다. AVR 아키텍처에는 데이터 메모리와 프로그램 메모리 공간의 두 가지 주 메모리 공간이 있습니다. 또한 ATtiny25 / 45 / 85에는 데이터 저장을위한 EEPROM 메모리가 있습니다. 세 가지 메모리 공간은 모두 선형적이고 규칙적입니다.

시스템 내 재 프로그래밍 가능한 플래시 프로그램 메모리

ATtiny25 / 45 / 85에는 프로그램 저장을위한 2 / 4 / 8K 바이트 온칩 시스템 재 프로그래밍 가능한 플래시 메모리가 포함되어 있습니다. 모든 AVR 명령어는 16 비트 또는 32 비트이므로 Flash는 1024/2048/4096 x 16으로 구성됩니다.

플래시 메모리의 내구성은 최소 10,000 회 쓰기 / 지우기주기입니다. ATtiny25 / 45 / 85 프로그램 카운터 (PC)는 10/11/12 비트 너비이므로 1024/2048/4096 프로그램 메모리 위치를 지정합니다. “메모리 프로그램- 147 페이지의 SPI 핀을 사용한 플래시 데이터 직렬 다운로드에 대한 자세한 설명이 포함되어 있습니다.

상수 테이블은 전체 프로그램 메모리 주소 공간 내에서 할당 될 수 있습니다 (LPM – 프로그램 메모리로드 명령어 설명 참조).

그림 5-1. 프로그램 메모리 맵 메모리 맵

SRAM 데이터 메모리

그림 5-2 ATtiny25 / 45 / 85 SRAM 메모리가 어떻게 구성되어 있는지 보여줍니다.

하위 224/352/607 데이터 메모리 위치는 레지스터와 File, I/O 메모리 및 내부 데이터 SRAM. 처음 32개 위치는 레지스터를 나타냅니다. File, 다음 64개 위치는 표준 I/O 메모리, 마지막 128/256/512개 위치는 내부 데이터 SRAM을 지정합니다.

데이터 메모리 커버에 대한 XNUMX가지 다른 주소 지정 모드: 직접, 변위가 있는 간접, 간접, 사전 감소가 있는 간접 및 사후 증가가 있는 간접. 레지스터에서 File, 레지스터 R26 ~ R31에는 간접 주소 지정 포인터 레지스터가 있습니다.

직접 주소 지정은 전체 데이터 공간에 도달합니다.

Indirect with Displacement 모드는 Y- 또는 Z- 레지스터에 의해 주어진 기본 주소에서 63 개의 주소 위치에 도달합니다.

자동 사전 감소 및 사후 증가와 함께 레지스터 간접 주소 지정 모드를 사용할 때 주소 레지스터 X, Y 및 Z가 감소하거나 증가합니다.

ATtiny32/64/128에 있는 256개의 범용 작업 레지스터, 512개의 I/O 레지스터 및 25/45/85바이트의 내부 데이터 SRAM은 이러한 모든 주소 지정 모드를 통해 모두 액세스할 수 있습니다. 레지스터 File 에 설명되어 있습니다 “세대 범용 레지스터 File10페이지.

그림 5-2. 데이터 메모리 맵 메모리 맵 2

데이터 메모리 액세스 타임스

이 섹션에서는 내부 메모리 액세스에 대한 일반적인 액세스 타이밍 개념을 설명합니다. 내부 데이터 SRAM 액세스는 XNUMX개의 clkCPU 사이클에서 수행됩니다. 그림 5-3.

그림 5-3. 온칩 데이터 SRAM 액세스 사이클 온칩 데이터 EEPROM 데이터 메모리

ATtiny25 / 45 / 85에는 128/256/512 바이트의 데이터 EEPROM 메모리가 포함되어 있습니다. 단일 바이트를 읽고 쓸 수있는 별도의 데이터 공간으로 구성됩니다. EEPROM의 내구성은 최소 100,000 회 쓰기 / 지우기 사이클입니다. EEPROM과 CPU 간의 액세스는 EEPROM 주소 레지스터, EEPROM 데이터 레지스터 및 EEPROM 제어 레지스터를 지정하여 다음에서 설명됩니다. 자세한 내용은 151 페이지의 "직렬 다운로드".

EEPROM 읽기 / 쓰기 액세스

EEPROM 액세스 레지스터는 I / O 공간에서 액세스 할 수 있습니다.

EEPROM에 대한 쓰기 액세스 시간은 다음과 같습니다. 5 페이지의 표 1-21. 그러나 자체 타이밍 기능을 사용하면 사용자 소프트웨어가 다음 바이트를 쓸 수 있는 시기를 감지할 수 있습니다. 사용자 코드에 EEPROM을 작성하는 명령이 포함되어 있으면 몇 가지 예방 조치를 취해야 합니다. 과도하게 필터링된 전원 공급 장치에서 VCC는

전원 켜기/끄기. 이로 인해 일정 기간 동안 장치가 볼륨으로 실행됩니다.tage 사용된 클록 주파수에 대해 지정된 최소값보다 낮습니다. 보다 19 페이지의 "EEPROM 손상 방지" 이러한 상황에서 문제를 피하는 방법에 대한 자세한 내용은

의도하지 않은 EEPROM 쓰기를 방지하려면 특정 쓰기 절차를 따라야합니다. 인용하다 “원자 17 페이지의 바이트 프로그래밍 " 그리고 17 페이지의 "분할 바이트 프로그래밍" 이에 대한 자세한 내용은.

EEPROM을 읽을 때 CPU는 다음 명령이 실행되기 전에 XNUMX 클럭 사이클 동안 정지됩니다. EEPROM이 기록 될 때 CPU는 다음 명령이 실행되기 전에 두 클럭 사이클 동안 정지됩니다.

원자 바이트 프로그래밍

원자 바이트 프로그래밍 사용은 가장 간단한 모드입니다. EEPROM에 바이트를 쓸 때 사용자는 주소를 EEAR 레지스터에 쓰고 데이터를 EEDR 레지스터에 써야합니다. EEPMn 비트가 XNUMX 인 경우 EEPE 쓰기 (EEP 쓰기 후 XNUMX주기 이내)는 지우기 / 쓰기 작업을 트리거합니다. 지우기 및 쓰기 사이클은 모두 한 번의 작업으로 수행되며 총 프로그래밍 시간은 5 페이지의 표 1-21. EEPE 비트는 지우기 및 쓰기 작업이 완료 될 때까지 설정된 상태로 유지됩니다. 장치가 프로그래밍으로 바쁜 동안에는 다른 EEPROM 작업을 수행 할 수 없습니다.

분할 바이트 프로그래밍

지우기 및 쓰기 주기를 두 가지 다른 작업으로 분할하는 것이 가능합니다. 이것은 시스템이 제한된 시간 동안 짧은 액세스 시간을 요구하는 경우에 유용할 수 있습니다(일반적으로 전원 공급 장치가tage 넘어짐). 이점을 취하기 위해- tage 이 방법의 경우 쓰기 작업 전에 쓰기 위치를 지워야 합니다. 그러나 지우기와 쓰기 작업이 분리되어 있기 때문에 시스템에서 시간이 중요한 작업을 수행할 수 있을 때(일반적으로 전원을 켠 후) 지우기 작업을 수행할 수 있습니다.

지우다

바이트를 지우려면 주소를 EEAR에 기록해야합니다. EEPMn 비트가 0b01이면 EEPE 쓰기 (EEP 쓰기 후 XNUMX주기 이내)는 지우기 작업 만 트리거합니다 (프로그래밍 시간은 표 5-1 21페이지). EEPE 비트는 지우기 작업이 완료 될 때까지 설정된 상태로 유지됩니다. 장치가 프로그래밍중인 동안에는 다른 EEPROM 작업을 수행 할 수 없습니다.

쓰다

위치를 쓰려면 사용자는 주소를 EEAR에 쓰고 데이터를 EEDR에 써야합니다. EEPMn 비트가 0b10이면 EEPE 쓰기 (EEP 쓰기 후 XNUMX주기 이내)는 쓰기 작업 만 트리거합니다 (프로그래밍 시간은 5 페이지의 표 1-21). EEPE 비트는 쓰기 작업이 완료 될 때까지 설정된 상태로 유지됩니다. 기록 할 위치가 쓰기 전에 지워지지 않은 경우 저장된 데이터는 손실 된 것으로 간주되어야합니다. 장치가 프로그래밍으로 바쁜 동안에는 다른 EEPROM 작업을 수행 할 수 없습니다.

보정 된 오실레이터는 EEPROM 액세스 시간을 측정하는 데 사용됩니다. 오실레이터 주파수가에 설명 된 요구 사항 내에 있는지 확인하십시오. 31 페이지의 "OSCCAL – 오실레이터 교정 레지스터".

다음 코드 예amp파일은 EEPROM의 지우기, 쓰기 또는 원자 쓰기를 위한 하나의 어셈블리와 하나의 C 기능을 보여줍니다. 전amp이 기능을 실행하는 동안 인터럽트가 발생하지 않도록 인터럽트가 제어된다고 가정합니다(예: 인터럽트를 전역적으로 비활성화하여).

어셈블리 코드 예ample
EEPROM_write :

; 이전 쓰기 완료 대기

sbic EECR, EEPE

rjmp EEPROM_쓰기

; 프로그래밍 모드 설정

ldi        r16, (0<<EEPM1)|(0<<EEPM0)

아웃 EECR, r16

; 주소 레지스터에 주소 (r18 : r17) 설정

밖으로 EEARH, r18

아웃 EEARL, r17

; 데이터 레지스터에 데이터 (r19) 쓰기

아웃 EEDR, r19

; EEMPE에 논리적 쓰기

sbi EECR, EEMPE

; EEPE를 설정하여 eeprom 쓰기 시작

sbi EECR, EEPE

후퇴하다

C 코드 예ample
무효 EEPROM_write(부호 없는 문자 ucAddress, 부호 없는 문자 ucData)

{

/* 이전 쓰기 완료 대기 */ while(EECR & (1<

;

/* 프로그래밍 모드 설정 */

EECR = (0 <

/ * 주소 및 데이터 레지스터 설정 * / EEAR = ucAddress;

EEDR = ucData;

/* EEMPE에 논리 XNUMX 쓰기 */

EECR | = (1 <

/ * EEPE를 설정하여 eeprom 쓰기 시작 * /

EECR | = (1 <

}

다음 코드 예amp파일은 EEPROM을 읽기 위한 어셈블리 및 C 함수를 보여줍니다. 전amp이 기능을 실행하는 동안 인터럽트가 발생하지 않도록 인터럽트가 제어된다고 가정합니다.

어셈블리 코드 예ample
EEPROM_read :

; 이전 쓰기 완료 대기

sbic EECR, EEPE

rjmp EEPROM_read

; 주소 레지스터에 주소 (r18 : r17) 설정

밖으로 EEARH, r18

아웃 EEARL, r17

; EERE를 작성하여 eeprom 읽기 시작

sbi EECR,EERE

; 데이터 레지스터에서 데이터 읽기

r16,EEDR

후퇴하다

C 코드 예ample
부호 없는 문자 EEPROM_read(부호 없는 문자 ucAddress)

{

/ * 이전 쓰기 완료 대기 * /

동안 (EECR & (1 <

;

/ * 주소 레지스터 설정 * / EEAR = ucAddress;

/* EERE를 작성하여 eeprom 읽기 시작 */

EECR | = (1 <

/ * 데이터 레지스터에서 데이터 반환 * /

반환 EEDR;

}

EEPROM 손상 방지

VCC가 낮은 기간 동안 EEPROM 데이터가 손상될 수 있습니다.tage는 CPU와 EEPROM이 제대로 작동하기에는 너무 낮습니다. 이러한 문제는 EEPROM을 사용하는 보드 레벨 시스템과 동일하며 동일한 설계 솔루션을 적용해야 합니다.

EEPROM 데이터 손상은 다음과 같은 두 가지 상황으로 인해 발생할 수 있습니다.tage가 너무 낮습니다. 첫째, EEPROM에 대한 일반 쓰기 시퀀스에는 최소 볼륨이 필요합니다.tage 올바르게 작동하려면. 둘째, CPU 자체가 명령을 잘못 실행할 수 있습니다.tage가 너무 낮습니다.

다음 설계 권장 사항을 따르면 EEPROM 데이터 손상을 쉽게 방지 할 수 있습니다.

전원 공급이 충분하지 않은 기간 동안 AVR RESET 활성(낮음) 유지tag이자형. 이것은 내부 BOD(Brown-out Detector)를 활성화하여 수행할 수 있습니다. 내부 BOD의 탐지 수준이 일치하지 않는 경우

필요한 감지 수준, 외부 낮은 VCC 재설정 보호 회로를 사용할 수 있습니다. 쓰기 작업이 진행되는 동안 리셋이 발생하면 전원 공급 장치 vol이 제공되면 쓰기 작업이 완료됩니다.tage로 충분합니다.

I / O 메모리

ATtiny25 / 45 / 85의 I / O 공간 정의는 다음과 같습니다. 200 페이지의 "등록 요약".

모든 ATtiny25 / 45 / 85 I / O 및 주변 장치는 I / O 공간에 배치됩니다. 모든 I / O 위치는 LD / LDS / LDD 및 ST / STS / STD 명령어로 액세스 할 수 있으며 32 개의 범용 작업 레지스터와 I / O 공간간에 데이터를 전송합니다. 주소 범위 0x00 – 0x1F 내의 I / O 레지스터는 SBI 및 CBI 명령어를 사용하여 직접 비트 액세스 할 수 있습니다. 이 레지스터에서는 SBIS 및 SBIC 명령어를 사용하여 단일 비트 값을 확인할 수 있습니다. 자세한 내용은 명령어 세트 섹션을 참조하십시오. I / O 특정 명령 IN 및 OUT을 사용할 때 I / O 주소 0x00 – 0x3F를 사용해야합니다. LD 및 ST 명령어를 사용하여 I / O 레지스터를 데이터 공간으로 지정할 때이 주소에 0x20을 추가해야합니다.

향후 장치와의 호환성을 위해 예약 된 비트에 액세스 할 경우 XNUMX에 기록해야합니다. 예약 된 I / O 메모리 주소는 기록되지 않아야합니다.

상태 플래그 중 일부는 논리 플래그를 작성하여 지워집니다. CBI 및 SBI 명령어는 지정된 비트에서만 작동하므로 이러한 상태 플래그를 포함하는 레지스터에서 사용할 수 있습니다. CBI 및 SBI 명령어는 레지스터 0x00 ~ 0x1F에서만 작동합니다.

I / O 및 주변기기 제어 레지스터는 이후 섹션에서 설명합니다.

등록 설명

EEARH – EEPROM 주소 레지스터

조금 7 6 5 4 3 2 1 0
0x1F EEAR8 EEARH
읽기/쓰기 R R R R R R R 읽기/쓰기
초기값 0 0 0 0 0 0 0 엑스/0

비트 7 : 1 – 해상도 : 예약 된 비트

이러한 비트는 향후 사용을 위해 예약되어 있으며 항상 XNUMX으로 읽습니다.

비트 0 – EEAR8 : EEPROM 주소

이것은 ATtiny85의 가장 중요한 EEPROM 주소 비트입니다. EEPROM이 적은 장치 (예 : ATtiny25 / ATtiny45)에서이 비트는 예약되어 있으며 항상 XNUMX을 읽습니다. EEPROM 주소 레지스터 (EEAR)의 초기 값은 정의되지 않았으므로 EEPROM에 액세스하기 전에 적절한 값을 작성해야합니다.

EEARL – EEPROM 주소 레지스터

조금

0x1E EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0
후면 / 쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기
초기값 X X X X X X X X

비트 7 – EEAR7 : EEPROM 주소

이것은 ATtiny45의 가장 중요한 EEPROM 주소 비트입니다. EEPROM이 적은 장치 (예 : ATtiny25)에서이 비트는 예약되어 있으며 항상 XNUMX을 읽습니다. EEPROM 주소 레지스터 (EEAR)의 초기 값은 정의되지 않았으므로 EEPROM에 액세스하기 전에 적절한 값을 작성해야합니다.

비트 6 : 0 – EEAR [6 : 0] : EEPROM 주소

EEPROM 주소 레지스터의 (하위) 비트입니다. EEPROM 데이터 바이트는 0… (128 / 256 / 512-1) 범위에서 선형으로 주소 지정됩니다. EEAR의 초기 값은 정의되지 않았으므로 EEPROM에 액세스하기 전에 적절한 값을 작성해야합니다.

EEDR – EEPROM 데이터 레지스터

조금 7 6 5 4 3 2 1 0
0x1D EDR7 EDR6 EDR5 EDR4 EDR3 EDR2 EDR1 EDR0 EDR
읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기
초기값 0 0 0 0 0 0 0 0

EEPROM 쓰기 작업의 경우 EEDR 레지스터에는 EEAR 레지스터에서 지정한 주소의 EEPROM에 쓸 데이터가 포함됩니다. EEPROM 읽기 작업의 경우 EEDR에는

EEAR에서 제공 한 주소의 EEPROM.

 

5.5.4 EECR – EEPROM 제어 레지스터

비트 7 6 5 4 3 2 1 0
0x1C        – EEPM1 EEPM0 기분 나쁜 EEMPE 에페 에레 EECR
읽기 / 쓰기 R R R / W 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기
초기 값 0 0 X X 0 0 X 0

비트 7 – 해상도 : 예약 된 비트

이 비트는 향후 사용을 위해 예약되어 있으며 ATtiny0 / 25 / 45에서 항상 85으로 읽습니다. 향후 AVR 장치와의 호환성을 위해 항상이 비트를 XNUMX으로 작성하십시오. 읽은 후이 비트를 가리십시오.

비트 6 – 해상도 : 예약 된 비트

이 비트는 ATtiny25 / 45 / 85에 예약되어 있으며 항상 XNUMX으로 읽습니다.

비트 5 : 4 – EEPM [1 : 0] : EEPROM 프로그래밍 모드 비트

EEPROM 프로그래밍 모드 비트 설정은 EEPE를 쓸 때 트리거되는 프로그래밍 동작을 정의합니다. 하나의 원자 적 작업으로 데이터를 프로그래밍하거나 (이전 값을 지우고 새 값을 프로그래밍) 두 개의 다른 작업에서 지우기 및 쓰기 작업을 분할 할 수 있습니다. 다른 모드에 대한 프로그래밍 시간은 다음과 같습니다. 표 5-1. EEPE가 설정되어있는 동안 EEPMn에 대한 모든 쓰기는 무시됩니다. 재설정하는 동안 EEPROM이 프로그래밍 중이 지 않으면 EEPMn 비트가 0b00으로 재설정됩니다.

표 5-1. EEPROM 모드 비트

EEPM1 EEPM0 프로그래밍 시간 작업
0 0 3.4밀리초 한 번의 작업으로 지우기 및 쓰기 (원자 적 작업)
0 1 1.8밀리초 지우기 만
1 0 1.8밀리초 쓰기 만
1 1 추후 사용을 위해 예약됨

비트 3 – EERIE : EEPROM 준비 인터럽트 활성화

EERIE를 XNUMX에 기록하면 SREG의 I- 비트가 설정된 경우 EEPROM 준비 인터럽트가 활성화됩니다. EERIE를 XNUMX으로 쓰면 인터럽트가 비활성화됩니다. EEPROM Ready Interrupt는 비 휘발성 메모리가 프로그래밍 할 준비가되면 지속적인 인터럽트를 생성합니다.

비트 2 – EEMPE : EEPROM 마스터 프로그램 활성화

EEMPE 비트는 EEPE를 하나에 쓰는 것이 효과가 있는지 여부를 결정합니다.

EEMPE가 설정되면 XNUMX 클럭 사이클 내에서 EEPE를 설정하면 선택한 주소에서 EEPROM이 프로그래밍됩니다. EEMPE가 XNUMX이면 EEPE를 설정해도 효과가 없습니다. EEMPE가 소프트웨어에 의해 하나에 기록되면 하드웨어는 XNUMX 개의 클록 사이클 후에 비트를 XNUMX으로 지 웁니다.

비트 1 – EEPE : EEPROM 프로그램 활성화

EEPROM 프로그램 활성화 신호 EEPE는 EEPROM에 대한 프로그래밍 활성화 신호입니다. EEPE가 기록되면 EEPROM은 EEPMn 비트 설정에 따라 프로그래밍됩니다. EEMPE 비트는 논리 비트가 EEPE에 기록되기 전에 하나에 기록되어야합니다. 그렇지 않으면 EEPROM 쓰기가 발생하지 않습니다. 쓰기 액세스 시간이 경과하면 EEPE 비트가 하드웨어에 의해 지워집니다. EEPE가 설정되면 CPU는 다음 명령이 실행되기 전에 두 사이클 동안 정지됩니다.

비트 0 – EERE : EEPROM 읽기 활성화

EEPROM 읽기 활성화 신호 – EERE –는 EEPROM에 대한 읽기 스트로브입니다. EEAR 레지스터에 올바른 주소가 설정되면 EEPROM 읽기를 트리거하기 위해 EERE 비트를 XNUMX에 기록해야합니다. EEPROM 읽기 액세스는 하나의 명령을 사용하며 요청 된 데이터를 즉시 사용할 수 있습니다. EEPROM을 읽으면 CPU는 다음 명령이 실행되기 전에 XNUMX주기 동안 정지됩니다. 사용자는 읽기 작업을 시작하기 전에 EEPE 비트를 폴링해야합니다. 쓰기 작업이 진행 중이면 EEPROM을 읽거나 EEAR 레지스터를 변경할 수 없습니다.

시스템 시계 및 시계 옵션

클록 시스템 및 분포

클록 분포

CPU 클럭

CPU 클럭은 AVR 코어의 작동과 관련된 시스템 부분으로 라우팅됩니다. 전amp이러한 모듈의 파일은 범용 레지스터입니다. File, 상태 레지스터 및 스택 포인터를 보유하는 데이터 메모리. CPU 클럭을 멈추면 코어가 일반 연산과 계산을 수행하지 못하게 됩니다.

I / O 클록 – clkI / O

I / O 클럭은 타이머 / 카운터와 같은 대부분의 I / O 모듈에서 사용됩니다. I / O 클럭은 외부 인터럽트 모듈에서도 사용되지만 일부 외부 인터럽트는 비동기 논리에 의해 감지되므로 I / O 클럭이 중지 된 경우에도 이러한 인터럽트를 감지 할 수 있습니다.

플래시 클록 – clkFLASH

플래시 시계는 플래시 인터페이스의 작동을 제어합니다. 플래시 클럭은 일반적으로 CPU 클럭과 동시에 활성화됩니다.

ADC 클록 – clkADC

ADC는 전용 클록 도메인과 함께 제공됩니다. 이를 통해 디지털 회로에서 생성되는 노이즈를 줄이기 위해 CPU 및 I / O 클럭을 중지 할 수 있습니다. 이는보다 정확한 ADC 변환 결과를 제공합니다.

빠른 주변기기 클록 생성을위한 내부 PLL – clkPCK

ATtiny25 / 45 / 85의 내부 PLL은 소스 입력에서 곱한 8 배의 클럭 주파수를 생성합니다. 기본적으로 PLL은 내부 8.0MHz RC 발진기의 출력을 소스로 사용합니다. 또는 PLLCSR의 비트 LSM이 설정되면 PLL은 RC 발진기의 출력을 64로 나눈 값을 사용합니다. 따라서 PLL의 출력, 빠른 주변 클럭은 1MHz입니다. 빠른 주변기기 클록 또는 그로부터 미리 스케일링 된 클록은 Timer / CounterXNUMX의 클록 소스 또는 시스템 클록으로 선택할 수 있습니다. 보다 그림 6-2. 빠른 주변 장치 클록의 주파수는 PLLCSR의 LSM이 설정될 때 32로 나누어져 XNUMXMHz의 클록 주파수가 됩니다. PLLCLK가 시스템 클럭으로 사용되는 경우 LSM을 설정할 수 없습니다.

그림 6-2. PCK 클럭킹 시스템. PCK 클로킹

PLL은 RC 오실레이터에 잠겨 있으며 OSCCAL 레지스터를 통해 RC 오실레이터를 조정하면 동시에 빠른 주변 장치 클럭도 조정됩니다. 그러나 RC 발진기가 8MHz보다 높은 주파수로 이동하더라도 빠른 주변 클록 주파수는 85MHz (최악의 경우)에서 포화되고 최대 주파수에서 계속 발진합니다. 이 경우 PLL은 RC 발진기 클록으로 더 이상 잠기지 않습니다. 따라서 PLL을 올바른 작동 범위에 유지하기 위해 OSCCAL 조정을 8MHz보다 높은 주파수로 사용하지 않는 것이 좋습니다.

내부 PLL은 다음과 같은 경우에 활성화됩니다.

레지스터 PLLCSR의 PLLE 비트가 설정됩니다.

CKSEL 퓨즈는 '0001'로 프로그래밍되어 있습니다.

CKSEL 퓨즈는 '0011'로 프로그래밍되어 있습니다.

PLLCSR 비트 PLOCK은 PLL이 잠겨 있을 때 설정됩니다. 내부 RC 발진기와 PLL은 전원 차단 및 대기 절전 모드에서 모두 꺼집니다.

ATtiny15 호환 모드의 내부 PLL

ATtiny25 / 45 / 85는 ATtiny15 사용자를위한 마이그레이션 장치이므로 이전 버전과의 호환성을위한 ATtiny15 호환 모드가 있습니다. ATtiny15 호환 모드는 CKSEL 퓨즈를 '0011'로 프로그래밍하여 선택합니다.

ATtiny15 호환 모드에서 내부 RC 발진기의 주파수는 6.4MHz까지 조정되고 PLL의 곱셈 계수는 4x로 설정됩니다. 보다 그림 6-3. 이러한 조정을 통해 클럭킹 시스템은 ATtiny15와 호환되며 결과적으로 빠른 주변기기 클럭은 25.6MHz의 주파수를 갖습니다 (ATtiny15와 동일).

그림 6-3. ATtiny15 호환 모드의 PCK 클럭킹 시스템. 클로킹 시스템

클록 소스

장치에는 아래와 같이 플래시 퓨즈 비트로 선택할 수있는 다음 클럭 소스 옵션이 있습니다. 선택한 소스의 클럭이 AVR 클럭 생성기에 입력되고 적절한 모듈로 라우팅됩니다.

표 6-1. 장치 클럭킹 옵션 선택

장치 클럭킹 옵션 셀[3:0](1)
외부 시계 (보다 26페이지) 0000
고주파 PLL 클록 (보다 26페이지) 0001
보정 된 내부 발진기 (보다 27페이지) 0010(2)
보정 된 내부 발진기 (보다 27페이지) 0011(3)
내부 128kHz 발진기 (보다 28페이지) 0100
저주파 수정 발진기 (보다 29페이지) 0110
수정 발진기 / 세라믹 공진기 (보다 29페이지) 1000 – 1111
예약된 0101, 0111

모든 퓨즈에 대해 "1"은 프로그래밍되지 않았 음을 의미하고 "0"은 프로그래밍됨을 의미합니다.

장치는이 옵션이 선택된 상태로 배송됩니다.

그러면 시스템 클럭이 15로 나뉘어 1.6MHz 클럭 주파수가 생성되는 ATtinyXNUMX 호환 모드가 선택됩니다. 자세한 정보는 다음을 참조하십시오. 27 페이지의 "보정 된 내부 발진기".

각 클럭킹 옵션에 대한 다양한 선택은 다음 섹션에서 제공됩니다. CPU가 Power-down에서 깨어 나면 선택한 클럭 소스가 시작 시간에 사용되어 명령 실행이 시작되기 전에 안정적인 오실레이터 작동을 보장합니다. CPU가 리셋에서 시작되면 정상 작동을 시작하기 전에 전원이 안정적인 수준에 도달 할 수 있도록 추가 지연이 있습니다. Watchdog Oscillator는 시작 시간의이 실시간 부분을 타이밍하는 데 사용됩니다. 각 타임 아웃에 사용되는 WDT 오실레이터 사이클 수는 다음과 같습니다. 표 6-2.

표 6-2. 감시 발진기 주기 수

Typ 타임 아웃 사이클 수
4밀리초 512
64밀리초 8천(8,192)

외부 시계

외부 클럭 소스에서 장치를 구동하려면 다음과 같이 CLKI를 구동해야합니다. 그림 6-4. 외부 클록에서 장치를 실행하려면 CKSEL 퓨즈를 "00"으로 프로그래밍해야합니다.

그림 6-4. 외부 클럭 드라이브 구성

그림6.4

이 클럭 소스를 선택하면 시작 시간은 다음과 같이 SUT 퓨즈에 의해 결정됩니다. 표 6-3.

표 6-3. 외부 클럭 선택을 위한 시작 시간

[1:0] XNUMX초 전원 차단 후 시작 시간 재설정으로 인한 추가 지연 추천 사용법
00 6 CK 14CK BOD 활성화
01 6 CK 14CK + 4ms 빠르게 상승하는 힘
10 6 CK 14CK + 64ms 천천히 상승하는 힘
11 예약된

외부 클럭 적용시 MCU의 안정적인 동작을 위해 적용된 클럭 주파수의 갑작스런 변화를 피해야합니다. 한 클록 사이클에서 다음 클록 사이클로 2 % 이상의 주파수 변동은 예측할 수없는 동작을 유발할 수 있습니다. 클록 주파수가 변경되는 동안 MCU가 리셋 상태로 유지되도록해야합니다.

시스템 클럭 프리 세일은 안정적인 작동을 보장하면서 내부 클럭 주파수의 런타임 변경을 구현하는 데 사용할 수 있습니다. 인용하다 31 페이지의 "시스템 클록 프리스케일러" 자세한 내용은.

고주파 PLL 클록

주변 타이머 / 카운터 64 사용 및 시스템 클록 소스를 위해 RC 발진기에 고정 된 공칭 1MHz 클록 속도를 제공하는 내부 PLL이 있습니다. 시스템 클럭 소스로 선택되면 CKSEL 퓨즈를 '0001'로 프로그래밍하여 다음과 같이 XNUMX 개로 나눕니다. 표 6-4.

표 6-4. 고주파수 PLL 클록 작동 모드

셀[3:0] 공칭 주파수
0001 16MHz

이 클럭 소스를 선택하면 시작 시간은 그림과 같이 SUT 퓨즈에 의해 결정됩니다. 표 6-5.

표 6-5. 고주파수 PLL 클록의 시작 시간

[1:0] XNUMX초 전원 차단 후 시작 시간 파워 온 리셋으로 인한 추가 지연(VCC = 5.0V) 추천 사용법
00 14CK + 1K (1024) CK + 4ms 4밀리초 BOD 활성화

표 6-5. 고주파수 PLL 클록의 시작 시간

[1:0] XNUMX초 전원 차단 후 시작 시간 파워 온 리셋으로 인한 추가 지연(VCC = 5.0V) 추천 사용법
01 14CK + 16K (16384) CK + 4ms 4밀리초 빠르게 상승하는 힘
10 14CK + 1K (1024) CK + 64ms 4밀리초 천천히 상승하는 힘
11 14CK + 16K (16384) CK + 64ms 4밀리초 천천히 상승하는 힘

보정 된 내부 발진기

기본적으로 내부 RC 발진기는 약 8.0MHz 클록을 제공합니다. 비록 권tage 및 온도에 따라 이 시계는 사용자가 매우 정확하게 보정할 수 있습니다. 보다 “보정 된 내부 RC 오실레이터 정확도 정확성”164 페이지 그리고 192 페이지의 "내부 발진기 속도" 자세한 사항은. 장치는 프로그래밍 된 CKDIV8 퓨즈와 함께 배송됩니다. 보다 31 페이지의 "시스템 클록 프리스케일러" 자세한 내용은.

이 클럭은 그림과 같이 CKSEL 퓨즈를 프로그래밍하여 시스템 클럭으로 선택할 수 있습니다. 페이지의 표 6-6

27. 선택하면 외부 구성 요소없이 작동합니다. 재설정하는 동안 하드웨어는 사전 프로그래밍 된 보정 값을 OSCCAL 레지스터에로드하여 RC 오실레이터를 자동으로 보정합니다. 이 교정의 정확도는 공장 교정으로 표시됩니다. 21 페이지의 표 2-164.

SW에서 OSCCAL 레지스터를 변경하면 다음을 참조하십시오. 31 페이지의 "OSCCAL – 오실레이터 교정 레지스터", 공장 보정을 사용하는 것보다 더 높은 보정 정확도를 얻을 수 있습니다. 이 보정의 정확도는 사용자 보정으로 표시됩니다. 21 페이지의 표 2-164.

이 오실레이터가 칩 클럭으로 사용될 때 워치 독 오실레이터는 여전히 워치 독 타이머와 리셋 타임 아웃에 사용됩니다. 사전 프로그래밍 된 보정 값에 대한 자세한 내용은 섹션을 참조하십시오. “캘리- bration 바이트”(페이지 150).

내부 발진기는 그림과 같이 CKSEL 퓨즈를 "6.4"에 기록하여 0011MHz 클록을 제공하도록 설정할 수도 있습니다. 표 6-6 이하. 이 설정은 ATtiny15 호환 모드로 참조되며 ATtiny6.4에서와 같이 15MHz에서 보정 된 클럭 소스를 제공하기위한 것입니다. ATtiny15 호환 모드에서 PLL은 6.4MHz에서 실행되는 내부 발진기를 사용하여 타이머 / 카운터 25.6에 대한 1MHz 주변 클럭 신호를 생성합니다. “8 비트 타이머 / 카운터 1 인치 15 페이지의 ATtiny95 모드”). 이 작동 모드에서 6.4MHz 클록 신호는 항상 1.6로 나누어 져 XNUMXMHz 시스템 클록을 제공합니다.

표 6-6. 내부 보정 RC 발진기 작동 모드

셀[3:0] 공칭 주파수
0010(1) 8.0MHz
0011(2) 6.4MHz

장치는이 옵션이 선택된 상태로 배송됩니다.

이 설정은 시스템 클럭이 15로 나뉘어 1.6MHz 클럭 주파수가되는 ATtinyXNUMX 호환 모드를 선택합니다.

보정 된 8MHz 내부 발진기가 클럭 소스로 선택되면 시작 시간은 다음과 같이 SUT 퓨즈에 의해 결정됩니다. 표 6-7 아래에.

표 6-7. 내부 보정 RC 발진기 클록의 시작 시간

[1:0] XNUMX초 전원 차단 후 시작 시간 리셋으로 인한 추가 지연(VCC = 5.0V) 추천 사용법
00 6 CK 14CK(1) BOD 활성화
01 6 CK 14CK + 4ms 빠르게 상승하는 힘
10(2) 6 CK 14CK + 64ms 천천히 상승하는 힘
11 예약된

1. RSTDISBL 퓨즈가 프로그래밍 된 경우이 시작 시간은 프로그래밍 모드로 들어갈 수 있도록 14CK + 4ms로 증가합니다.
2. 장치는이 옵션이 선택된 상태로 배송됩니다.

ATtiny15 호환 모드에서 시작 시간은 다음과 같이 SUT 퓨즈에 의해 결정됩니다. 표 6-8 아래에.

표 6-8. 내부 보정 RC 발진기 클록의 시작 시간(ATtiny15 모드에서)

[1:0] XNUMX초 전원 차단 후 시작 시간 리셋으로 인한 추가 지연(VCC = 5.0V) 추천 사용법
00 6 CK 14CK + 64ms
01 6 CK 14CK + 64ms
10 6 CK 14CK + 4ms
11 1 CK 14CK(1)

참고: RSTDISBL 퓨즈가 프로그래밍된 경우 프로그래밍 모드에 들어갈 수 있도록 이 시작 시간이 14CK + 4ms로 증가합니다.

요약하면 ATtiny15 호환 모드에 대한 자세한 내용은 섹션에서 찾을 수 있습니다. "포트 B (PB5 : PB0)"켜짐 2페이지15 페이지의 "ATtiny24 호환 모드의 내부 PLL"“ATtiny8 모드의 1 비트 타이머 / 카운터 15”on 95페이지140 페이지의 "debugWIRE의 제한 사항"150 페이지의 "캘리브레이션 바이트" 그리고 테이블에서 “시계 프리스케일러 33 페이지의 선택”.

내부 128kHz 발진기

128kHz 내부 발진기는 128kHz의 클록을 제공하는 저전력 발진기입니다. 주파수는 3V 및 25°C에서 공칭입니다. 이 클록은 CKSEL 퓨즈를 "0100"으로 프로그래밍하여 시스템 클록으로 선택할 수 있습니다.

이 클럭 소스를 선택하면 시작 시간은 다음과 같이 SUT 퓨즈에 의해 결정됩니다. 표 6-9.

표 6-9. 128kHz 내부 발진기의 시작 시간

[1:0] XNUMX초 전원 차단 후 시작 시간 재설정으로 인한 추가 지연 추천 사용법
00 6 CK 14CK(1) BOD 활성화
01 6 CK 14CK + 4ms 빠르게 상승하는 힘
10 6 CK 14CK + 64ms 천천히 상승하는 힘
11 예약된

참고: RSTDISBL 퓨즈가 프로그래밍된 경우 프로그래밍 모드에 들어갈 수 있도록 이 시작 시간이 14CK + 4ms로 증가합니다.

저주파 수정 발진기

32.768kHz 시계 크리스탈을 장치의 클록 소스로 사용하려면 CKSEL 퓨즈를 '0110'으로 설정하여 저주파 수정 발진기를 선택해야합니다. 크리스탈은 그림과 같이 연결되어야합니다. 그림 6-5. 32.768 kHz crysal에 적합한 부하 커패시턴스를 찾으려면 제조업체의 데이터 시트를 참조하십시오.

이 오실레이터를 선택하면 시작 시간은 그림과 같이 SUT 퓨즈에 의해 결정됩니다. 표 6-10.

표 6-10. 저주파 수정 발진기 클록 선택을 위한 시작 시간

[1:0] XNUMX초 전원 차단 후 시작 시간 리셋으로 인한 추가 지연(VCC = 5.0V) 추천 사용법
00 1K(1024) CK(1) 4밀리초 빠른 상승 전력 또는 BOD 활성화
01 1K(1024) CK(1) 64밀리초 천천히 상승하는 힘
10 32K(32768) CK 64밀리초 시동시 안정적인 주파수
11 예약된

참고: 이 옵션은 시작 시 주파수 안정성이 중요하지 않은 경우에만 사용해야 합니다.

저주파 수정 발진기는 내부 부하 커패시턴스를 제공합니다. 표 6-11 각 TOSC 핀에서.

표 6-11. 저주파 수정 발진기의 커패시턴스

장치 32kHz Osc. 유형 캡 (Xtal1 / Tosc1) 캡 (Xtal2 / Tosc2)
ATtiny25 / 45 / 85 시스템 Osc. 16pF 6pF

수정 발진기 / 세라믹 공진기

XTAL1 및 XTAL2는 각각 반전의 입력 및 출력입니다. amp그림과 같이 온칩 발진기로 사용하도록 구성할 수 있는 liifier 그림 6-5. 석영 크리스탈 또는 세라믹 공진기가 사용될 수 있습니다.

C1과 C2는 크리스털과 공진기 모두에 대해 항상 같아야 합니다. 커패시터의 최적 값은 사용 중인 크리스털 또는 공진기, 부유 커패시턴스의 양, 환경의 전자기 노이즈에 따라 다릅니다. 크리스탈과 함께 사용할 커패시터를 선택하기 위한 몇 가지 초기 지침은 다음과 같습니다. 표 6-12 이하. 세라믹 공진기의 경우 제조업체에서 제공 한 커패시터 값을 사용해야합니다.

표 6-12. 수정 발진기 작동 모드

셀[3:1] 주파수 범위 (MHz) 크리스탈 (pF)과 함께 사용하기위한 커패시터 C1 및 C2의 권장 범위
100(1) 0.4 – 0.9
101 0.9 – 3.0 12 – 22
110 3.0 – 8.0 12 – 22
111 8.0 – 12 – 22

참고: 이 옵션은 크리스탈과 함께 사용해서는 안 되며 세라믹 공진기와만 사용해야 합니다.

오실레이터는 각각 특정 주파수 범위에 최적화 된 세 가지 모드로 작동 할 수 있습니다. 작동 모드는 그림과 같이 퓨즈 CKSEL [3 : 1]에 의해 선택됩니다. 표 6-12.

CKSEL0 퓨즈는 SUT [1 : 0] 퓨즈와 함께 다음과 같이 시작 시간을 선택합니다. 표 6-13.

표 6-13. 수정 발진기 클록 선택을 위한 시작 시간

CKSEL0 입니다. [1:0] XNUMX초 전원 차단 후 시작 시간 재설정으로 인한 추가 지연 추천 사용법
0 00 258 CK(1) 14CK + 4ms 세라믹 공진기, 빠르게 상승하는 전력
0 01 258 CK(1) 14CK + 64ms 세라믹 공진기, 천천히 상승하는 전력
0 10 1K(1024) CK(2) 14CK 세라믹 공진기, BOD 사용
0 11 1K (1024) CK(2) 14CK + 4ms 세라믹 공진기, 빠르게 상승하는 전력
1 00 1K (1024) CK(2) 14CK + 64ms 세라믹 공진기, 천천히 상승하는 전력
1 01 16K(16384) CK 14CK 수정 발진기, BOD 사용
1 10 16K(16384) CK 14CK + 4ms 수정 발진기, 빠르게 상승하는 전력
1 11 16K(16384) CK 14CK + 64ms 수정 발진기, 천천히 상승하는 힘

노트

이 옵션은 장치의 최대 주파수에 가깝게 작동하지 않고 시작시 주파수 안정성이 애플리케이션에 중요하지 않은 경우에만 사용해야합니다. 이 옵션은 크리스탈에 적합하지 않습니다.

이러한 옵션은 세라믹 공진기와 함께 사용하기위한 것으로 시동시 주파수 안정성을 보장합니다. 또한 장치의 최대 주파수에 가깝게 작동하지 않고 시작시 주파수 안정성이 응용 분야에 중요하지 않은 경우 크리스탈과 함께 사용할 수 있습니다.

기본 클록 소스

장치는 CKSEL = "0010", SUT = "10" 및 CKDIV8이 프로그래밍된 상태로 배송됩니다. 따라서 기본 클록 소스 설정은 가장 긴 시작 시간과 8의 초기 시스템 클록 프리스케일링으로 8MHz에서 실행되는 내부 RC 오실레이터로 결과적으로 1.0MHz 시스템 클록이 됩니다. 이 기본 설정은 모든 사용자가 In-System 또는 High-voltag전자 프로그래머.

시스템 클록 프리스케일러

ATtiny25 / 45 / 85 시스템 시계는 다음을 설정하여 나눌 수 있습니다. 32 페이지의 "CLKPR – 클럭 프리 스케일 레지스터". 이 기능은 처리 능력에 대한 요구 사항이 낮을 때 전력 소비를 줄이는 데 사용할 수 있습니다. 이는 모든 클록 소스 옵션과 함께 사용할 수 있으며 CPU 및 모든 동기식 주변 장치의 클록 주파수에 영향을 미칩니다. clkI/O, clkADC, clkCPU 및 clkFLASH는 다음과 같이 인수로 나뉩니다. 6 페이지의 표 15-33.

전환 시간

프리스케일러 설정 사이를 전환 할 때 시스템 클럭 프리스케일러는 클럭 시스템에서 글리치가 발생하지 않으며 중간 주파수가 이전 설정에 해당하는 클럭 주파수 나 새 설정에 해당하는 클럭 주파수보다 높지 않도록합니다.

프리스케일러를 구현하는 리플 카운터는 분할되지 않은 클록의 주파수에서 실행되며, 이는 CPU의 클록 주파수보다 빠를 수 있습니다. 따라서 프리스케일러의 상태를 확인할 수 없습니다. 읽기 가능하더라도 한 클록 분할에서 다른 클록 분할로 전환하는 데 걸리는 정확한 시간을 정확하게 예측할 수 없습니다.

CLKPS 값이 기록 된 시점부터 새 클록 주파수가 활성화되기 전에 T1 + T2 및 T1 + 2 * T2 사이에 걸립니다. 이 간격에서 2 개의 활성 클록 에지가 생성됩니다. 여기서 T1은 이전 클럭 기간이고 T2는 새로운 프리스케일러 설정에 해당하는 기간입니다.

클록 출력 버퍼

장치는 CLKO 핀에서 시스템 클록을 출력 할 수 있습니다 (XTAL2 핀으로 사용되지 않는 경우). 출력을 활성화하려면 CKOUT 퓨즈를 프로그래밍해야합니다. 이 모드는 칩 클럭이 시스템의 다른 회로를 구동하는 데 사용되는 경우에 적합합니다. 리셋 중에는 클럭이 출력되지 않으며 퓨즈가 프로그래밍되면 I / O 핀의 정상 작동이 무시됩니다. 클럭이 CLKO에서 출력 될 때 내부 RC 오실레이터, WDT 오실레이터, PLL 및 외부 클럭 (CLKI)을 선택할 수 있습니다. 수정 발진기 (XTAL1, XTAL2)는 CLKO의 클록 출력에 사용할 수 없습니다. System Clock Prescaler를 사용하는 경우 분할 된 시스템 클록이 출력됩니다.

등록 설명

OSCCAL – 발진기 교정 레지스터

조금 7 6 5 4 3 2 1 0
0x31 칼7 칼6 칼5 칼4 칼3 칼2 칼1 칼0 OSCCAL
읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기

비트 7 : 0 – CAL [7 : 0] : 오실레이터 교정 값

오실레이터 교정 레지스터는 오실레이터 주파수에서 공정 변동을 제거하기 위해 교정 된 내부 RC 오실레이터를 트리밍하는 데 사용됩니다. 칩 재설정 중에 사전 프로그래밍 된 보정 값이이 레지스터에 자동으로 기록되어에 지정된대로 공장 보정 된 주파수를 제공합니다. 21 페이지의 표 2-164. 애플리케이션 소프트웨어는이 레지스터를 작성하여 발진기 주파수를 변경할 수 있습니다. 발진기는 다음에 지정된 주파수로 교정 할 수 있습니다. 21 페이지의 표 2-164. 이 범위를 벗어난 교정은 보장되지 않습니다.

이 발진기는 EEPROM 및 플래시 쓰기 액세스 시간을 측정하는 데 사용되며이 쓰기 시간은 그에 따라 영향을받습니다. EEPROM 또는 플래시가 기록 된 경우 8.8MHz 이상으로 보정하지 마십시오. 그렇지 않으면 EEPROM 또는 플래시 쓰기가 실패 할 수 있습니다.

CAL7 비트는 오실레이터의 작동 범위를 결정합니다. 이 비트를 0으로 설정하면 가장 낮은 주파수 범위가 제공되고이 비트를 1로 설정하면 가장 높은 주파수 범위가 제공됩니다. 두 주파수 범위가 겹칩니다. 즉, OSCCAL = 0x7F 설정은 OSCCAL = 0x80보다 높은 주파수를 제공합니다.

CAL [6 : 0] 비트는 선택한 범위 내에서 주파수를 조정하는 데 사용됩니다. 0x00으로 설정하면 해당 범위에서 가장 낮은 주파수를 제공하고 0x7F로 설정하면 해당 범위에서 가장 높은 주파수를 제공합니다.

MCU의 안정적인 작동을 보장하려면 교정 값을 조금씩 변경해야합니다. 한주기에서 다음 주기로 주파수가 2 % 이상 변하면 예상치 못한 동작이 발생할 수 있습니다. OSCCAL의 변경은 각 보정에 대해 0x20을 초과하지 않아야합니다. 클럭 주파수가 변경되는 동안 MCU가 리셋 상태로 유지되도록해야합니다.

표 6-14. 내부 RC 발진기 주파수 범위

OSCCAL 값 공칭 주파수에 대한 일반적인 최저 주파수 공칭 주파수에 대한 일반적인 최고 주파수
0x00 50% 100%
0x3F 75% 150%
0x7F 100% 200%

CLKPR – 클록 프리 스케일 레지스터

조금 7 6 5 4 3 2 1 0
0x26 CLKPCE CLKPS3 CLKPS2 CLKPS1 CLKPS0 CLKPR
읽기/쓰기 읽기/쓰기 R R R 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기

초기 값 0 0 0 0 비트 설명 참조

비트 7 – CLKPCE : 클록 프리스케일러 변경 활성화

CLKPCE 비트는 CLKPS 비트를 변경할 수 있도록 논리 XNUMX에 기록되어야합니다. CLKPCE 비트는 CLKPR의 다른 비트가 동시에 XNUMX에 기록 될 때만 업데이트됩니다. CLKPCE는 기록 된 후 또는 CLKPS 비트가 기록 될 때 하드웨어에서 XNUMX주기에 의해 지워집니다. 이 타임 아웃 기간 내에 CLKPCE 비트를 다시 쓰는 것은 타임 아웃 기간을 연장하거나 CLKPCE 비트를 지우지 않습니다.

비트 6 : 4 – 해상도 : 예약 된 비트

이 비트는 ATtiny25 / 45 / 85에서 예약 된 비트이며 항상 XNUMX으로 읽습니다.

비트 3 : 0 – CLKPS [3 : 0] : 클럭 프리스케일러 선택 비트 3 – 0

이 비트는 선택된 클럭 소스와 내부 시스템 클럭 사이의 분할 인자를 정의합니다. 이러한 비트는 애플리케이션 요구 사항에 맞게 클록 주파수를 변경하기 위해 런타임에 기록 될 수 있습니다. 분할기가 MCU에 대한 마스터 클록 입력을 분할하므로 분할 계수를 사용하면 모든 동기 주변 장치의 속도가 감소합니다. 나눗셈 계수는 표 6-15.

의도하지 않은 클럭 주파수 변경을 방지하려면 CLKPS 비트를 변경하는 특수 쓰기 절차를 따라야합니다.

CLKPCE (Clock Prescaler Change Enable) 비트를 XNUMX에 쓰고 CLKPR의 다른 모든 비트를 XNUMX에 씁니다.

XNUMX주기 내에서 CLKPCE에 XNUMX을 쓰는 동안 CLKPS에 원하는 값을 씁니다.

쓰기 절차가 중단되지 않도록 프리스케일러 설정을 변경할 때 인터럽트를 비활성화해야합니다.

CKDIV8 퓨즈는 CLKPS 비트의 초기값을 결정합니다. CKDIV8이 프로그래밍되지 않은 경우 CLKPS 비트는 "0000"으로 재설정됩니다. CKDIV8이 프로그래밍된 경우 CLKPS 비트는 "0011"로 재설정되어 시작 시 분할 계수 8을 제공합니다. 이 기능은 선택한 클럭 소스의 주파수가 현재 작동 조건에서 장치의 최대 주파수보다 높은 경우에 사용해야 합니다. CKDIVXNUMX 퓨즈 설정에 관계없이 모든 값을 CLKPS 비트에 쓸 수 있습니다. 애플리케이션 소프트웨어는 충분한 분할 요소가 있는지 확인해야 합니다.

선택한 클럭 소스가 현재 작동 조건에서 장치의 최대 주파수보다 높은 주파수를 갖는 경우 선택됩니다. 장치는 프로그래밍 된 CKDIV8 퓨즈와 함께 배송됩니다.

표 6-15. 클럭 프리스케일러 선택

CLKPS3 CLKPS2 CLKPS1 CLKPS0 클록 분할 계수
0 0 0 0 1
0 0 0 1 2
0 0 1 0 4
0 0 1 1 8
0 1 0 0 16
0 1 0 1 32
0 1 1 0 64
0 1 1 1 128
1 0 0 0 256
1 0 0 1 예약된
1 0 1 0 예약된
1 0 1 1 예약된
1 1 0 0 예약된
1 1 0 1 예약된
1 1 1 0 예약된
1 1 1 1 예약된

참고: 프리스케일러는 ATtiny15 호환 모드에서 비활성화되며 CLKPR에 기록하거나 CKDIV8 퓨즈를 프로그래밍해도 시스템 클럭(항상 1.6MHz)에 영향을 미치지 않습니다.

전원 관리 및 절전 모드

고성능 및 업계 최고의 코드 효율성으로 인해 AVR 마이크로 컨트롤러는 저전력 애플리케이션에 이상적인 선택입니다. 또한 절전 모드를 사용하면 애플리케이션이 MCU에서 사용하지 않는 모듈을 종료하여 전력을 절약 할 수 있습니다. AVR은 사용자가 애플리케이션의 요구 사항에 맞게 전력 소비를 조정할 수 있도록 다양한 절전 모드를 제공합니다.

수면 모드

6 페이지의 그림 1-23 ATtiny25 / 45 / 85에서 다양한 클록 시스템과 그 분포를 보여줍니다. 이 그림은 적절한 절전 모드를 선택하는 데 도움이됩니다. 표 7-1 다양한 수면 모드와 깨우기 소스를 보여줍니다.

표 7-1. 다양한 슬립 모드에서의 액티브 클록 도메인 및 웨이크업 소스

활성 클록 도메인 발진기 웨이크 업 소스
수면 모드 clkCPU clk플래시 clkIO clkADC clkPCK 메인 클럭 소스 활성화 INT0 및 핀 변경 SPM / EEPROM

준비가 된

 

USI 시작 조건

애드디씨 기타 I/O 지키는 개 방해하다
게으른 X X X X X X X X X X
ADC 잡음 감소 X X X(1) X X X X
전력 다운 X(1) X X

참고: INT0의 경우 레벨 인터럽트만 해당됩니다.

세 가지 절전 모드 중 하나에 들어가려면 MCUCR의 SE 비트를 논리 1에 기록하고 SLEEP 명령을 실행해야합니다. MCUCR 레지스터의 SM [0 : XNUMX] 비트는 SLEEP 명령에 의해 활성화 될 절전 모드 (유휴, ADC 잡음 감소 또는 전원 차단)를 선택합니다. 보다 표 7-2 요약을 위해.

MCU가 슬립 모드에 있는 동안 활성화된 인터럽트가 발생하면 MCU가 깨어납니다. 그런 다음 MCU는 시작 시간 외에 XNUMX사이클 동안 정지되고 인터럽트 루틴을 실행하며 SLEEP 다음 명령어부터 실행을 재개합니다. 레지스터의 내용 File 및 SRAM은 장치가 절전 모드에서 깨어나도 변경되지 않습니다. 슬립 모드에서 리셋이 발생하면 MCU가 깨어나서 리셋 벡터에서 실행합니다.

참고: 레벨 트리거 인터럽트가 웨이크업에 사용되는 경우 변경된 레벨은 MCU를 웨이크업하고 MCU가 인터럽트 서비스 루틴에 들어가기 위해 일정 시간 동안 유지되어야 합니다. 보다 49 페이지의 "외부 인터럽트" 자세한 내용은.

유휴 모드

SM[1:0] 비트가 00에 기록되면 SLEEP 명령은 MCU를 유휴 모드로 전환하여 CPU를 중지하지만 아날로그 비교기, ADC, USI, 타이머/카운터, 워치독 및 인터럽트 시스템이 계속 작동하도록 허용합니다. 먹는. 이 절전 모드는 기본적으로 clkCPU 및 clkFLASH를 중지하고 다른 클록이 실행되도록 허용합니다.

유휴 모드를 사용하면 MCU가 외부 트리거 인터럽트 및 타이머 오버플로와 같은 내부 인터럽트에서 깨어날 수 있습니다. 아날로그 비교기 인터럽트에서 웨이크 업이 필요하지 않은 경우 ACD 비트를 설정하여 아날로그 비교기의 전원을 끌 수 있습니다. 120 페이지의 "ACSR – 아날로그 비교기 제어 및 상태 레지스터". 이렇게하면 유휴 모드에서 전력 소비가 줄어 듭니다. ADC가 활성화 된 경우이 모드에 들어가면 변환이 자동으로 시작됩니다.

ADC 노이즈 감소 모드

SM[1:0] 비트가 01에 기록되면 SLEEP 명령은 MCU를 ADC 노이즈 감소 모드로 전환하여 CPU를 중지하지만 ADC, 외부 인터럽트 및 Watchdog이 계속 작동하도록 허용합니다(활성화된 경우). 이 절전 모드는 clkI/O, clkCPU 및 clkFLASH를 중지하고 다른 클록이 실행되도록 허용합니다.

이는 ADC의 노이즈 환경을 개선하여 더 높은 분해능 측정을 가능하게합니다. ADC가 활성화 된 경우이 모드에 들어가면 변환이 자동으로 시작됩니다. ADC 변환 완료 인터럽트 외에 외부 리셋, 워치 독 리셋, 브라운 아웃 리셋, SPM / EEPROM 준비 인터럽트, INT0의 외부 레벨 인터럽트 또는 핀 변경 인터럽트 만 ADC 노이즈 감소에서 MCU를 깨울 수 있습니다. 방법.

파워 다운 모드

SM [1 : 0] 비트가 10에 기록되면 SLEEP 명령이 MCU를 전원 차단 모드로 전환합니다. 이 모드에서는 오실레이터가 중지되고 외부 인터럽트, USI 시작 조건 감지 및 Watchdog이 계속 작동합니다 (활성화 된 경우). 외부 리셋, 워치 독 리셋, 브라운 아웃 리셋, USI 시작 조건 인터럽트, INT0의 외부 레벨 인터럽트 또는 핀 변경 인터럽트 만이 MCU를 깨울 수 있습니다. 이 절전 모드는 생성 된 모든 클록을 중지하여 비동기 모듈의 작동 만 허용합니다.

소프트웨어 BOD 비활성화

전압 저하 감지기 (BOD)가 BODLEVEL 퓨즈에 의해 활성화 된 경우 ( 20 페이지의 표 4-148), 이사회는 공급량을 적극적으로 모니터링하고 있습니다.tage 수면 시간 동안. 일부 장치에서는 절전 모드에서 소프트웨어로 BOD를 비활성화하여 전원을 절약할 수 있습니다. 그러면 절전 모드 전력 소비는 퓨즈에 의해 BOD가 전역적으로 비활성화될 때와 동일한 수준이 됩니다.

소프트웨어에 의해 BOD가 비활성화된 경우 슬립 모드에 들어간 직후 BOD 기능이 꺼집니다. 절전 모드에서 깨어나면 BOD가 자동으로 다시 활성화됩니다. 이는 휴면 기간 동안 VCC 레벨이 떨어진 경우 안전한 작동을 보장합니다.

BOD가 비활성화 된 경우 슬립 모드에서 깨어나는 시간은 RESET에서 깨어나는 시간과 동일합니다. 사용자는 MCU가 코드를 계속 실행하기 전에 밴드 갭 참조가 시작될 시간을 갖고 BOD가 올바르게 작동하도록 웨이크 업 시간을 수동으로 구성해야합니다. 표의 SUT [1 : 0] 및 CKSEL [3 : 0] 퓨즈 비트 참조 149 페이지의 "퓨즈 로우 바이트"

BOD 비활성화는 MCU 제어 레지스터의 BODS (BOD Sleep) 비트에 의해 제어됩니다. “MCUCR – MCU 제어 37 페이지의 등록”. 이 비트를 XNUMX에 쓰면 전원 차단시 BOD가 꺼지고 XNUMX을 쓰면 BOD가 활성 상태로 유지됩니다. 기본 설정은 XNUMX, 즉 BOD 활성입니다.

BODS 비트에 대한 쓰기는 시간 순서와 활성화 비트에 의해 제어됩니다. “MCUCR – MCU 제어 레지스터- ter”37 페이지.

제한 사항

BOD 비활성화 기능은 다음 장치에서만 구현되었습니다.

ATtiny25, 개정판 E 이상

ATtiny45, 개정 D 이상

ATtiny85, 개정판 C 이상

개정판은 장치 패키지에 표시되어 있으며 다음과 같이 찾을 수 있습니다.

패키지 8P3 및 8S2의 하단

패키지 20M1의 윗면

전력 감소 레지스터

전력 감소 레지스터 (PRR)는 38 페이지의 "PRR – 전력 감소 레지스터", 개별 주변 장치에 대한 클럭을 중지하여 전력 소비를 줄이는 방법을 제공합니다. 주변 장치의 현재 상태가 고정되어 I / O 레지스터를 읽거나 쓸 수 없습니다. 클럭을 중지 할 때 주변기기에서 사용하는 리소스는 계속 사용되므로 대부분의 경우 주변기기는 클럭을 중지하기 전에 비활성화해야합니다. PRR에서 비트를 지워 모듈을 깨우면 모듈이 종료 전과 동일한 상태가됩니다.

모듈 종료는 유휴 모드 및 활성 모드에서 사용되어 전체 전력 소비를 크게 줄일 수 있습니다. 다른 모든 절전 모드에서는 시계가 이미 중지되어 있습니다. 보다 177 페이지의 "I / O 모듈의 공급 전류" 예를 들어amp레.

전력 소비 최소화

AVR 제어 시스템에서 전력 소비를 최소화하려고 할 때 고려해야 할 몇 가지 문제가 있습니다. 일반적으로 수면 모드는 가능한 한 많이 사용하고 장치의 기능이 최대한 적게 동작하도록 수면 모드를 선택해야합니다. 필요하지 않은 모든 기능은 비활성화해야합니다. 특히, 다음 모듈은 가능한 가장 낮은 전력 소비를 달성하려고 할 때 특별한 고려가 필요할 수 있습니다.

아날로그-디지털 변환기

활성화 된 경우 ADC는 모든 절전 모드에서 활성화됩니다. 전력을 절약하려면 슬립 모드에 들어가기 전에 ADC를 비활성화해야합니다. ADC를 껐다가 다시 켜면 다음 변환은 확장 변환입니다. 인용하다 122 페이지의 "아날로그-디지털 변환기" ADC 작동에 대한 자세한 내용은.

아날로그 비교기

Idle 모드에 들어갈 때 Analog Comparator를 사용하지 않으면 비활성화되어야 합니다. ADC 노이즈 감소 모드에 들어갈 때 아날로그 비교기는 비활성화되어야 합니다. 다른 절전 모드에서는 아날로그 비교기가 자동으로 비활성화됩니다. 그러나 Analog Comparator가 Internal Vol을 사용하도록 설정된 경우tage 입력으로 참조, 아날로그 비교기는 모든 절전 모드에서 비활성화되어야 합니다. 그렇지 않으면 내부 볼륨tage 참조는 절전 모드와 상관없이 활성화됩니다. 인용하다 119 페이지의 "아날로그 비교기" 아날로그 비교기를 구성하는 방법에 대한 자세한 내용은.

저전압 감지기

애플리케이션에 저전압 감지기가 필요하지 않은 경우이 모듈을 꺼야합니다. 브라운 아웃 감지기가 BODLEVEL 퓨즈에 의해 활성화 된 경우 모든 절전 모드에서 활성화되므로 항상 전력을 소비합니다. 더 깊은 절전 모드에서는 총 전류 소비에 크게 기여합니다. 보다 “브라운 아웃 디텍- 41 페이지의 그리고 35 페이지의 "소프트웨어 BOD 비활성화" 저전압 감지기 구성 방법에 대한 자세한 내용은

내부 볼륨tage 참조

내부 볼륨tage 기준은 브라운아웃 감지, 아날로그 비교기 또는 ADC에서 필요할 때 활성화됩니다. 위 섹션에 설명된 대로 이러한 모듈이 비활성화된 경우 내부 볼륨tage 참조는 비활성화되고 전력을 소비하지 않습니다. 다시 켜면 사용자는 출력을 사용하기 전에 참조가 시작되도록 허용해야 합니다. 슬립 모드에서 레퍼런스가 계속 켜져 있으면 출력을 즉시 사용할 수 있습니다. 인용하다 “내부 Voltage 참조” 페이지 42 시작 시간에 대한 자세한 내용은.

워치독 타이머

애플리케이션에 Watchdog Timer가 필요하지 않은 경우이 모듈을 꺼야합니다. Watchdog Timer가 활성화되면 모든 절전 모드에서 활성화되므로 항상 전력을 소비합니다. 더 깊은 절전 모드에서는 총 전류 소비에 크게 기여합니다. 인용하다 42 페이지의 "워치 독 타이머" Watchdog Timer를 구성하는 방법에 대한 자세한 내용은.

포트 핀

절전 모드에 들어갈 때 모든 포트 핀은 최소 전력을 사용하도록 구성해야 합니다. 가장 중요한 것은 핀이 저항 부하를 구동하지 않도록 하는 것입니다. I/O 클록(clkI/O)과 ADC 클록(clkADC)이 모두 정지되는 절전 모드에서는 장치의 입력 버퍼가 비활성화됩니다. 이렇게 하면 전력이 소비되지 않습니다.

필요하지 않을 때 입력 논리에 의해. 어떤 경우에는 웨이크 업 조건을 감지하기 위해 입력 로직이 필요하며,

그런 다음 활성화됩니다. 섹션을 참조하십시오 57 페이지의 "디지털 입력 활성화 및 절전 모드" 활성화된 핀에 대한 자세한 내용은 입력 버퍼가 활성화되고 입력 신호가 부동 상태로 남아 있거나 아날로그 신호 레벨이 VCC/2에 가까운 경우 입력 버퍼는 과도한 전력을 사용합니다.

아날로그 입력 핀의 경우 디지털 입력 버퍼를 항상 비활성화해야 합니다. 입력 핀의 VCC/2에 가까운 아날로그 신호 레벨은 활성 모드에서도 상당한 전류를 유발할 수 있습니다. 디지털 입력 비활성화 레지스터(DIDR0)에 기록하여 디지털 입력 버퍼를 비활성화할 수 있습니다. 인용하다 0 페이지의 "DIDR0 – 디지털 입력 비활성화 레지스터 121" 자세한 내용은.

등록 설명

MCUCR – MCU 제어 레지스터

MCU 제어 레지스터에는 전원 관리를위한 제어 비트가 포함되어 있습니다.

조금 7 6 5 4 3 2 1 0
0x35 보드 푸딩 SE SM1 SM0 보드세 ISC01 ISC00 MCUCR
읽기/쓰기 R 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 R 읽기/쓰기 읽기/쓰기
초기값 0 0 0 0 0 0 0 0

비트 7 – BODS : BOD 수면

BOD 비활성화 기능은 일부 장치에서만 사용할 수 있습니다. 보다 36 페이지의 "제한 사항".

수면 중에 BOD를 비활성화하려면 ( 7 페이지의 표 1-34) BODS 비트는 논리 XNUMX에 기록되어야합니다. 이것은 시간이 지정된 시퀀스와 MCUCR의 활성화 비트 BODSE에 의해 제어됩니다. 먼저 BODS와 BODSE를 모두 하나로 설정해야합니다. 둘째, XNUMX 클럭 사이클 내에서 BODS는 XNUMX로 설정되고 BODSE는 XNUMX으로 설정되어야합니다. BODS 비트는 설정된 후 XNUMX 클럭 주기로 활성화됩니다. 실제 절전 모드에서 BOD를 끄려면 BODS가 활성화 된 동안 절전 명령을 실행해야합니다. BODS 비트는 세 클럭 사이클 후에 자동으로 지워집니다.

Sleeping BOD가 구현되지 않은 장치에서이 비트는 사용되지 않으며 항상 XNUMX을 읽습니다.

비트 5 – SE : 절전 활성화

SE 비트는 SLEEP 명령이 실행될 때 MCU가 절전 모드로 들어가도록 로직 XNUMX에 기록되어야 합니다. 프로그래머의 의도가 아닌 이상 MCU가 슬립 모드로 들어가는 것을 방지하기 위해 SLEEP 명령어 실행 직전에 SE(Sleep Enable) 비트를 XNUMX에 쓰고 깨어난 직후에 클리어하는 것이 좋습니다.

비트 4 : 3 – SM [1 : 0] : 슬립 모드 비트 1 및 0 선택

이 비트는 다음과 같이 사용 가능한 세 가지 절전 모드 중에서 선택합니다. 표 7-2.

표 7-2. 절전 모드 선택

SM1 SM0 수면 모드
0 0 게으른
0 1 ADC 잡음 감소
1 0 전력 다운
1 1 예약된

비트 2 – BODSE : BOD 절전 활성화

BOD 비활성화 기능은 일부 장치에서만 사용할 수 있습니다. 보다 36 페이지의 "제한 사항".

BODSE 비트는 BODS 비트 설명에 설명 된대로 BODS 제어 비트를 설정할 수 있습니다. BOD 비활성화는 시간이 지정된 시퀀스로 제어됩니다.

이 비트는 소프트웨어 BOD 비활성화가 구현되지 않은 장치에서 사용되지 않으며 해당 장치에서 XNUMX으로 읽습니다.

PRR – 전력 감소 레지스터

전력 감소 레지스터는 주변 클록 신호를 비활성화하여 전력 소비를 줄이는 방법을 제공합니다.

조금 7 6 5 4 3 2 1 0
0x20 프림1 프림0 프루시 PRADC PRR
읽기/쓰기 R R R R 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기
초기값 0 0 0 0 0 0 0 0

비트 7 : 4 – 해상도 : 예약 된 비트

이 비트는 ATtiny25 / 45 / 85에서 예약 된 비트이며 항상 XNUMX으로 읽습니다.

비트 3 – PRTIM1 : 전력 감소 타이머 / 카운터 1

이 비트에 로직 1을 쓰면 Timer / Counter1 모듈이 종료됩니다. 타이머 / 카운터 XNUMX이 활성화되면 작동은 종료 전과 같이 계속됩니다.

비트 2 – PRTIM0 : 전력 감소 타이머 / 카운터 0

이 비트에 로직 0을 쓰면 Timer / Counter0 모듈이 종료됩니다. 타이머 / 카운터 XNUMX이 활성화되면 작동은 종료 전과 같이 계속됩니다.

비트 1 – PRUSI : 전력 감소 USI

이 비트에 로직 XNUMX을 쓰면 모듈에 대한 클럭을 중지하여 USI를 종료합니다. USI를 다시 깨울 때 올바른 작동을 보장하기 위해 USI를 다시 초기화해야합니다.

비트 0 – PRADC : 전력 감소 ADC

이 비트에 로직 XNUMX을 쓰면 ADC가 종료됩니다. 종료하기 전에 ADC를 비활성화해야합니다. ADC 클럭은 아날로그 비교기의 일부 부분에서도 사용되므로이 비트가 높을 때 아날로그 비교기를 사용할 수 없습니다.

시스템 제어 및 재설정

AVR 재설정

리셋하는 동안 모든 I / O 레지스터는 초기 값으로 설정되고 프로그램은 리셋 벡터에서 실행을 시작합니다. 리셋 벡터에 배치 된 명령어는 리셋 처리 루틴에 대한 RJMP – 상대 점프 – 명령어 여야합니다. 프로그램이 인터럽트 소스를 활성화하지 않으면 인터럽트 벡터가 사용되지 않으며 이러한 위치에 일반 프로그램 코드를 배치 할 수 있습니다. 회로도 그림 8-1 리셋 로직을 보여줍니다. 리셋 회로의 전기 매개 변수는 다음과 같습니다. 165 페이지의 "시스템 및 재설정 특성".

그림 8-1 재설정 논리 리셋 로직

AVR의 I / O 포트는 재설정 소스가 활성화되면 즉시 초기 상태로 재설정됩니다. 이것은 어떤 클럭 소스도 실행할 필요가 없습니다.

모든 리셋 소스가 비활성화되면 지연 카운터가 호출되어 내부 리셋이 늘어납니다. 이렇게하면 정상 작동이 시작되기 전에 전원이 안정된 수준에 도달 할 수 있습니다. 지연 카운터의 시간 초과 기간은 SUT 및 CKSEL 퓨즈를 통해 사용자가 정의합니다. 지연 기간에 대한 다양한 선택 사항은 "시계 소스”25 페이지.

소스 재설정

ATtiny25 / 45 / 85에는 네 가지 재설정 소스가 있습니다.

파워온 리셋. MCU는 공급 볼륨이 재설정될 때 재설정됩니다.tage는 파워온 리셋 임계값(VPOT) 미만입니다.

외부 재설정. MCU는 최소 펄스 길이보다 긴 시간 동안 RESET 핀에 ​​로우 레벨이있을 때 리셋됩니다.

워치 독 재설정. MCU는 Watchdog Timer 기간이 만료되고 Watchdog이 활성화되면 재설정됩니다.

브라운아웃 리셋. MCU는 공급 볼륨이 재설정될 때 재설정됩니다.tage VCC가 브라운아웃 재설정 임계값(VBOT) 미만이고 브라운아웃 감지기가 활성화됩니다.

파워 온 리셋

POR (Power-on Reset) 펄스는 온칩 감지 회로에 의해 생성됩니다. 감지 수준은 “시스- 템 및 재설정 특성 "페이지 165. POR은 VCC가 감지 수준 미만일 때마다 활성화됩니다. POR 회로는 스타트업 리셋을 트리거하고 공급량의 오류를 감지하는 데 사용할 수 있습니다.tage.

파워온 리셋(POR) 회로는 디바이스가 파워온에서 리셋되도록 합니다. 파워온 리셋 임계값 도달 voltage는 VCC가 상승한 후 장치가 RESET 상태로 유지되는 시간을 결정하는 지연 카운터를 호출합니다. RESET 신호는 VCC가 감지 수준 이하로 감소하면 지연 없이 다시 활성화됩니다.

그림 8-2. MCU 시작, VCC에 연결된 RESET

내부 리셋

그림 8-3. MCU 시작, RESET 외부 확장

외부 리셋

활성화 된 경우 RESET 핀의 로우 레벨에 의해 외부 리셋이 생성됩니다. 최소 펄스 폭보다 긴 펄스를 재설정합니다 ( 165 페이지의 "시스템 및 재설정 특성")는 시계가 실행되고 있지 않더라도 재설정을 생성합니다. 더 짧은 펄스는 리셋 생성을 보장하지 않습니다. 적용된 신호가 Reset Threshold Vol에 도달하면tage – VRST – 포지티브 에지에서 지연 카운터는 타임아웃 기간이 만료된 후 MCU를 시작합니다.

그림 8-4. 작동 중 외부 리셋 그림8.4

브라운 아웃 감지

ATtiny25/45/85에는 고정 트리거 레벨과 비교하여 작동 중에 VCC 레벨을 모니터링하기 위한 온칩 브라운아웃 감지(BOD) 회로가 있습니다. BOD의 트리거 레벨은 BODLEVEL 퓨즈로 선택할 수 있습니다. 트리거 레벨에는 히스테리시스가 있어 스파이크가 없는 브라운아웃 감지를 보장합니다. 감지 수준의 히스테리시스는 VBOT+ = VBOT + VHYST/2 및 VBOT- = VBOT – VHYST/2로 해석되어야 합니다.

BOD가 활성화되고 VCC가 트리거 레벨 아래의 값으로 감소할 때(VBOT-in 그림 8-5) 브라운아웃 리셋이 즉시 활성화됩니다. VCC가 트리거 레벨 이상으로 증가하면(VBOT+ 그림 8-5) 지연 카운터는 타임아웃 기간 tTOUT이 만료된 후 MCU를 시작합니다.

BOD 회로는 vol이tage는 주어진 tBOD보다 오랫동안 트리거 레벨 아래에 유지됩니다. 165 페이지의 "시스템 및 재설정 특성". 그림8.5

워치 독 재설정

워치독이 타임아웃되면 CK 사이클 기간의 짧은 리셋 펄스를 생성합니다. 이 펄스의 하강 에지에서 지연 타이머는 타임아웃 기간 tTOUT을 계산하기 시작합니다. 인용하다 42 페이지의 "워치 독 타이머" Watchdog Timer 작동에 대한 자세한 내용은.

권tage 참조 활성화 신호 및 시작 시간

권tage 참조에는 사용 방법에 영향을 줄 수 있는 시작 시간이 있습니다. 시작 시간은 165 페이지의 "시스템 및 재설정 특성". 전력을 절약하기 위해 레퍼런스가 항상 켜져있는 것은 아닙니다. 참조는 다음 상황에서 켜집니다.

BOD가 활성화 된 경우 (BODLEVEL [2 : 0] 퓨즈 비트 프로그래밍).

밴드 갭 레퍼런스가 아날로그 비교기에 연결된 경우 (ACSR에서 ACBG 비트 설정).

ADC가 활성화 된 경우.

따라서 BOD가 활성화되지 않은 경우 ACBG 비트를 설정하거나 ADC를 활성화 한 후 사용자는 아날로그 비교기 또는 ADC의 출력이 사용되기 전에 항상 레퍼런스 시작을 허용해야합니다. Power-down 모드에서 전력 소비를 줄이기 위해 사용자는 위의 세 가지 조건을 피하여 Power-down 모드로 들어가기 전에 레퍼런스가 꺼 졌는지 확인할 수 있습니다.

워치독 타이머

워치 독 타이머는 128kHz에서 실행되는 온칩 발진기에서 클럭됩니다. Watchdog Timer 프리스케일러를 제어하여 Watchdog Reset 간격을 다음과 같이 조정할 수 있습니다. 8 페이지의 표 3-46. WDR – Watchdog Reset – 명령은 Watchdog Timer를 재설정합니다. 워치 독 타이머는 비활성화되거나 칩 리셋이 발생할 때도 리셋됩니다. 리셋 기간을 결정하기 위해 25 개의 다른 클록 사이클 기간을 선택할 수 있습니다. 다른 Watchdog Reset없이 리셋 기간이 만료되면 ATtiny45 / 85 / XNUMX가 리셋 벡터에서 리셋되고 실행됩니다. Watchdog Reset에 대한 자세한 타이밍은 다음을 참조하십시오. 8 페이지의 표 3-46.

Watchdog Timer는 리셋 대신 인터럽트를 생성하도록 구성 할 수도 있습니다. 이것은 Watchdog을 사용하여 Power-down에서 깨어날 때 매우 유용 할 수 있습니다.

Watchdog의 의도하지 않은 비활성화 또는 시간 초과 기간의 의도하지 않은 변경을 방지하기 위해 다음과 같이 퓨즈 WDTON에 의해 ​​두 가지 다른 안전 수준이 선택됩니다. 표 8-1 참조하다 “컨트롤 변경을위한 타임 시퀀스 워치 독 타이머의 구조”43 페이지 자세한 내용은.

표 8-1. WDTON의 퓨즈 설정에 따른 WDT 구성

WD톤 안전 수준 WDT 초기 상태 WDT를 비활성화하는 방법 타임 아웃 변경 방법
프로그래밍되지 않음 1 장애가 있는 시간 순서 제한 없음
프로그램됨 2 활성화됨 항상 활성화 시간 순서

그림 8-7. 감시 타이머 지키는 개

워치 독 타이머의 구성 변경을위한 시간 순서

구성 변경 순서는 두 안전 수준간에 약간 다릅니다. 각 레벨에 대해 별도의 절차가 설명되어 있습니다.

안전 수준 1: 이 모드에서 Watchdog Timer는 초기에 비활성화되지만 WDE 비트를 제한 없이 XNUMX로 작성하여 활성화할 수 있습니다. 활성화된 Watchdog Timer를 비활성화할 때 시간 순서가 필요합니다. 활성화된 감시 타이머를 비활성화하려면 다음 절차를 따라야 합니다.

동일한 작업에서 WDCE 및 WDE에 논리 XNUMX을 씁니다. 논리 XNUMX은 WDE 비트의 이전 값에 관계없이 WDE에 기록되어야합니다.

다음 XNUMX 개의 클럭 사이클 내에서 동일한 작업에서 원하는대로 WDE 및 WDP 비트를 쓰되 WDCE 비트는 지워 둡니다.

안전 수준 2: 이 모드에서는 감시 타이머가 항상 활성화되고 WDE 비트가 항상 XNUMX로 읽힙니다. Watchdog Time-out 기간을 변경할 때 시간 순서가 필요합니다. Watchdog Time-out을 변경하려면 다음 절차를 따라야 합니다.

동일한 작업에서 WDCE 및 WDE에 논리적 하나를 씁니다. WDE가 항상 설정되어 있어도 시간이 지정된 시퀀스를 시작하려면 WDE를 XNUMX에 기록해야합니다.

다음 XNUMX 클럭 사이클 내에서 동일한 작업에서 원하는대로 WDP 비트를 쓰되 WDCE 비트는 지워 둡니다. WDE 비트에 기록 된 값은 관련이 없습니다.

코드 예ample

다음 코드 예amp파일은 WDT를 끄기 위한 하나의 어셈블리와 하나의 C 기능을 보여줍니다. 전ample는 인터럽트가 제어되어(예: 인터럽트를 전역적으로 비활성화하여) 이러한 기능을 실행하는 동안 인터럽트가 발생하지 않는다고 가정합니다.

어셈블리 코드 예ample(1)
WDT_off :

wdr

; MCUSR에서 WDRF 지우기

ldi r16, (0<

출력 MCUSR, r16

; WDCE 및 WDE에 논리 쓰기

; 의도하지 않은 Watchdog Reset을 방지하기 위해 이전 프리스케일러 설정 유지

r16에서 WDTCR

또는 r16, (1<

출력 WDTCR, r16

; WDT 끄기

ldi r16, (0<

출력 WDTCR, r16

후퇴하다

C 코드 예ample(1)
무효 WDT_off(무효)

{

_WDR ();

/* MCUSR에서 WDRF 지우기 */ MCUSR = 0x00

/* WDCE 및 WDE에 논리 1 쓰기 */ WDTCR |= (1<

/ * WDT 끄기 * / WDTCR = 0x00;

}

참고 : 1. 참조 "코드 엑스amp6페이지의 레”.

등록 설명

MCUSR – MCU 상태 레지스터

MCU 상태 레지스터는 MCU 재설정을 유발 한 재설정 소스에 대한 정보를 제공합니다.

조금 7 6 5 4 3 2 1 0
0x34 WDRF 보르프 외부 포프 MCUSR
읽기/쓰기 R R R R 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기

초기 값 0 0 0 0 비트 설명 참조

비트 7 : 4 – 해상도 : 예약 된 비트

이 비트는 ATtiny25 / 45 / 85에서 예약 된 비트이며 항상 XNUMX으로 읽습니다.

비트 3 – WDRF : 워치 독 재설정 플래그

이 비트는 Watchdog Reset이 발생하면 설정됩니다. 이 비트는 전원 켜기 재설정 또는 플래그에 논리 XNUMX을 기록하여 재설정됩니다.

비트 2 – BORF : 브라운 아웃 리셋 플래그

브라운 아웃 리셋이 발생하면이 비트가 설정됩니다. 이 비트는 전원 켜기 재설정 또는 플래그에 논리 XNUMX을 기록하여 재설정됩니다.

비트 1 – EXTRF : 외부 리셋 플래그

이 비트는 외부 리셋이 발생하면 설정됩니다. 이 비트는 전원 켜기 재설정 또는 플래그에 논리 XNUMX을 기록하여 재설정됩니다.

비트 0 – PORF : 전원 켜기 재설정 플래그

이 비트는 전원 켜기 재설정이 발생하는 경우 설정됩니다. 비트는 로직 XNUMX을 플래그에 기록함으로써 만 재설정됩니다.

재설정 플래그를 사용하여 재설정 조건을 식별하려면 사용자가 프로그램에서 가능한 한 빨리 MCUSR을 읽고 재설정해야합니다. 다른 리셋이 발생하기 전에 레지스터가 지워지면 리셋 플래그를 검사하여 리셋 소스를 찾을 수 있습니다.

WDTCR – 워치 독 타이머 제어 레지스터

조금 7 6 5 4 3 2 1 0
0x21 WDIF 와디 WDP3 WDCE WDE WDP2 WDP1 WDP0 WDTCR
읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기
초기값 0 0 0 0 X 0 0 0

비트 7 – WDIF : Watchdog Timeout Interrupt Flag

이 비트는 Watchdog Timer에서 타임 아웃이 발생하고 Watchdog Timer가 인터럽트 용으로 구성되었을 때 설정됩니다. WDIF는 해당 인터럽트 처리 벡터를 실행할 때 하드웨어에 의해 지워집니다. 또는 플래그에 논리 XNUMX을 작성하여 WDIF를 지 웁니다. SREG 및 WDIE의 I- 비트가 설정되면 Watchdog Time-out Interrupt가 실행됩니다.

비트 6 – WDIE : 워치 독 타임 아웃 인터럽트 활성화

이 비트가 XNUMX에 기록되고 WDE가 지워지고 상태 레지스터의 I- 비트가 설정되면 Watchdog Time-out Interrupt가 활성화됩니다. 이 모드에서는 Watchdog Timer에서 타임 아웃이 발생하면 리셋 대신 해당 인터럽트가 실행됩니다.

WDE가 설정된 경우 시간 초과가 발생하면 WDIE가 하드웨어에 의해 자동으로 지워집니다. 이것은 인터럽트를 사용하는 동안 Watchdog Reset 보안을 유지하는 데 유용합니다. WDIE 비트가 지워지면 다음 타임 아웃이 재설정을 생성합니다. Watchdog Reset을 방지하려면 각 인터럽트 후에 WDIE를 설정해야합니다.

표 8-2. 워치독 타이머 구성

WDE 와디 워치 독 타이머 상태 시간 초과에 대한 조치
0 0 중단됨 없음
0 1 달리기 방해하다
1 0 달리기 다시 놓기
1 1 달리기 방해하다

비트 4 – WDCE : 워치 독 변경 활성화

이 비트는 WDE 비트가 논리 XNUMX에 기록 될 때 설정되어야합니다. 그렇지 않으면 Watchdog이 비활성화되지 않습니다. 하나에 기록되면 하드웨어는 XNUMX 클럭 사이클 후에이 비트를 지 웁니다. Watchdog 비활성화 절차는 WDE 비트에 대한 설명을 참조하십시오. 이 비트는 프리스케일러 비트를 변경할 때도 설정해야합니다. 보다 “시간이 지정된 시퀀스 워치 독 타이머의 구성 변경 방법”43 페이지.

비트 3 – WDE : 워치 독 활성화

WDE가 논리 XNUMX에 기록되면 Watchdog Timer가 활성화되고 WDE가 논리 XNUMX에 기록되면 Watchdog Timer 기능이 비활성화됩니다. WDE는 WDCE 비트에 로직 레벨 XNUMX이있는 경우에만 지울 수 있습니다. 활성화 된 감시 타이머를 비활성화하려면 다음 절차를 따라야합니다.

동일한 작업에서 논리 XNUMX을 WDCE 및 WDE에 씁니다. 논리 XNUMX은 비활성화 작업이 시작되기 전에 XNUMX로 설정되어 있어도 WDE에 기록되어야합니다.

다음 0 개의 클록 사이클 내에 로직 XNUMX을 WDE에 씁니다. 이것은 Watchdog을 비활성화합니다.

안전 수준 2에서는 위에서 설명한 알고리즘을 사용하더라도 Watchdog Timer를 비활성화 할 수 없습니다. 보다 43 페이지의 "워치 독 타이머 구성 변경을위한 시간 순서".

안전 수준 1에서 WDE는 MCUSR의 WDRF에 의해 무시됩니다. 보다 44 페이지의 "MCUSR – MCU 상태 레지스터" WDRF에 대한 설명. 즉, WDRF가 설정되면 WDE가 항상 설정됩니다. WDE를 지우려면 위에서 설명한 절차에 따라 Watchdog을 비활성화하기 전에 WDRF를 지워야합니다. 이 기능은 장애를 유발하는 조건에서 여러 번 재설정하고 장애 후 안전한 시작을 보장합니다.

참고: 애플리케이션에서 워치독 타이머를 사용하지 않을 경우 장치 초기화에서 워치독 비활성화 절차를 거치는 것이 중요합니다. Watchdog이 실수로 활성화된 경우(예:amp런어웨이 포인터 또는 브라운아웃 상태로 인해 장치가 재설정되고, 이는 차례로 새로운 워치독 재설정으로 이어집니다. 이러한 상황을 피하기 위해 응용 프로그램 소프트웨어는 초기화 루틴에서 항상 WDRF 플래그와 WDE 제어 비트를 지워야 합니다.

비트 5, 2 : 0 – WDP [3 : 0] : 워치 독 타이머 프리스케일러 3, 2, 1, 0

WDP [3 : 0] 비트는 Watchdog Timer가 활성화 될 때 Watchdog Timer 프리 스케일링을 결정합니다. 다양한 사전 크기 조정 값과 해당 시간 초과 기간이 다음과 같이 표시됩니다. 표 8-3.

표 8-3. 워치독 타이머 프리스케일 선택

WDP3 WDP2 WDP1 WDP0 WDT 발진기 사이클 수 VCC = 5.0V에서 일반적인 타임아웃
0 0 0 0 2K (2048)주기 16밀리초
0 0 0 1 4K (4096)주기 32밀리초
0 0 1 0 8K (8192)주기 64밀리초
0 0 1 1 16K (16384)주기 0.125초
0 1 0 0 32K (32764)주기 0.25초
0 1 0 1 64K (65536)주기 0.5초
0 1 1 0 128K (131072)주기 1.0초
0 1 1 1 256K (262144)주기 2.0초
1 0 0 0 512K (524288)주기 4.0초
1 0 0 1 1024K (1048576)주기 8.0초

표 8-3. 워치독 타이머 프리스케일 선택(계속)

WDP3 WDP2 WDP1 WDP0 WDT 발진기 사이클 수 VCC = 5.0V에서 일반적인 타임아웃
1 0 1 0 예약된(1)
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1

참고: 1. 선택하면 0b1010 아래의 유효한 설정 중 하나가 사용됩니다.

인터럽트

이 섹션에서는 ATtiny25 / 45 / 85에서 수행되는 인터럽트 처리의 세부 사항을 설명합니다. AVR 인터럽트 처리에 대한 일반적인 설명은 다음을 참조하십시오. 12 페이지의 "재설정 및 인터럽트 처리".

ATtiny25 / 45 / 85의 인터럽트 벡터

ATtiny25 / 45 / 85의 인터럽트 벡터는 다음에 설명되어 있습니다. 표 9-1아래에.

표 9-1. 리셋 및 인터럽트 벡터

벡터 번호 프로그램 주소 원천 인터럽트 정의
1 0x0000 다시 놓기 외부 핀, 파워 온 리셋, 브라운 아웃 리셋, 워치 독 리셋
2 0x0001 인티0 외부 인터럽트 요청 0
3 0x0002 PCINT0 핀 변경 인터럽트 요청 0
4 0x0003 TIMER1_COMPA 타이머 / 카운터 1 비교 매치 A
5 0x0004 타이머1_OVF 타이머 / 카운터 1 오버플로
6 0x0005 타이머0_OVF 타이머 / 카운터 0 오버플로
7 0x0006 EE_RDY EEPROM 준비
8 0x0007 ANA_COMP 아날로그 비교기
9 0x0008 애드디씨 ADC 변환 완료
10 0x0009 TIMER1_COMPB 타이머 / 카운터 1 비교 매치 B
11 0x000A TIMER0_COMPA 타이머 / 카운터 0 비교 매치 A
12 0x000B TIMER0_COMPB 타이머 / 카운터 0 비교 매치 B
13 0x000C 웨더스트립 워치 독 시간 초과
14 0x000D USI_START USI 시작
15 0x000E USI_OVF USI 오버플로

프로그램이 인터럽트 소스를 활성화하지 않으면 인터럽트 벡터가 사용되지 않으며 이러한 위치에 일반 프로그램 코드를 배치 할 수 있습니다.

ATtiny25/45/85의 인터럽트 벡터 주소에 대한 일반적이고 일반적인 설정은 ex 프로그램에 나와 있습니다.amp아래에 있습니다.

어셈블리 코드 예ample
.org 0x0000 ; 다음 주소 설정 성명
rjmp 재설정 ; 주소 0x0000
RJMP INT0_ISR ; 주소 0x0001
RJMP PCINT0_ISR ; 주소 0x0002
rjmp TIM1_COMPA_ISR ; 주소 0x0003
rjmp TIM1_OVF_ISR ; 주소 0x0004
rjmp TIM0_OVF_ISR ; 주소 0x0005
rjmp EE_RDY_ISR ; 주소 0x0006
rjmp ANA_COMP_ISR ; 주소 0x0007
RJMP ADC_ISR ; 주소 0x0008
rjmp TIM1_COMPB_ISR ; 주소 0x0009
rjmp TIM0_COMPA_ISR ; 주소 0x000A
rjmp TIM0_COMPB_ISR ; 주소 0x000B
rjmp WDT_ISR ; 주소 0x000C
rjmp USI_START_ISR ; 주소 0x000D
rjmp USI_OVF_ISR ; 주소 0x000E
RESET : ; 메인 프로그램 시작
; 주소 0x000F

참고: 참조 "코드 엑스amp6페이지의 레”.

외부 인터럽트

외부 인터럽트는 INT0 핀 또는 PCINT [5 : 0] 핀 중 하나에 의해 트리거됩니다. 활성화 된 경우 INT0 또는 PCINT [5 : 0] 핀이 출력으로 구성된 경우에도 인터럽트가 트리거됩니다. 이 기능은 소프트웨어 인터럽트를 생성하는 방법을 제공합니다. 핀 변경 인터럽트 PCI는 활성화 된 PCINT [5 : 0] 핀이 토글되면 트리거됩니다. 핀 변경 인터럽트에 기여하는 핀을 PCMSK 레지스터 제어합니다. PCINT [5 : 0]의 핀 변경 인터럽트는 비동기 적으로 감지됩니다. 이는 이러한 인터럽트가 유휴 모드 이외의 절전 모드에서도 부품을 깨우는 데 사용될 수 있음을 의미합니다.

INT0 인터럽트는 하강 또는 상승 에지 또는 로우 레벨에 의해 트리거 될 수 있습니다. 이것은 MCU 제어 레지스터 – MCUCR의 사양에 표시된대로 설정됩니다. INT0 인터럽트가 활성화되고 레벨 트리거로 구성되면 핀이 로우로 유지되는 한 인터럽트가 트리거됩니다. INT0에서 하강 또는 상승 에지 인터럽트를 인식하려면 다음에 설명 된 I / O 클럭이 있어야합니다. "시계 시스템 및 배포" 23페이지.

저수준 인터럽트

INT0의 저수준 인터럽트는 비동기 적으로 감지됩니다. 이는이 인터럽트가 유휴 모드 이외의 절전 모드에서도 부품을 깨우는 데 사용될 수 있음을 의미합니다. I / O 클럭은 유휴 모드를 제외한 모든 절전 모드에서 중지됩니다.

레벨 트리거 인터럽트가 전원 차단에서 웨이크업에 사용되는 경우 MCU가 웨이크업을 완료하여 레벨 인터럽트를 트리거할 수 있도록 필요한 레벨을 충분히 오래 유지해야 합니다. 시작 시간이 끝나기 전에 레벨이 사라지면 MCU는 계속 깨어나지만 인터럽트는 생성되지 않습니다. 시작 시간은 에 설명된 대로 SUT 및 CKSEL 퓨즈에 의해 정의됩니다. 23 페이지의 "시스템 시계 및 시계 옵션".

장치가 깨어나 기 전에 인터럽트 핀의 로우 레벨이 제거되면 프로그램 실행이 인터럽트 서비스 루틴으로 전환되지 않고 SLEEP 명령 다음의 명령에서 계속됩니다.

핀 변경 인터럽트 타이밍

전amp핀 변경 인터럽트의 타이밍 파일은 다음과 같습니다. 그림 9-1.

등록 설명

MCUCR – MCU 제어 레지스터

외부 인터럽트 제어 레지스터 A에는 인터럽트 감지 제어를위한 제어 비트가 포함되어 있습니다.

조금 7 6 5 4 3 2 1 0
0x35 보드 푸딩 SE SM1 SM0 보드세 ISC01 ISC00 MCUCR
읽기/쓰기 R 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 R 읽기/쓰기 읽기/쓰기
초기값 0 0 0 0 0 0 0 0

비트 1 : 0 – ISC0 [1 : 0] : 인터럽트 감지 제어 0 비트 1 및 비트 0

외부 인터럽트 0은 SREG I- 플래그와 해당 인터럽트 마스크가 설정된 경우 외부 핀 INT0에 의해 활성화됩니다. 인터럽트를 활성화하는 외부 INT0 핀의 레벨과 에지는 표 9-2. INT0 핀의 값은 s입니다.amp가장자리를 감지하기 전에 주도합니다. 에지 또는 토글 인터럽트가 선택되면 한 클록 주기보다 오래 지속되는 펄스가 인터럽트를 생성합니다. 더 짧은 펄스는 인터럽트 생성을 보장하지 않습니다. 로우 레벨 인터럽트가 선택되면 인터럽트를 생성하기 위해 현재 실행 중인 명령이 완료될 때까지 로우 레벨을 유지해야 합니다.

표 9-2. 인터럽트 0 감지 제어

ISC01 ISC00 설명
0 0 낮은 수준의 INT0은 인터럽트 요청을 생성합니다.
0 1 INT0의 논리적 변경은 인터럽트 요청을 생성합니다.
1 0 INT0의 하강 에지는 인터럽트 요청을 생성합니다.
1 1 INT0의 상승 에지는 인터럽트 요청을 생성합니다.

GIMSK – 일반 인터럽트 마스크 레지스터

조금 7 6 5 4 3 2 1 0
0x3B 인티0 PCIE 김 스크
읽기/쓰기 R 읽기/쓰기 읽기/쓰기 R R R R R
초기값 0 0 0 0 0 0 0 0

Bits 7, 4 : 0 – Res : 예약 된 비트

이 비트는 ATtiny25 / 45 / 85에서 예약 된 비트이며 항상 XNUMX으로 읽습니다.

비트 6 – INT0 : 외부 인터럽트 요청 0 활성화

INT0 비트가 설정되고 (0) 상태 레지스터 (SREG)의 I- 비트가 설정 (1)되면 외부 핀 인터럽트가 활성화됩니다. MCU 제어 레지스터 (MCUCR)의 인터럽트 감지 제어 0 비트 01/00 (ISC0 및 ISC0)은 INT0 핀의 상승 및 / 또는 하강 에지 또는 감지 된 레벨에서 외부 인터럽트가 활성화되는지 여부를 정의합니다. 핀 활동은 INT0이 출력으로 구성된 경우에도 인터럽트 요청을 유발합니다. 외부 인터럽트 요청 XNUMX의 해당 인터럽트는 INTXNUMX 인터럽트 벡터에서 실행됩니다.

비트 5 – PCIE : 핀 변경 인터럽트 활성화

PCIE 비트가 설정되고 (5) 상태 레지스터 (SREG)의 I- 비트가 설정 (0)되면 핀 변경 인터럽트가 활성화됩니다. 활성화 된 PCINT [5 : 0] 핀을 변경하면 인터럽트가 발생합니다. 핀 변경 인터럽트 요청의 해당 인터럽트는 PCI 인터럽트 벡터에서 실행됩니다. PCINT [0 : XNUMX] 핀은 PCMSKXNUMX 레지스터에 의해 개별적으로 활성화됩니다.

GIFR – 일반 인터럽트 플래그 레지스터

조금 7 6 5 4 3 2 1 0
0x3A INTF0 PCIF GIFR
읽기/쓰기 R 읽기/쓰기 읽기/쓰기 R R R R R
초기값 0 0 0 0 0 0 0 0

Bits 7, 4 : 0 – Res : 예약 된 비트

이 비트는 ATtiny25 / 45 / 85에서 예약 된 비트이며 항상 XNUMX으로 읽습니다.

비트 6 – INTF0 : 외부 인터럽트 플래그 0

INT0 핀의 에지 또는 로직 변경이 인터럽트 요청을 트리거하면 INTF0이 설정됩니다 (0). SREG의 I- 비트와 GIMSK의 INT0 비트가 설정되면 (XNUMX) MCU는 해당 인터럽트 벡터로 점프합니다. 인터럽트 루틴이 실행되면 플래그가 지워집니다. 또는 논리적 플래그를 작성하여 플래그를 지울 수 있습니다. 이 플래그는 INTXNUMX이 레벨 인터럽트로 구성 될 때 항상 지워집니다.

비트 5 – PCIF : 핀 변경 인터럽트 플래그

PCINT [5 : 0] 핀의 로직 변경이 인터럽트 요청을 트리거하면 PCIF가 설정됩니다 (XNUMX). SREG의 I 비트와 GIMSK의 PCIE 비트가 설정되면 (XNUMX) MCU는 해당 인터럽트 벡터로 점프합니다. 인터럽트 루틴이 실행되면 플래그가 지워집니다. 또는 논리적 플래그를 작성하여 플래그를 지울 수 있습니다.

PCMSK – 핀 변경 마스크 레지스터

조금 7 6 5 4 3 2 1 0
0x15 PCINT5 PCINT4 PCINT3 PCINT2 PCINT1 PCINT0 PCMSK
읽기/쓰기 R R 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기
초기값 0 0 0 0 0 0 0 0

비트 7 : 6 – 해상도 : 예약 된 비트

이 비트는 ATtiny25 / 45 / 85에서 예약 된 비트이며 항상 XNUMX으로 읽습니다.

비트 5 : 0 – PCINT [5 : 0] : 핀 변경 활성화 마스크 5 : 0

각 PCINT [5 : 0] 비트는 해당 I / O 핀에서 핀 변경 인터럽트 활성화 여부를 선택합니다. PCINT [5 : 0]이 설정되고 GIMSK의 PCIE 비트가 설정되면 해당 I / O 핀에서 핀 변경 인터럽트가 활성화됩니다. PCINT [5 : 0]이 해제되면 해당 I / O 핀의 핀 변경 인터럽트가 비활성화됩니다.

I/O 포트

소개

모든 AVR 포트는 일반 디지털 I/O 포트로 사용될 때 진정한 읽기-수정-쓰기 기능을 가지고 있습니다. 이는 SBI 및 CBI 명령을 사용하여 의도하지 않게 다른 핀의 방향을 변경하지 않고도 한 포트 핀의 방향을 변경할 수 있음을 의미합니다. 드라이브 값을 변경할 때(출력으로 구성된 경우) 또는 풀업 저항을 활성화/비활성화하는 경우(입력으로 구성된 경우)에도 동일하게 적용됩니다. 각 출력 버퍼는 높은 싱크 및 소스 기능을 모두 갖춘 대칭적인 드라이브 특성을 가지고 있습니다. 핀 드라이버는 LED 디스플레이를 직접 구동할 수 있을 정도로 강력합니다. 모든 포트 핀에는 개별적으로 선택 가능한 풀업 저항이 있습니다.tage 불변 저항. 모든 I/O 핀에는 에 표시된 대로 VCC 및 접지 모두에 대한 보호 다이오드가 있습니다. 그림 10-1. 참조 161 페이지의 "전기적 특성" 매개변수의 전체 목록을 보려면.

그림 10-1. I/O 핀 등가 회로도

그림10

이 섹션의 모든 레지스터와 비트 참조는 일반적인 형식으로 작성되었습니다. 소문자 "x"는 포트 번호를 나타내고 소문자 "n"은 비트 번호를 나타냅니다. 그러나 프로그램에서 레지스터나 비트 정의를 사용할 때는 정확한 형태를 사용해야 합니다. 예를 들어ample, 비트 번호에 대한 PORTB3. 포트 B의 3, 여기서는 일반적으로 PORTxn으로 문서화됩니다. 물리적 I/O 레지스터 및 비트 위치는 "등록 설명" 64페이지.

세 개의 I / O 메모리 주소 위치가 각 포트에 할당되며, 데이터 레지스터 (PORTx, 데이터 방향 레지스터 – DDRx 및 포트 입력 핀 – PINx)에 각각 하나씩 할당됩니다. 포트 입력 핀 I / O 위치는 읽기 전용이고 데이터 레지스터 및 데이터 방향 레지스터는 읽기 / 쓰기입니다. 그러나 PINx 레지스터의 비트에 로직 XNUMX을 쓰면 데이터 레지스터의 해당 비트에서 토글이 발생합니다. 또한 MCUCR의 풀업 비활성화 – PUD 비트는 설정시 모든 포트의 모든 핀에 대해 풀업 기능을 비활성화합니다.

I / O 포트를 일반 디지털 I / O로 사용하는 방법은 53 페이지의 "일반 디지털 I / O로서의 포트". 대부분의 포트 핀은 장치의 주변 장치 기능에 대한 대체 기능으로 멀티플렉싱됩니다. 각 대체 기능이 포트 핀을 방해하는 방법은 57 페이지의 "대체 포트 기능". 대체 기능에 대한 전체 설명은 개별 모듈 섹션을 참조하십시오.

일부 포트 핀의 대체 기능을 활성화해도 포트의 다른 핀을 일반 디지털 I / O로 사용하는 데 영향을주지 않습니다.

일반 디지털 I / O로서의 포트

포트는 내부 풀업 옵션이있는 양방향 I / O 포트입니다. 그림 10-2 여기에서는 일반적으로 Pxn이라고하는 하나의 I / O 포트 핀에 대한 기능 설명을 보여줍니다.

그림 10-2. 일반 디지털 I/O(1)

그림10

핀 구성

각 포트 핀은 DDxn, PORTxn 및 PINxn의 세 개의 레지스터 비트로 구성됩니다. 과 같이 "등록 설명" 64페이지, DDxn 비트는 DDRx I / O 주소에서, PORTxn 비트는 PORTx I / O 주소에서, PINxn 비트는 PINx I / O 주소에서 액세스됩니다.

DDRx 레지스터의 DDxn 비트는이 핀의 방향을 선택합니다. DDxn이 로직 XNUMX로 쓰여진 경우 Pxn은 출력 핀으로 구성됩니다. DDxn이 로직 XNUMX으로 쓰여진 경우 Pxn은 입력 핀으로 구성됩니다.

핀이 입력 핀으로 구성 될 때 PORTxn이 로직 XNUMX로 작성되면 풀업 저항이 활성화됩니다. 풀업 저항을 끄려면 PORTxn을 로직 XNUMX으로 작성하거나 핀을 출력 핀으로 구성해야합니다. 포트 핀은 클럭이 실행되지 않더라도 재설정 조건이 활성화 될 때 세 가지 상태로 표시됩니다.

핀이 출력 핀으로 구성 될 때 PORTxn이 로직 XNUMX로 기록되면 포트 핀은 하이 (XNUMX)로 구동됩니다. 핀이 출력 핀으로 구성 될 때 PORTxn이 로직 XNUMX으로 기록되면 포트 핀은 로우 (제로)로 구동됩니다.

핀 토글

PINxn에 논리 XNUMX을 쓰면 DDRxn 값에 관계없이 PORTxn 값이 전환됩니다. SBI 명령을 사용하여 포트에서 단일 비트를 토글 할 수 있습니다.

입력과 출력 간 전환

0가지 상태({DDxn, PORTxn} = 00b0)와 출력 높음({DDxn, PORTxn} = 11b0) 사이에서 전환할 때 풀업이 활성화된 중간 상태({DDxn, PORTxn} = 01b0) 또는 출력 낮음 ({DDxn, PORTxn} = 10bXNUMX)이 발생해야 합니다. 일반적으로 풀업 활성화 상태는 높은 임피던스 환경에서 강력한 하이 드라이버와 풀업 사이의 차이를 인식하지 못하므로 완전히 허용됩니다. 그렇지 않은 경우 MCUCR 레지스터의 PUD 비트를 설정하여 모든 포트의 모든 풀업을 비활성화할 수 있습니다.

풀업 입력과 출력 로우 사이를 전환하면 동일한 문제가 발생합니다. 사용자는 중간 단계로 삼중 상태 ({DDxn, PORTxn} = 0b00) 또는 출력 하이 상태 ({DDxn, PORTxn} = 0b10)를 사용해야합니다.

표 10-1 핀 값에 대한 제어 신호를 요약합니다.

표 10-1. 포트 핀 구성

DDxn 포트 xn 푸딩

(MCUCR에서)

입출력 풀업 논평
0 0 X 입력 아니요 XNUMX상(Hi-Z)
0 1 0 입력 Pxn은 ext. 낮게 당겼다.
0 1 1 입력 아니요 XNUMX상(Hi-Z)
1 0 X 산출 아니요 낮은 출력 (싱크)
1 1 X 산출 아니요 출력 높음 (소스)

핀 값 읽기

데이터 방향 비트 DDxn의 설정에 관계없이 포트 핀은 PINxn 레지스터 비트를 통해 읽을 수 있습니다. 과 같이 그림 10-2, PINxn 레지스터 비트 및 선행 래치는 동기화기를 구성합니다. 이는 물리적 핀이 내부 클록의 가장자리 근처에서 값을 변경하는 경우 준 안정성을 피하기 위해 필요하지만 지연도 발생합니다. 그림 10-3 외부에서 적용된 핀 값을 읽을 때 동기화의 타이밍 다이어그램을 보여줍니다. 최대 및 최소 전파 지연은 각각 tpd,max 및 tpd,min으로 표시됩니다.

시스템 클록의 첫 번째 하강 에지 직후에 시작되는 클록주기를 고려하십시오. 래치는 클럭이 낮을 때 닫히고 클럭이 높으면 "SYNC LATCH"신호의 음영 처리 된 영역으로 표시됩니다. 시스템 클럭이 낮아지면 신호 값이 래치됩니다. 이어지는 양의 클럭 에지에서 PINxn 레지스터로 클럭됩니다. 두 개의 화살표 tpd, max 및 tpd, min으로 표시된 것처럼 핀의 단일 신호 전환은 어설 션 시간에 따라 ½ 및 1½ 시스템 클록주기 사이에서 지연됩니다.

소프트웨어에서 할당 된 핀 값을 다시 읽을 때 다음과 같이 nop 명령어를 삽입해야합니다. 그림 10-4. out 명령은 클럭의 양의 에지에서 "SYNC LATCH"신호를 설정합니다. 이 경우 동기화기를 통한 지연 tpd는 하나의 시스템 클럭주기입니다.

다음 코드 예ample는 포트 B 핀 0과 1을 높게, 2와 3을 낮게 설정하고 포트 핀 4에서 5까지의 포트 핀을 포트 핀 4에 풀업이 할당된 입력으로 정의하는 방법을 보여줍니다. 결과 핀 값은 다시 읽혀지지만 이전에 논의한 바와 같이 최근에 일부 핀에 할당된 값을 다시 읽을 수 있도록 nop 명령어가 포함되어 있습니다.

어셈블리 코드 예ample(1)

; 풀업을 정의하고 출력을 높게 설정

; 포트 핀의 방향 정의

ldi        r16,(1<<PB4)|(1<<PB1)|(1<<PB0)

ldi        r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0)

출력 포트B,r16

출력 DDRB,r17

; 동기화를 위해 nop 삽입

아니다

; 포트 핀 읽기

r16에서, PINB

참고: 어셈블리 프로그램의 경우 풀업이 핀 0, 1 및 4에 설정되는 시간을 최소화하기 위해 두 개의 임시 레지스터가 사용되며 방향 비트가 올바르게 설정되어 비트 2 및 3을 로우로 정의하고 비트 0 및 비트를 다시 정의할 때까지 1 강력한 하이 드라이버.

C 코드 예ample
부호 없는 문자 i;

/* 풀업을 정의하고 출력을 높게 설정 */

/* 포트 핀의 방향 정의 */ PORTB = (1<

DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0);

/* 동기화를 위한 nop 삽입*/

_NOP ();

/* 포트 핀 읽기 */ i = PINB;

디지털 입력 활성화 및 절전 모드

표시된 바와 같이 그림 10-2, 디지털 입력 신호는 clamp슈미트 트리거의 입력에서 접지됩니다. 그림에서 SLEEP으로 표시된 신호는 일부 입력 신호가 플로팅 상태로 남아 있거나 아날로그 신호 레벨이 VCC/2에 가까운 경우 높은 전력 소비를 방지하기 위해 전원 차단 모드에서 MCU 절전 컨트롤러에 의해 설정됩니다.

SLEEP은 외부 인터럽트 핀으로 활성화 된 포트 핀에 대해 무시됩니다. 외부 인터럽트 요청이 활성화되지 않은 경우 이러한 핀에 대해서도 SLEEP이 활성화됩니다. SLEEP은 또한에 설명 된 다양한 다른 대체 기능으로 대체됩니다. 57 페이지의 "대체 포트 기능".

외부 인터럽트가 활성화되지 않은 상태에서 "상승 에지, 하강 에지 또는 핀의 로직 변경 시 인터럽트"로 구성된 비동기 외부 인터럽트 핀에 로직 하이 레벨("XNUMX")이 있는 경우 해당 외부 인터럽트 플래그는 위에서 언급한 절전 모드에서 재개할 때 cl로 설정해야 합니다.amp이러한 절전 모드에서 ing하면 요청된 논리 변경이 생성됩니다.

연결되지 않은 핀

일부 핀이 사용되지 않는 경우 이러한 핀에 정의 된 레벨이 있는지 확인하는 것이 좋습니다. 위에서 설명한대로 대부분의 디지털 입력이 딥 슬립 모드에서 비활성화 되더라도 디지털 입력이 활성화 된 다른 모든 모드 (리셋, 활성 모드 및 유휴 모드)에서 전류 소비를 줄이려면 부동 입력을 피해야합니다.

미사용 핀의 정의된 수준을 보장하는 가장 간단한 방법은 내부 풀업을 활성화하는 것입니다. 이 경우 재설정 중에 풀업이 비활성화됩니다. 리셋 시 저전력 소모가 중요한 경우 외부 풀업 또는 풀다운을 사용하는 것이 좋습니다. 사용하지 않는 핀을 VCC 또는 GND에 직접 연결하는 것은 권장하지 않습니다. 핀이 실수로 출력으로 구성되면 과도한 전류가 발생할 수 있기 때문입니다.

대체 포트 기능

대부분의 포트 핀에는 일반 디지털 I / O 외에 대체 기능이 있습니다. 그림 10-5 포트 핀 제어 신호를 단순화 된 그림 10-2 대체 기능으로 재정의 될 수 있습니다. 재정의 신호가 모든 포트 핀에있는 것은 아니지만 그림은 AVR 마이크로 컨트롤러 제품군의 모든 포트 핀에 적용 할 수있는 일반적인 설명으로 사용됩니다.

표 10-2. 대체 함수에 대한 무시 신호에 대한 일반적인 설명

신호 이름 전체 이름 설명
푸오에 풀업 재정의 활성화 이 신호가 설정되면 PUOV 신호에 의해 풀업 활성화가 제어됩니다. 이 신호가 지워지면 풀업이 활성화됩니다.

{DDxn, 포트xn, PUD} = 0b010.

푸오브 풀업 재정의 값 PUOE가 설정된 경우 DDxn, PORTxn 및 PUD 레지스터 비트의 설정에 관계없이 PUOV가 설정 / 삭제 될 때 풀업이 활성화 / 비활성화됩니다.
도이 데이터 방향 무시 활성화 이 신호가 설정되면 출력 드라이버 활성화가 DDOV 신호에 의해 제어됩니다. 이 신호가 지워지면 출력 드라이버가 DDxn 레지스터 비트에 의해 활성화됩니다.
도브 데이터 방향 재정의 값 DDOE가 설정된 경우 DDxn 레지스터 비트의 설정에 관계없이 DDOV가 설정 / 삭제 될 때 출력 드라이버가 활성화 / 비활성화됩니다.
PVOE 포트 값 재정의 활성화 이 신호가 설정되고 출력 드라이버가 활성화 된 경우 포트 값은 PVOV 신호에 의해 제어됩니다. PVOE가 지워지고 출력 드라이버가 활성화 된 경우 포트 값은 PORTxn 레지스터 비트에 의해 제어됩니다.
PVOV 포트 값 무시 값 PVOE가 설정되면 PORTxn 레지스터 비트의 설정에 관계없이 포트 값이 PVOV로 설정됩니다.
프토 포트 토글 재정의 활성화 PTOE가 설정되면 PORTxn 레지스터 비트가 반전됩니다.
디에 디지털 입력 활성화 무시 활성화 이 비트가 설정되면 DIEOV 신호에 의해 디지털 입력 활성화가 제어됩니다. 이 신호가 지워지면 디지털 입력 활성화는 MCU 상태 (정상 모드, 절전 모드)에 의해 결정됩니다.
디에브 디지털 입력 활성화 무시 값 DIEOE가 설정된 경우 MCU 상태 (일반 모드, 절전 모드)에 관계없이 DIEOV가 설정 / 해제 될 때 디지털 입력이 활성화 / 비활성화됩니다.
DI 디지털 입력 이것은 대체 기능을위한 디지털 입력입니다. 그림에서 신호는 슈미트 트리거의 출력에 연결되지만 동기화 기 앞에 연결됩니다. 디지털 입력이 클럭 소스로 사용되지 않는 한 대체 기능이있는 모듈은 자체 동기화기를 사용합니다.
아이오 아날로그 입력 / 출력 이것은 대체 기능에 대한 아날로그 입력 / 출력입니다. 신호는 패드에 직접 연결되며 양방향으로 사용할 수 있습니다.

다음 하위 섹션에서는 각 포트에 대한 대체 기능을 간략하게 설명하고 대체 신호를 대체 기능과 관련시킵니다. 자세한 내용은 대체 기능 설명을 참조하십시오.

포트 B의 대체 기능

대체 기능이있는 포트 B 핀은 다음과 같습니다. 표 10-3.

표 10-3. 포트 B 핀 대체 기능

포트 핀 대체 기능
PB5

재설정 : 핀 재설정

dW : debugWIRE I / O ADC0 : ADC 입력 채널 0

PCINT5 : 핀 변경 인터럽트, 소스 5

PB4 XTAL2 : 수정 발진기 출력 CLKO : 시스템 클록 출력 ADC2 : ADC 입력 채널 2

OC1B : 타이머 / 카운터 1 비교 매치 B 출력 PCINT4 : 핀 변경 인터럽트 0, 소스 4

PB3 XTAL1: 수정 발진기 입력 CLKI: 외부 클럭 입력 ADC3: ADC 입력 채널 3

OC1B : 보완 타이머 / 카운터 1 비교 매치 B 출력 PCINT3 : 핀 변경 인터럽트 0, 소스 3

PB2 SCK : 직렬 클록 입력 ADC1 : ADC 입력 채널 1

T0 : 타이머 / 카운터 0 클럭 소스 USCK : USI 클럭 (0 선 모드) SCL : USI 클럭 (0 선 모드) INT2 : 외부 인터럽트 0 입력 PCINT2 : 핀 변경 인터럽트 XNUMX, 소스 XNUMX

PB1 MISO : SPI 마스터 데이터 입력 / 슬레이브 데이터 출력 AIN1 : 아날로그 비교기, 네거티브 입력 OC0B : 타이머 / 카운터 0 비교 매치 B 출력 OC1A : 타이머 / 카운터 1 비교 매치 A 출력 DO : USI 데이터 출력 (1 선 모드) PCINT0 : 핀 변경 인터럽트 1, 소스 XNUMX
PB0 MOSI :: SPI 마스터 데이터 출력 / 슬레이브 데이터 입력 AIN0 : 아날로그 비교기, 포지티브 입력

OC0A: 타이머/카운터0 비교 매치 A 출력

OC1A : 보완 타이머 / 카운터 1 비교 매치 A 출력 DI : USI 데이터 입력 (XNUMX 선 모드)

SDA : USI 데이터 입력 (0 선 모드) AREF : 외부 아날로그 기준 PCINT0 : 핀 변경 인터럽트 0, 소스 XNUMX

포트 B, 비트 5 – RESET / dW / ADC0 / PCINT5

RESET : 외부 리셋 입력은 RSTDISBL 퓨즈를 프로그래밍 해제 ( "1")하면 로우로 활성화됩니다. 핀이 RESET 핀으로 사용되면 풀업이 활성화되고 출력 드라이버와 디지털 입력이 비활성화됩니다.

dW : debugWIRE 활성화 (DWEN) 퓨즈가 프로그래밍되고 잠금 비트가 프로그래밍되지 않은 경우 대상 장치 내의 debugWIRE 시스템이 활성화됩니다. RESET 포트 핀은 풀업이 활성화 된 와이어 AND (오픈 드레인) 양방향 I / O 핀으로 구성되며 타겟과 에뮬레이터 사이의 통신 게이트웨이가됩니다.

ADC0: 아날로그-디지털 변환기, 채널 0.

PCINT5 : 핀 변경 인터럽트 소스 5.

포트 B, 비트 4 – XTAL2 / CLKO / ADC2 / OC1B / PCINT4

XTAL2 : 칩 클록 오실레이터 핀 2. 내부 보정 가능한 RC 오실레이터 및 외부 클록을 제외한 모든 칩 클록 소스의 클록 핀으로 사용됩니다. 클럭 핀으로 사용되는 경우 핀은 I / O 핀으로 사용할 수 없습니다. 내부 캘리브레이션 가능한 RC 오실레이터 또는 외부 클럭을 칩 클럭 소스로 사용할 때 PB4는 일반 I / O 핀 역할을합니다.

CLKO : 분할 된 시스템 클럭은 핀 PB4에서 출력 될 수 있습니다. 분할 된 시스템 클록은 PORTB4 및 DDB4 설정에 관계없이 CKOUT 퓨즈가 프로그래밍 된 경우 출력됩니다. 리셋 중에도 출력됩니다.

ADC2: 아날로그-디지털 변환기, 채널 2.

OC1B : 출력 비교 일치 출력 : PB4 핀은 출력 (DDB1 세트)으로 구성 될 때 타이머 / 카운터 4 비교 일치 B에 대한 외부 출력으로 사용할 수 있습니다. OC1B 핀은 PWM 모드 타이머 기능의 출력 핀이기도합니다.

PCINT4 : 핀 변경 인터럽트 소스 4.

포트 B, 비트 3 – XTAL1 / CLKI / ADC3 / OC1B / PCINT3

XTAL1 : 칩 클럭 오실레이터 핀 1. 내부 보정 가능한 RC 오실레이터를 제외한 모든 칩 클럭 소스에 사용됩니다. 클럭 핀으로 사용하는 경우 핀은 I / O 핀으로 사용할 수 없습니다.

CLKI : 외부 클럭 소스의 클럭 입력 26 페이지의 "외부 시계".

ADC3: 아날로그-디지털 변환기, 채널 3.

OC1B : 반전 출력 비교 일치 출력 : PB3 핀은 출력 (DDB1 세트)으로 구성된 경우 타이머 / 카운터 3 비교 일치 B에 대한 외부 출력으로 사용할 수 있습니다. OC1B 핀은 PWM 모드 타이머 기능을위한 반전 출력 핀이기도합니다.

PCINT3 : 핀 변경 인터럽트 소스 3.

포트 B, 비트 2 – SCK / ADC1 / T0 / USCK / SCL / INT0 / PCINT2

SCK : 마스터 클럭 출력, SPI 채널 용 슬레이브 클럭 입력 핀. SPI가 슬레이브로 활성화되면이 핀은 DDB2의 설정에 관계없이 입력으로 구성됩니다. SPI가 마스터로 활성화되면이 핀의 데이터 방향은 DDPB2에 의해 제어됩니다. 핀이 SPI에 의해 입력이되도록 강제 될 때 풀업은 여전히 ​​PORTB2 비트에 의해 제어 될 수 있습니다.

ADC1: 아날로그-디지털 변환기, 채널 1.

T0 : 타이머 / 카운터 0 카운터 소스.

USCK : XNUMX 선 모드 범용 직렬 인터페이스 클록.

SCL : USI XNUMX- 와이어 모드를위한 XNUMX- 와이어 모드 직렬 클록.

INT0 : 외부 인터럽트 소스 0.

PCINT2 : 핀 변경 인터럽트 소스 2.

포트 B, 비트 1 – MISO / AIN1 / OC0B / OC1A / DO / PCINT1

MISO : SPI 채널 용 마스터 데이터 입력, 슬레이브 데이터 출력 핀. SPI가 마스터로 활성화되면이 핀은 DDB1의 설정에 관계없이 입력으로 구성됩니다. SPI가 슬레이브로 활성화되면이 핀의 데이터 방향은 DDB1에 의해 제어됩니다. 핀이 SPI에 의해 입력이되도록 강제 될 때 풀업은 여전히 ​​PORTB1 비트에 의해 제어 될 수 있습니다.

AIN1 : 아날로그 비교기 네거티브 입력. 디지털 포트 기능이 아날로그 비교기의 기능을 방해하지 않도록 내부 풀업을 끈 상태에서 포트 핀을 입력으로 구성합니다.

OC0B : 출력 비교 일치 출력. PB1 핀은 Timer / Counter0 Compare Match B의 외부 출력 역할을 할 수 있습니다. PB1 핀은이 기능을 제공하기 위해 출력 (DDB1 세트 (0))으로 구성되어야합니다. OCXNUMXB 핀은 PWM 모드 타이머 기능의 출력 핀이기도합니다.

OC1A : 출력 비교 일치 출력 : PB1 핀은 출력 (DDB1 세트)으로 구성된 경우 타이머 / 카운터 1 비교 일치 B의 외부 출력으로 사용할 수 있습니다. OC1A 핀은 PWM 모드 타이머 기능을위한 출력 핀이기도합니다.

DO : 1 선 모드 범용 직렬 인터페이스 데이터 출력. 1 선 모드 데이터 출력은 PORTB1 값보다 우선하며 데이터 방향 비트 DDB1이 설정되면 (XNUMX) 포트로 구동됩니다. 방향이 입력되고 PORTBXNUMX이 설정된 경우 (하나) PORTBXNUMX은 여전히 ​​풀업을 활성화합니다.

PCINT1 : 핀 변경 인터럽트 소스 1.

포트 B, 비트 0 – MOSI / AIN0 / OC0A / OC1A / DI / SDA / AREF / PCINT0

MOSI : SPI 마스터 데이터 출력, SPI 채널 용 슬레이브 데이터 입력. SPI가 슬레이브로 활성화되면이 핀은 DDB0의 설정에 관계없이 입력으로 구성됩니다. SPI가 마스터로 활성화되면이 핀의 데이터 방향은 DDB0에 의해 제어됩니다. 핀이 SPI에 의해 입력이되도록 강제 될 때 풀업은 여전히 ​​PORTB0 비트에 의해 제어 될 수 있습니다.

AIN0 : 아날로그 비교기 포지티브 입력. 디지털 포트 기능이 아날로그 비교기의 기능을 방해하지 않도록 내부 풀업을 끈 상태에서 포트 핀을 입력으로 구성합니다.

OC0A : 출력 비교 일치 출력. PB0 핀은 출력으로 구성 될 때 타이머 / 카운터 0 비교 일치 A에 대한 외부 출력 역할을 할 수 있습니다 (DDB0 세트 (0)). OCXNUMXA 핀은 PWM 모드 타이머 기능의 출력 핀이기도합니다.

OC1A : Inverted Output Compare Match 출력 : PB0 핀은 출력 (DDB1 세트)으로 구성된 경우 타이머 / 카운터 0 비교 일치 B의 외부 출력으로 사용할 수 있습니다. OC1A 핀은 PWM 모드 타이머 기능을위한 반전 출력 핀이기도합니다.

SDA : XNUMX 선 모드 직렬 인터페이스 데이터.

AREF: ADC용 외부 아날로그 참조. 핀이 외부 참조 또는 내부 Vol로 사용되는 경우 PB0에서 풀업 및 출력 드라이버가 비활성화됩니다.tage AREF 핀에서 외부 커패시터를 사용한 레퍼런스.

DI : USI XNUMX 선 모드에서 데이터 입력. USI Three-wire 모드는 일반 포트 기능을 재정의하지 않으므로 DI 기능을위한 입력으로 핀을 구성해야합니다.

PCINT0 : 핀 변경 인터럽트 소스 0.

표 10-4 그리고 표 10-5 포트 B의 대체 기능을 다음에 표시된 대체 신호와 연결합니다. 그림 10-5 on 58페이지.

표 10-4. PB[5:3]의 대체 기능에 대한 신호 재정의

신호 이름 PB5 / 리셋 / ADC0 / PCINT5 PB4/ADC2/XTAL2/ OC1B/PCINT4 PB3/ADC3/XTAL1/ OC1B/PCINT3
푸오에

RSTDISBL(1) • 드웬(1)

0 0
푸오브 1 0 0
도이 RSTDISBL(1) • 드웬(1) 0 0
도브 debugWire 전송 0 0
PVOE 0 OC1B 활성화

OC1B 활성화

PVOV 0 OC1B OC1B
프토 0 0 0
디에

RSTDISBL(1) + (PCINT5 • PCIE + ADC0D)

PCINT4 • PCIe + ADC2D PCINT3 • PCIe + ADC3D
디에브 ADC0D ADC2D ADC3D
DI PCINT5 입력 PCINT4 입력 PCINT3 입력
아이오 RESET 입력, ADC0 입력 ADC2 입력 ADC3 입력

참고: 퓨즈가 "0"(프로그래밍됨)일 때.

표 10-5. PB[2:0]의 대체 기능에 대한 신호 재정의

신호 이름 PB2/SCK/ADC1/T0/ USCK/SCL/INT0/PCINT2 PB1/MISO/DO/AIN1/ OC1A/OC0B/PCINT1 PB0/MOSI/DI/SDA/AIN0/AR EF/OC1A/OC0A/

PCINT0

푸오에 USI_TWO_WIRE 0 USI_TWO_WIRE
푸오브 0 0 0
도이 USI_TWO_WIRE 0 USI_TWO_WIRE
도브 (USI_SCL_HOLD + PORTB2) • DDB2 0  

(SDA + 포트B0) • DDB0

PVOE USI_TWO_WIRE • DDB2 OC0B 활성화 + OC1A 활성화 + USI_THREE_WIRE

OC0A 활성화 + OC1A 활성화 + (USI_TWO_WIRE

DDB0)

PVOV 0 OC0B + OC1A + DO

OC0A + OC1A

프토 미국 국제무역위원회(ITC) 0 0
디에 PCINT2 • PCIE + ADC1D + USISIE PCINT1 • PCIE + AIN1D PCINT0 • PCIE + AIN0D + USISIE
디에브 ADC1D AIN1D AIN0D
DI T0 / USCK / SCL / INT0 /

PCINT2 입력

PCINT1 입력 DI / SDA / PCINT0 입력
아이오 ADC1 입력 아날로그 비교기 네거티브 입력 아날로그 비교기 포지티브 입력

등록 설명

MCUCR – MCU 제어 레지스터

조금 7 6 5 4 3 2 1 0
0x35 보드 푸딩 SE SM1 SM0 보드세 ISC01 ISC00 MCUCR
읽기/쓰기 R 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 R 읽기/쓰기 읽기/쓰기
초기값 0 0 0 0 0 0 0 0

비트 6 – PUD : 풀업 비활성화

이 비트가 0에 기록되면 DDxn 및 PORTxn 레지스터가 풀업을 활성화하도록 구성된 경우에도 I / O 포트의 풀업이 비활성화됩니다 ({DDxn, PORTxn} = 01bXNUMX). 보다 54 페이지의 "핀 구성" 이 기능에 대한 자세한 내용은

PORTB – 포트 B 데이터 레지스터

조금 7 6 5 4 3 2 1 0
0x18 포트B5 포트B4 포트B3 포트B2 포트B1 포트B0 포트
읽기/쓰기 R R 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기
초기값 0 0 0 0 0 0 0 0

DDRB – 포트 B 데이터 방향 레지스터

조금 7 6 5 4 3 2 1 0
0x17 DDB5 DDB4 DDB3 DDB2 DDB1 DDB0 DDRB
읽기/쓰기 R R 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기
초기값 0 0 0 0 0 0 0 0

PINB – 포트 B 입력 핀 주소

조금 7 6 5 4 3 2 1 0
0x16 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0
읽기/쓰기 R R 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기 읽기/쓰기
초기값 0 0 없음 없음 없음 없음 없음 없음

PWM 포함 8 비트 타이머 / 카운터 0

특징

XNUMX 개의 독립적 인 출력 비교 장치

이중 버퍼 출력 비교 레지스터

비교 경기에서 타이머 지우기 (자동 새로 고침)

글리치없는 위상 보정 펄스 폭 변조기 (PWM)

가변 PWM 기간

주파수 발생기

0 개의 독립 인터럽트 소스 (TOV0, OCF0A 및 OCFXNUMXB)

위에view

Timer / Counter0은 8 개의 독립적 인 출력 비교 장치가 있고 PWM을 지원하는 범용 XNUMX 비트 타이머 / 카운터 모듈입니다. 정확한 프로그램 실행 타이밍 (이벤트 관리) 및 웨이브 생성이 가능합니다.

8 비트 타이머 / 카운터의 단순화 된 블록 다이어그램은 다음과 같습니다. 그림 11-1. I / O 핀의 실제 배치는 다음을 참조하십시오. 25 페이지의 "Pinout ATtiny45 / 85 / 2". I / O 비트 및 I / O 핀을 포함하여 CPU 액세스 가능 I / O 레지스터는 굵게 표시되어 있습니다. 장치 별 I / O 레지스터 및 비트 위치는 77 페이지의 "등록 설명".

타이머/카운터(TCNT0) 및 출력 비교 레지스터(OCR0A 및 OCR0B)는 8비트 레지스터입니다. 인터럽트 요청(그림에서 Int.Req.로 약칭됨) 신호는 모두 타이머 인터럽트 플래그 레지스터(TIFR)에서 볼 수 있습니다. 모든 인터럽트는 타이머 인터럽트 마스크 레지스터(TIMSK)로 개별적으로 마스킹됩니다. TIFR 및 TIMSK는 그림에 표시되지 않습니다.

타이머/카운터는 프리스케일러 또는 T0 핀의 외부 클럭 소스를 통해 내부적으로 클럭킹될 수 있습니다. 클럭 선택 논리 블록은 타이머/카운터가 값을 증가(또는 감소)하는 데 사용하는 클럭 소스 및 에지를 제어합니다. 클럭 소스를 선택하지 않으면 타이머/카운터가 비활성화됩니다. 클록 선택 논리의 출력을 타이머 클록(clkT0)이라고 합니다.

이중 버퍼 출력 비교 레지스터 (OCR0A 및 OCR0B)는 항상 타이머 / 카운터 값과 비교됩니다. 비교 결과는 파형 발생기에서 출력 비교 핀 (OC0A 및 OC0B)에서 PWM 또는 가변 주파수 출력을 생성하는 데 사용할 수 있습니다. 69 페이지의 "출력 비교 장치"를 참조하십시오. 자세한 내용은. 비교 일치 이벤트는 출력 비교 인터럽트 요청을 생성하는 데 사용할 수있는 비교 플래그 (OCF0A 또는 OCF0B)도 설정합니다.

정의

이 섹션의 많은 레지스터 및 비트 참조는 일반적인 형식으로 작성됩니다. 소문자 "n"은 타이머 / 카운터 번호 (이 경우 0)를 대체합니다. 소문자 "x"는 출력 비교 장치 (이 경우 비교 장치 A 또는 비교 장치 B)를 대체합니다. 그러나 레지스터 또는 비트를 사용할 때 프로그램에서 Timer / Counter0 카운터 값 등에 접근하기 위해서는 TCNT0과 같은 정확한 형식을 사용해야합니다.

의 정의 표 11-1 문서 전체에서 광범위하게 사용됩니다.

표 11-1. 정의

끊임없는 설명
맨 아래 카운터가 0x00이되면 BOTTOM에 도달합니다.
맥스 카운터가 0xFF (십진수 255)가되면 MAXimum에 도달합니다.
맨 위 카운터는 카운트 시퀀스에서 가장 높은 값과 같을 때 TOP에 도달합니다. TOP 값은 고정 값 0xFF (MAX) 또는 OCR0A 레지스터에 저장된 값으로 할당 할 수 있습니다. 할당은 작동 모드에 따라 다릅니다.

타이머 / 카운터 프리스케일러 및 클록 소스

타이머 / 카운터는 내부 또는 외부 클록 소스에 의해 클록 킹 될 수 있습니다. 클럭 소스는 Timer / Counter0 제어 레지스터 (TCCR0B)에있는 클럭 선택 (c) 비트에 의해 제어되는 클럭 선택 로직에 의해 선택됩니다.

프리스케일러가있는 내부 클록 소스

타이머/카운터0은 시스템 시계에서 직접 시간을 기록할 수 있습니다(CS0[2:0] = 1 설정). 이는 시스템 클록 주파수(fCLK_I/O)와 동일한 최대 타이머/카운터 클록 주파수로 가장 빠른 작동을 제공합니다. 또는 프리스케일러의 XNUMX개 탭 중 하나를 클럭 소스로 사용할 수 있습니다. 사전 조정된 클록은 다음 중 하나의 주파수를 갖습니다.

프리스케일러 재설정

프리스케일러는 자유 실행, 즉 타이머/카운터0의 클럭 선택 로직과 독립적으로 작동합니다. 프리스케일러는 타이머/카운터의 클럭 선택에 영향을 받지 않기 때문에 프리스케일러의 상태는 프리스케일링된 클럭이 사용되는 상황에 영향을 미칩니다. 한 전amp프리스케일링 아티팩트의 파일은 타이머/카운터가 활성화되고 프리스케일러에 의해 클럭되는 경우입니다(6 > CS0[2:0] > 1). 타이머가 활성화된 시점부터 첫 번째 카운트가 발생할 때까지의 시스템 클록 주기 수는 1에서 N+1 시스템 클록 주기까지일 수 있습니다. 여기서 N은 프리스케일러 제수(8, 64, 256 또는 1024)와 같습니다.

타이머 / 카운터를 프로그램 실행에 동기화하기 위해 프리스케일러 재설정을 사용할 수 있습니다.

외부 클록 소스

T0 핀에 적용된 외부 클럭 소스는 타이머/카운터 클럭(clkT0)으로 사용할 수 있습니다. T0 핀은 samp핀 동기화 로직에 의해 매 시스템 클록 주기마다 한 번씩 주도됩니다. 동기화된ampled) 신호가 전달됩니다.

가장자리 감지기를 통해. 그림 11-2 T0 동기화 및 에지 검출기 논리의 기능 등가 블록 다이어그램을 보여줍니다. 레지스터는 내부 시스템 클럭(clkI/O)의 양의 에지에서 클럭됩니다. 래치는 내부 시스템 클록의 높은 기간에 투명합니다.

에지 감지기는 감지하는 각 포지티브(CS0[0:2] = 0) 또는 네거티브(CS7[0:2] = 0) 에지에 대해 하나의 clkT6 펄스를 생성합니다.

펄스 폭 변조 (PWM) 모드를 사용할 때 OCR0x 레지스터는 이중 버퍼링됩니다. 일반 및 CTC (Clear Timer on Compare) 작동 모드의 경우 이중 버퍼링이 비활성화됩니다. 이중 버퍼링은 OCR0x 비교 레지스터의 업데이트를 카운팅 시퀀스의 상단 또는 하단에 동기화합니다. 동기화는 홀수 길이의 비대칭 PWM 펄스 발생을 방지하여 출력에 결함이 없도록합니다.

OCR0x 레지스터 액세스가 복잡해 보일 수 있지만 그렇지 않습니다. 이중 버퍼링이 활성화되면 CPU는 OCR0x 버퍼 레지스터에 액세스하고 이중 버퍼링이 비활성화 된 경우 CPU는 OCR0x에 직접 액세스합니다.

강제 출력 비교

비 PWM 파형 생성 모드에서는 FOC0x (Force Output Compare) 비트에 0을 기록하여 비교기의 일치 출력을 강제 할 수 있습니다. 강제 비교 일치는 OCF0x 플래그를 설정하거나 타이머를 다시로드 / 삭제하지 않지만 실제 비교 일치가 발생한 것처럼 OC0x 핀이 업데이트됩니다 (COM1x [0 : 0] 비트 설정은 OCXNUMXx 핀 설정 여부를 정의합니다. 또는 토글 됨).

TCNT0 쓰기에 의한 일치 차단 비교

TCNT0 레지스터에 대한 모든 CPU 쓰기 작업은 타이머가 중지 된 경우에도 다음 타이머 클럭 사이클에서 발생하는 모든 비교 일치를 차단합니다. 이 기능을 사용하면 타이머 / 카운터 클럭이 활성화 된 경우 인터럽트를 트리거하지 않고 OCR0x를 TCNT0과 동일한 값으로 초기화 할 수 있습니다.

출력 비교 장치 사용

모든 작동 모드에서 TCNT0을 작성하면 하나의 타이머 클럭 사이클 동안 모든 비교 일치가 차단되므로 타이머 / 카운터가 실행 중인지 여부와 관계없이 출력 비교 장치를 사용할 때 TCNT0을 변경할 때 위험이 수반됩니다. TCNT0에 기록 된 값이 OCR0x 값과 같으면 Compare Match가 누락되어 잘못된 파형이 생성됩니다. 마찬가지로 카운터가 감소 할 때 BOTTOM과 같은 TCNT0 값을 쓰지 마십시오.

OC0x의 설정은 출력 할 포트 핀에 대한 데이터 방향 레지스터를 설정하기 전에 수행해야합니다. OC0x 값을 설정하는 가장 쉬운 방법은 일반 모드에서 FOC0x (Force Output Compare) 스트로브 비트를 사용하는 것입니다. OC0x 레지스터는 파형 생성 모드간에 변경하는 경우에도 값을 유지합니다.

COM0x [1 : 0] 비트는 비교 값과 함께 이중 버퍼링되지 않습니다. COM0x [1 : 0] 비트를 변경하면 즉시 적용됩니다.

일치 출력 단위 비교

비교 출력 모드 (COM0x [1 : 0]) 비트에는 두 가지 기능이 있습니다. 파형 발생기는 다음 비교 일치에서 출력 비교 (OC0x) 상태를 정의하기 위해 COM1x [0 : 0] 비트를 사용합니다. 또한 COM0x [1 : 0] 비트는 OC0x 핀 출력 소스를 제어합니다. 그림 11-6 COM0x [1 : 0] 비트 설정의 영향을받는 로직의 단순화 된 회로도를 보여줍니다. 그림에서 I / O 레지스터, I / O 비트 및 I / O 핀은 굵게 표시되어 있습니다. COM0x [1 : 0] 비트의 영향을받는 일반 I / O 포트 제어 레지스터 (DDR 및 PORT)의 일부만 표시됩니다. OC0x 상태를 참조 할 때 참조는 OC0x 핀이 아닌 내부 OC0x 레지스터에 대한 것입니다. 시스템 리셋이 발생하면 OC0x 레지스터는 "0"으로 리셋됩니다.

OC0A / OC0B가 I / O 핀에 연결되면 COM0A [1 : 0] / COM0B [1 : 0] 비트의 기능은 WGM0 [2 : 0] 비트 설정에 따라 다릅니다. 표 11-2 WGM0 [1 : 0] 비트가 일반 또는 CTC 모드 (비 PWM)로 설정된 경우 COM0x [2 : 0] 비트 기능을 보여줍니다.

표 11-2. 비교 출력 모드, 비 PWM 모드

COM0A1 COM0B1 COM0A0 COM0B0 설명
0 0 정상 포트 작동, OC0A / OC0B 연결 해제.
0 1 비교 일치에서 OC0A / OC0B 전환
1 0 비교 매치에서 OC0A / OC0B 지우기
1 1 비교 매치에서 OC0A / OC0B 설정

표 11-3 WGM0 [1 : 0] 비트가 고속 PWM 모드로 설정된 경우 COM0x [2 : 0] 비트 기능을 보여줍니다.

표 11-3. 출력 모드, 고속 PWM 모드 비교(1)

COM0A1 COM0B1 COM0A0 COM0B0 설명
0 0 정상 포트 작동, OC0A / OC0B 연결 해제.
0 1 예약된
1 0 Compare Match에서 OC0A / OC0B를 지우고 BOTTOM에서 OC0A / OC0B를 설정합니다 (비 반전 모드).
1 1 비교 일치에서 OC0A / OC0B 설정, BOTTOM에서 OC0A / OC0B 지우기 (반전 모드)

참고: OCR0A 또는 OCR0B가 TOP이고 COM0A1/COM0B1이 설정된 경우 특별한 경우가 발생합니다. 이 경우 비교 일치는 무시되지만 설정 또는 해제는 BOTTOM에서 수행됩니다. 보다 73 페이지의 "고속 PWM 모드" 자세한 내용은.

표 11-4 WGM0 [1 : 0] 비트가 위상 정정 PWM 모드로 설정된 경우 COM0x [2 : 0] 비트 기능을 보여줍니다.

표 11-4. 비교 출력 모드, 위상 보정 PWM 모드(1)

COM0A1 COM0B1 COM0A0 COM0B0 설명
0 0 정상 포트 작동, OC0A / OC0B 연결 해제.
0 1 예약된
1 0 업 카운팅시 비교 일치에서 OC0A / OC0B를 지 웁니다. 다운 카운팅시 비교 일치에서 OC0A / OC0B를 설정합니다.
1 1 업 카운팅시 Compare Match에 OC0A / OC0B를 설정합니다. 카운트 다운시 비교 일치에서 OC0A / OC0B를 지 웁니다.

참고: 1. OCR0A 또는 OCR0B가 TOP이고 COM0A1/COM0B1이 설정된 경우 특별한 경우가 발생합니다. 이 경우 비교 일치는 무시되지만 설정 또는 해제는 TOP에서 이루어집니다. 보다 74 페이지의 "위상 보정 PWM 모드" 자세한 내용은.

비트 3 : 2 – 해상도 : 예약 된 비트

이 비트는 ATtiny25 / 45 / 85에서 예약 된 비트이며 항상 XNUMX으로 읽습니다.

비트 1 : 0 – WGM0 [1 : 0] : 파형 생성 모드

TCCR02B 레지스터에있는 WGM0 비트와 결합 된이 비트는 카운터의 계수 순서, 최대 (TOP) 카운터 값의 소스 및 사용할 파형 생성 유형을 제어합니다. 표 11-5. 타이머 / 카운터 장치에서 지원하는 작동 모드는 일반 모드 (카운터), CTC (비교시 타이머 지우기) 모드 및 두 가지 유형의 PWM (Pulse Width Modulation) 모드입니다 (참조 : "작동 모드" 71페이지에).

표 11-5. 파형 생성 모드 비트 설명

방법 우결 02 우결 01 우결 00 타이머 / 카운터 작동 모드 맨 위 OCRx 업데이트 TOV 플래그 설정
0 0 0 0 정상 0xFF 즉각적인 맥스(1)
1 0 0 1 PWM, 위상 보정 0xFF 맨 위 맨 아래(2)
2 0 1 0 씨티씨씨 오크라 즉각적인 맥스(1)
3 0 1 1 빠른 PWM 0xFF 맨 아래(2) 맥스(1)
4 1 0 0 예약된
5 1 0 1 PWM, 위상 보정 오크라 맨 위 맨 아래(2)
6 1 1 0 예약된
7 1 1 1 빠른 PWM 오크라 맨 아래(2) 맨 위

비트 7 – FOC0A : 강제 출력 비교 A

FOC0A 비트는 WGM 비트가 비 PWM 모드를 지정하는 경우에만 활성화됩니다.

그러나 향후 장치와의 호환성을 보장하려면 PWM 모드에서 작동 할 때 TCCR0B가 기록 될 때이 비트를 0으로 설정해야합니다. 논리 0을 FOC0A 비트에 쓸 때 즉시 비교 일치가 파형 생성 장치에 강제로 적용됩니다. OC1A 출력은 COM0A [0 : 0] 비트 설정에 따라 변경됩니다. FOC1A 비트는 스트로브로 구현됩니다. 따라서 강제 비교의 효과를 결정하는 것은 COM0A [XNUMX : XNUMX] 비트에있는 값입니다.

FOC0A 스트로브는 인터럽트를 생성하지 않으며 OCR0A를 TOP으로 사용하는 CTC 모드에서 타이머를 삭제하지 않습니다. FOC0A 비트는 항상 XNUMX으로 읽습니다.

비트 6 – FOC0B : 강제 출력 비교 B

FOC0B 비트는 WGM 비트가 비 PWM 모드를 지정하는 경우에만 활성화됩니다.

그러나 향후 장치와의 호환성을 보장하려면 PWM 모드에서 작동 할 때 TCCR0B가 기록 될 때이 비트를 0으로 설정해야합니다. 논리 0을 FOC0B 비트에 쓸 때 즉시 비교 일치가 파형 생성 장치에 강제로 적용됩니다. OC1B 출력은 COM0B [0 : 0] 비트 설정에 따라 변경됩니다. FOC1B 비트는 스트로브로 구현됩니다. 따라서 강제 비교의 효과를 결정하는 것은 COM0B [XNUMX : XNUMX] 비트에있는 값입니다.

FOC0B 스트로브는 인터럽트를 생성하지 않으며 OCR0B를 TOP으로 사용하는 CTC 모드에서 타이머를 삭제하지 않습니다.

FOC0B 비트는 항상 XNUMX으로 읽습니다.

비트 5 : 4 – 해상도 : 예약 된 비트

이 비트는 ATtiny25 / 45 / 85에서 예약 된 비트이며 항상 XNUMX으로 읽습니다.

비트 3 – WGM02 : 파형 생성 모드

의 설명을 참조하십시오. 0 페이지의 "TCCR77A – 타이머 / 카운터 제어 레지스터 A".

비트 2 : 0 – CS0 [2 : 0] : 클럭 선택

세 개의 클럭 선택 비트는 타이머 / 카운터에서 사용할 클럭 소스를 선택합니다.

표 11-6. 클럭 선택 비트 설명

CS02 CS01 CS00 설명
0 0 0 클럭 소스 없음 (타이머 / 카운터 중지됨)
0 0 1 clkI/O/(사전 스케일링 없음)
0 1 0 clkI/O/8(프리스케일러에서)
0 1 1 clkI/O/64(프리스케일러에서)
1 0 0 clkI/O/256(프리스케일러에서)
1 0 1 clkI/O/1024(프리스케일러에서)
1 1 0 T0 핀의 외부 클록 소스. 떨어지는 가장자리에 시계.
1 1 1 T0 핀의 외부 클록 소스. 상승 에지에 시계.

Timer / Counter0에 외부 핀 모드를 사용하는 경우 T0 핀의 전환은 핀이 출력으로 구성되어 있어도 카운터를 클럭합니다. 이 기능을 사용하면 소프트웨어에서 계수를 제어 할 수 있습니다.

단위 카운터 및 비교

Timer / Counter1 일반 동작은 비동기 모드에서 설명하고 동기 모드에서의 동작은이 두 모드 사이에 차이가있는 경우에만 언급됩니다. 그림 12-2 타이머 / 카운터 1 동기화 레지스터 블록 다이어그램과 레지스터 간의 동기화 지연을 보여줍니다. 모든 클럭 게이팅 세부 사항은 그림에 표시되지 않습니다. Timer / Counter1 레지스터 값은 카운터 작동에 영향을 미치기 전에 입력 동기화 지연을 일으키는 내부 동기화 레지스터를 통과합니다. 레지스터 TCCR1, GTCCR, OCR1A, OCR1B 및 OCR1C는 레지스터를 쓴 후 바로 다시 읽을 수 있습니다. 입력 및 출력 동기화로 인해 타이머 / 카운터 1 (TCNT1) 레지스터 및 플래그 (OCF1A, OCF1B 및 TOV1)에 대해 읽기 값이 지연됩니다.

Timer / Counter1은 낮은 프리 스케일링 기회와 함께 높은 해상도와 높은 정확도 사용을 특징으로합니다. 또한 최대 8MHz (또는 저속 모드에서 64MHz)의 클럭 속도를 사용하여 32 개의 정확한 고속 1 비트 펄스 폭 변조기를 지원할 수 있습니다. 이 모드에서 Timer / CounterXNUMX 및 출력 비교 레지스터는 겹치지 않는 비 반전 및 반전 출력이있는 이중 독립형 PWM 역할을합니다. 인용하다 86페이지 이 기능에 대한 자세한 설명은 마찬가지로, 사전 확장 기회가 높기 때문에이 장치는 저속 기능이나 드물게 동작하는 정확한 타이밍 기능에 유용합니다.

그림 12-2. 타이머/카운터 1 동기화 레지스터 블록 다이어그램.

타이머 / 카운터 1 및 프리스케일러를 사용하면 프리스케일러가 비동기 모드에서 고속 64MHz (또는 저속 모드에서 32MHz) PCK 클록에서 작동하는 동안 모든 클록 소스에서 CPU를 실행할 수 있습니다.

시스템 클럭 주파수는 PCK 주파수의 1/XNUMX보다 낮아야합니다. 비동기식 타이머 / 카운터 XNUMX의 동기화 메커니즘은 시스템 클럭이 높을 때 PCK의 최소 XNUMX 개 에지가 필요합니다. 시스템 클럭의 주파수가 너무 높으면 데이터 또는 제어 값이 손실 될 위험이 있습니다.

다음은 그림 12-3 Timer / Counter1의 블록 다이어그램을 보여줍니다.

표 12-1. PWM 모드에서 비교 모드 선택

COM1x1 COM1x0 출력 비교 핀에 미치는 영향
0 0 OC1x가 연결되지 않았습니다. OC1x가 연결되지 않았습니다.
0 1 비교 일치에서 OC1x가 지워졌습니다. TCNT1 = $ 00 일 때 설정합니다. 비교 일치에 OC1x가 설정되었습니다. TCNT1 = $ 00 일 때 지워집니다.
1 0 비교 일치에서 OC1x가 지워졌습니다. TCNT1 = $ 00 일 때 설정됩니다. OC1x가 연결되지 않았습니다.
1 1 OC1x 비교 일치에 설정됩니다. TCNT1 = $ 00 일 때 지워집니다. OC1x가 연결되지 않았습니다.

ADC 특성

표 21-8. ADC 특성, 단일 종단 채널. TA = -40°C ~ +85°C

상징 매개변수 상태 최소 유형 맥스 단위
해결 10 비트
절대 정확도 (INL, DNL 및 양자화, 게인 및 오프셋 오류 포함) VREF = 4V, VCC = 4V,

ADC 클록 = 200kHz

2 엘에스비(LSB)
VREF = 4V, VCC = 4V,

ADC 클록 = 1MHz

3 엘에스비(LSB)
VREF = 4V, VCC = 4V,

ADC 클록 = 200kHz

노이즈 감소 모드

1.5 엘에스비(LSB)
VREF = 4V, VCC = 4V,

ADC 클록 = 1MHz

노이즈 감소 모드

2.5 엘에스비(LSB)
Integral Non-linearity (INL) (오프셋 및 이득 교정 후 정확도) VREF = 4V, VCC = 4V,

ADC 클록 = 200kHz

1 엘에스비(LSB)
차동 비선형 성 (DNL) VREF = 4V, VCC = 4V,

ADC 클록 = 200kHz

0.5 엘에스비(LSB)
이득 오류 VREF = 4V, VCC = 4V,

ADC 클록 = 200kHz

2.5 엘에스비(LSB)
오프셋 오류 VREF = 4V, VCC = 4V,

ADC 클록 = 200kHz

1.5 엘에스비(LSB)
변환 시간 자유 실행 변환 14 280 µs
클록 주파수 50 1000 kHz의
차량 등록 번호 입력 Voltage 접지 VREF V
입력 대역폭 38.4 kHz의
아레프 외부 참조 Voltage 2.0 (주)비씨씨 V
빈트 내부 볼륨tage 참조 1.0 1.1 1.2 V
내부 2.56V 레퍼런스 (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF 32
아날로그 입력 저항 100 엠Ω
ADC 출력 0 1023 엘에스비(LSB)

참고: 1. 값은 지침일 뿐입니다.

표 21-9. ADC 특성, 차동 채널(단극 모드). TA = -40°C ~ +85°C

상징 매개변수 상태 최소 유형 맥스 단위
해결 이득 = 1x 10 비트
이득 = 20x 10 비트
절대 정확도 (INL, DNL 및

양자화, 이득 및 오프셋 오류)

이득 = 1x

VREF = 4V, VCC = 5V

ADC 클록 = 50 – 200kHz

10.0 엘에스비(LSB)
이득 = 20x

VREF = 4V, VCC = 5V

ADC 클록 = 50 – 200kHz

20.0 엘에스비(LSB)
Integral Non-Linearity (INL) (오프셋 및 게인 교정 후 정확도) 이득 = 1x

VREF = 4V, VCC = 5V

ADC 클록 = 50 – 200kHz

4.0 엘에스비(LSB)
이득 = 20x

VREF = 4V, VCC = 5V

ADC 클록 = 50 – 200kHz

10.0 엘에스비(LSB)
이득 오류 이득 = 1x 10.0 엘에스비(LSB)
이득 = 20x 15.0 엘에스비(LSB)
오프셋 오류 이득 = 1x

VREF = 4V, VCC = 5V

ADC 클록 = 50 – 200kHz

3.0 엘에스비(LSB)
이득 = 20x

VREF = 4V, VCC = 5V

ADC 클록 = 50 – 200kHz

4.0 엘에스비(LSB)
변환 시간 자유 실행 변환 70 280 µs
클록 주파수 50 200 kHz의
차량 등록 번호 입력 Voltage 접지 (주)비씨씨 V
VDIFF 입력 차동 Voltage VREF/이득 V
입력 대역폭 4 kHz의
아레프 외부 참조 Voltage 2.0 VCC - 1.0 V
빈트 내부 볼륨tage 참조 1.0 1.1 1.2 V
내부 2.56V 레퍼런스 (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF 기준 입력 저항 32
아날로그 입력 저항 100 엠Ω
ADC 변환 출력 0 1023 엘에스비(LSB)

참고: 값은 지침일 뿐입니다.

표 21-10. ADC 특성, 차동 채널(바이폴라 모드). TA = -40°C ~ +85°C

상징 매개변수 상태 최소 유형 맥스 단위
해결 이득 = 1x 10 비트
이득 = 20x 10 비트
절대 정확도 (INL, DNL 및

양자화, 이득 및 오프셋 오류)

이득 = 1x

VREF = 4V, VCC = 5V

ADC 클록 = 50 – 200kHz

8.0 엘에스비(LSB)
이득 = 20x

VREF = 4V, VCC = 5V

ADC 클록 = 50 – 200kHz

8.0 엘에스비(LSB)
Integral Non-Linearity (INL) (오프셋 및 게인 교정 후 정확도) 이득 = 1x

VREF = 4V, VCC = 5V

ADC 클록 = 50 – 200kHz

4.0 엘에스비(LSB)
이득 = 20x

VREF = 4V, VCC = 5V

ADC 클록 = 50 – 200kHz

5.0 엘에스비(LSB)
이득 오류 이득 = 1x 4.0 엘에스비(LSB)
이득 = 20x 5.0 엘에스비(LSB)
오프셋 오류 이득 = 1x

VREF = 4V, VCC = 5V

ADC 클록 = 50 – 200kHz

3.0 엘에스비(LSB)
이득 = 20x

VREF = 4V, VCC = 5V

ADC 클록 = 50 – 200kHz

4.0 엘에스비(LSB)
변환 시간 자유 실행 변환 70 280 µs
클록 주파수 50 200 kHz의
차량 등록 번호 입력 Voltage 접지 (주)비씨씨 V
VDIFF 입력 차동 Voltage VREF/이득 V
입력 대역폭 4 kHz의
아레프 외부 참조 Voltage 2.0 VCC - 1.0 V
빈트 내부 볼륨tage 참조 1.0 1.1 1.2 V
내부 2.56V 레퍼런스 (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF 기준 입력 저항 32
아날로그 입력 저항 100 엠Ω
ADC 변환 출력 -512 511 엘에스비(LSB)

명령어 세트 요약

기억술 피연산자 설명 작업 깃발 # 시계
산술 및 논리 지침
추가하다 RD, RR 두 개의 레지스터 추가 Rd ← Rd + Rr Z, C, N, V, H 1
애드디씨 RD, RR Carry two Registers로 추가 Rd ← Rd + Rr + C Z, C, N, V, H 1
ADIW Rdl, K Word에 즉시 추가 Rdh:Rdl ← Rdh:Rdl + K Z, C, N, V, S 2
보결 RD, RR 두 레지스터 빼기 Rd ← Rd – Rr Z, C, N, V, H 1
수비 로드, 케이 레지스터에서 상수 빼기 Rd ← Rd – 케이 Z, C, N, V, H 1
(주) RD, RR 캐리 두 레지스터로 빼기 Rd ← Rd – Rr – C Z, C, N, V, H 1
SBCI 로드, 케이 Reg에서 Carry Constant로 빼기. Rd ← Rd – K – C Z, C, N, V, H 1
SBIW Rdl, K Word에서 즉시 빼기 Rdh:Rdl ← Rdh:Rdl – K Z, C, N, V, S 2
그리고 RD, RR 논리 AND 레지스터 Rd ← Rd ∙ Rr Z, N, V 1
앤디 로드, 케이 논리 AND 레지스터 및 상수 Rd ← Rd ∙ K Z, N, V 1
OR RD, RR 논리 OR 레지스터 Rd ← Rd v Rr Z, N, V 1
오리 로드, 케이 논리 OR 레지스터 및 상수 Rd ← Rd v K Z, N, V 1
이오알 RD, RR 독점 OR 레지스터 Rd ← Rd ⊕ Rr Z, N, V 1
코. Rd 하나의 보완 Rd ← 0xFF - Rd Z, C, N, V 1
NEG Rd 2의 보수 Rd ← 0x00 - Rd Z, C, N, V, H 1
에스비알 Rd, K 레지스터에서 비트 설정 Rd ← Rd v K Z, N, V 1
CR ... Rd, K 레지스터에서 비트 지우기 Rd ← Rd ∙ (0xFF – K) Z, N, V 1
주식회사 Rd 증가 Rd ← Rd + 1 Z, N, V 1
12월 Rd 감소 Rd ← Rd - 1 Z, N, V 1
TST Rd XNUMX 또는 마이너스 테스트 Rd ← Rd ∙ Rd Z, N, V 1
클록 Rd 등록 지우기 Rd ← Rd ⊕ Rd Z, N, V 1
서비스 Rd 레지스터 설정 Rd ← 0xFF 없음 1
지점 지침
RJMP k 상대 점프 PC ← PC + k + 1 없음 2
IJMP (Z)로 간접 점프 PC ← Z 없음 2
리콜 k 상대 서브 루틴 호출 PC ← PC + k + 1 없음 3
아이콜 (Z)에 간접 호출 PC ← Z 없음 3
RET 서브 루틴 리턴 PC ← 스택 없음 4
레티 인터럽트 리턴 PC ← 스택 I 4
영어: CPSE (미국공과대학) Rd, Rr 비교, 같으면 건너 뛰기 if (Rd = Rr) PC ← PC + 2 또는 3 없음 1/2/3
CP Rd, Rr 비교하다 Rd - Rr Z, N, V, C, H 1
한국전력(주) Rd, Rr 캐리와 비교 Rd - Rr - C Z, N, V, C, H 1
소비자물가지수 Rd, K 즉시 등록과 비교 Rd-K Z, N, V, C, H 1
SBRC 르, ㄴ 레지스터의 비트가 지워지면 건너 뛰기 if (Rr(b)=0) PC ← PC + 2 또는 3 없음 1/2/3
SBRS 르, ㄴ 레지스터의 비트가 설정된 경우 건너 뛰기 if (Rr(b)=1) PC ← PC + 2 또는 3 없음 1/2/3
SBIC 피, 비 I / O 레지스터의 비트가 지워지면 건너 뛰기 if (P(b)=0) PC ← PC + 2 또는 3 없음 1/2/3
에스비에스 피, 비 I / O 레지스터의 비트가 설정된 경우 건너 뛰기 if (P(b)=1) PC ← PC + 2 또는 3 없음 1/2/3
BRBS 에스, 케이 상태 플래그가 설정된 경우 분기 if (SREG(s) = 1)이면 PC←PC+k + 1 없음 1/2
BRBC 에스, 케이 상태 플래그가 해제 된 경우 분기 if (SREG(s) = 0)이면 PC←PC+k + 1 없음 1/2
브렉 k 동일하면 분기 (Z = 1)이면 PC ← PC + k + 1 없음 1/2
브르네 k 같지 않으면 분기 (Z = 0)이면 PC ← PC + k + 1 없음 1/2
BRCS k 캐리 세트 인 경우 분기 (C = 1)이면 PC ← PC + k + 1 없음 1/2
BRCC k 캐리 클리어시 분기 (C = 0)이면 PC ← PC + k + 1 없음 1/2
BRSH k 동일하거나 더 높은 경우 분기 (C = 0)이면 PC ← PC + k + 1 없음 1/2
브를로 k 낮은 경우 분기 (C = 1)이면 PC ← PC + k + 1 없음 1/2
BRMI k 마이너스 인 경우 분기 (N = 1)이면 PC ← PC + k + 1 없음 1/2
BRPL k Plus if 분기 (N = 0)이면 PC ← PC + k + 1 없음 1/2
브르지(BRGE) k 크거나 같은 경우 분기, 서명 됨 (N ⊕ V= 0)이면 PC ← PC + k + 1 없음 1/2
BRLT k XNUMX보다 작은 경우 분기, 서명 됨 (N ⊕ V= 1)이면 PC ← PC + k + 1 없음 1/2
BRHS k 하프 캐리 플래그가 설정된 경우 분기 (H = 1)이면 PC ← PC + k + 1 없음 1/2
BRHC k 하프 캐리 플래그가 해제 된 경우 분기 (H = 0)이면 PC ← PC + k + 1 없음 1/2
BRTS k T 플래그가 설정된 경우 분기 (T = 1)이면 PC ← PC + k + 1 없음 1/2
BRTC k T 플래그가 해제 된 경우 분기 (T = 0)이면 PC ← PC + k + 1 없음 1/2
BRVS k 오버플로 플래그가 설정된 경우 분기 (V = 1)이면 PC ← PC + k + 1 없음 1/2
BRVC k 오버플로 플래그가 해제 된 경우 분기 (V = 0)이면 PC ← PC + k + 1 없음 1/2
브리 k 인터럽트가 활성화 된 경우 분기 (I = 1)이면 PC ← PC + k + 1 없음 1/2
브리드 k 인터럽트가 비활성화 된 경우 분기 (I = 0)이면 PC ← PC + k + 1 없음 1/2
비트 및 비트 테스트 지침
에스비아이(주) P, b I / O 레지스터에서 비트 설정 입출력(P,b) ← 1 없음 2
CBI P, b I / O 레지스터의 비트 지우기 입출력(P,b) ← 0 없음 2
엘에스엘 Rd 논리적 쉬프트 왼쪽 Rd(n+1) ← Rd(n), Rd(0) ← 0 Z, C, N, V 1
LSR Rd 논리적 오른쪽 이동 Rd(n) ← Rd(n+1), Rd(7) ← 0 Z, C, N, V 1
역할 Rd 캐리를 통해 왼쪽으로 회전 Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) Z, C, N, V 1
로르 Rd 캐리를 통해 오른쪽으로 회전 Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) Z, C, N, V 1
자동판매기 Rd 오른쪽으로 산술 시프트 Rd(n) ← Rd(n+1), n=0..6 Z, C, N, V 1
기억술 피연산자 설명 작업 깃발 # 시계
교환 Rd 니블 교체 Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) 없음 1
비셋 s 플래그 세트 SREG(s) ← 1 SREG (들) 1
비씨엘알알 s 플래그 지우기 SREG(s) ← 0 SREG (들) 1
영국 표준시 르, ㄴ 레지스터에서 T로 비트 저장 티 ← Rr(b) T 1
무단전재 Rd, B T에서 레지스터로의 비트로드 Rd(b) ← T 없음 1
비서 세트 캐리 C ← 1 C 1
씨엘씨(CLC) 클리어 캐리 C ← 0 C 1
부정적인 플래그 설정 N ← 1 N 1
씨엘엔 부정적인 플래그 지우기 N ← 0 N 1
경제특구 제로 플래그 설정 Z ← 1 Z 1
CLZ 제로 플래그 지우기 Z ← 0 Z 1
세이 글로벌 인터럽트 활성화 나는 ← 1 I 1
CLI 글로벌 인터럽트 비활성화 나는 ← 0 I 1
세에스 서명 된 테스트 플래그 설정 S ← 1 S 1
클레스(CLS) 서명 된 테스트 플래그 지우기 S ← 0 S 1
세브(SEV) Twos Complement Overflow를 설정하십시오. V ← 1 V 1
CLV XNUMX 보수 오버플로 지우기 V ← 0 V 1
세트 SREG에 T 설정 티 ← 1 T 1
씨엘티(CLT) SREG에서 T 지우기 티 ← 0 T 1
SEH SREG에서 Half Carry 플래그 설정 H ← 1 H 1
CLH SREG에서 하프 캐리 플래그 지우기 H ← 0 H 1
데이터 전송 지침
이동 RD, RR 레지스터 간 이동 Rd ← Rr 없음 1
MOVW RD, RR 등록 단어 복사 Rd+1:Rd ← Rr+1:Rr 없음 1
엘디아이 로드, 케이 즉시로드 RD ← 케이 없음 1
LD RD, X 간접로드 Rd ← (엑스) 없음 2
LD Rd, X + 간접 및 사후 Inc.로드 Rd ← (X), X ← X + 1 없음 2
LD Rd, – X 간접로드 및 XNUMX 월 이전 X ← X – 1, Rd ← (X) 없음 2
LD 로드, Y 간접로드 Rd ← (Y) 없음 2
LD Rd, Y + 간접 및 사후 Inc.로드 Rd ← (Y), Y ← Y + 1 없음 2
LD Rd, – Y 간접로드 및 XNUMX 월 이전 Y ← Y – 1, Rd ← (Y) 없음 2
LDD Rd, Y + q 변위가있는 간접 하중 Rd ← (Y + q) 없음 2
LD 로드, Z 간접로드 Rd ← (Z) 없음 2
LD Rd, Z + 간접 및 사후 Inc.로드 Rd ← (Z), Z ← Z+1 없음 2
LD 로드, -Z 간접로드 및 XNUMX 월 이전 Z ← Z – 1, Rd ← (Z) 없음 2
LDD Rd, Z + q 변위가있는 간접 하중 Rd ← (Z + 큐) 없음 2
후기성도 RD, k SRAM에서 직접로드 Rd ← (k) 없음 2
ST X, RR 간접 저장 (X) ← Rr 없음 2
ST X +, Rr 간접 저장 및 사후 Inc. (X) ← Rr, X ← X + 1 없음 2
ST – X, Rr 간접 저장 및 XNUMX 월 이전 X ← X – 1, (X) ← Rr 없음 2
ST 예, 르 간접 저장 (Y) ← Rr 없음 2
ST Y +, Rr 간접 저장 및 사후 Inc. (Y) ← Rr, Y ← Y + 1 없음 2
ST – 예, 르 간접 저장 및 XNUMX 월 이전 Y ← Y – 1, (Y) ← Rr 없음 2
성병 Y + q, Rr 변위와 함께 간접 저장 (Y + 큐) ← Rr 없음 2
ST Z, RR 간접 저장 (Z) ← Rr 없음 2
ST Z +, Rr 간접 저장 및 사후 Inc. (Z) ← Rr, Z ← Z + 1 없음 2
ST -지, Rr 간접 저장 및 XNUMX 월 이전 Z ← Z – 1, (Z) ← Rr 없음 2
성병 Z + q, Rr 변위와 함께 간접 저장 (Z + 큐) ← Rr 없음 2
영어: 케이, Rr SRAM에 직접 저장 (k) ← Rr 없음 2
엘피엠 프로그램 메모리로드 R0 ← (지) 없음 3
엘피엠 로드, Z 프로그램 메모리로드 Rd ← (Z) 없음 3
엘피엠 Rd, Z + 프로그램 메모리 및 Post-Inc로드 Rd ← (Z), Z ← Z+1 없음 3
(주) 프로그램 메모리 저장 (z) ← R1:R0 없음
IN 로드, 피 포트에서 Rd ← P 없음 1
밖으로 피, 우르르 아웃 포트 P ← Rr 없음 1
푸시 Rr 스택에 등록 푸시 스택 ← Rr 없음 2
Rd 스택에서 팝 레지스터 Rd ← 스택 없음 2
MCU 제어 지침
아니요 작동 없음 없음 1
(슬립 기능에 대한 특정 설명 참조) 없음 1
광역 역광 워치 독 재설정 (WDR / 타이머에 대한 특정 설명 참조) 없음 1
부서지다 부서지다
속도 (MHz) (1) 공급량tag전자 (V) 온도 범위 패키지 (2) 주문 코드 (3)
10 1.8 – 5.5 산업

(-40 ° C ~ + 85 ° C) (4)

8P3 ATtiny45V-10PU
8S2 ATtiny45V-10SU ATtiny45V-10SUR ATtiny45V-10SH ATtiny45V-10SHR
8X ATtiny45V-10XU ATtiny45V-10XUR
20M1 ATtiny45V-10MU ATtiny45V-10MUR
20 2.7 – 5.5 산업

(-40 ° C ~ + 85 ° C) (4)

8P3 ATtiny45-20PU
8S2 ATtiny45-20SU ATtiny45-20SUR

ATtiny45-20SH ATtiny45-20SHR

8X ATtiny45-20XU ATtiny45-20XUR
20M1 ATtiny45-20MU ATtiny45-20MUR

참고: 1. 속도 대 공급량의 경우tage, 섹션 참조 21.3 163 페이지의 "속도".

모든 패키지는 무연, 무 할로겐, 완전 친환경 제품이며 RoHS (Restriction of Hazardous Substances)에 대한 유럽 지침을 준수합니다.

코드 표시기

H : NiPdAu 리드 마감

U : 무광택 주석

R : 테이프 및 릴

이러한 장치는 웨이퍼 형태로도 공급 될 수 있습니다. 자세한 주문 정보 및 최소 수량은 현지 Atmel 영업소에 문의하십시오.

에라타

에라타 ATtiny25

이 섹션의 개정 문자는 ATtiny25 장치의 개정판을 나타냅니다.

개정 D – F

알려진 정오표가 없습니다.

개정 B – C

낮은 공급 볼륨에서 EEPROM 읽기가 실패할 수 있음tage / 낮은 클록 주파수

낮은 공급 볼륨에서 EEPROM 읽기가 실패할 수 있음tage / 낮은 클록 주파수

낮은 클록 주파수 및/또는 낮은 공급 볼륨에서 EEPROM 읽기 시도tage는 잘못된 데이터를 초래할 수 있습니다.

문제 수정 / 해결 방법

클럭 주파수가 1MHz 미만이고 vol을 공급할 때 EEPROM을 사용하지 마십시오.tage는 2V 미만입니다. 작동 주파수를 1MHz 이상으로 올릴 수 없는 경우 voltage는 2V 이상이어야 합니다. 마찬가지로 공급량tage는 2V 이상으로 올릴 수 없으며 작동 주파수는 1MHz 이상이어야 합니다.

이 기능은 온도에 따라 달라지는 것으로 알려져 있지만 특성화되지 않았습니다. 지침은 실내 온도에 대해서만 제공됩니다.

A 목사

아니 samp주도.

에라타 ATtiny45

이 섹션의 개정 문자는 ATtiny45 장치의 개정판을 나타냅니다.

개정 F – G

알려진 정오표 없음

개정 D – E

낮은 공급 볼륨에서 EEPROM 읽기가 실패할 수 있음tage / 낮은 클록 주파수

낮은 공급 볼륨에서 EEPROM 읽기가 실패할 수 있음tage / 낮은 클록 주파수

낮은 클록 주파수 및/또는 낮은 공급 볼륨에서 EEPROM 읽기 시도tage는 잘못된 데이터를 초래할 수 있습니다.

문제 수정 / 해결 방법

클럭 주파수가 1MHz 미만이고 vol을 공급할 때 EEPROM을 사용하지 마십시오.tage는 2V 미만입니다. 작동 주파수를 1MHz 이상으로 올릴 수 없는 경우 voltage는 2V 이상이어야 합니다. 마찬가지로 공급량tage는 2V 이상으로 올릴 수 없으며 작동 주파수는 1MHz 이상이어야 합니다.

이 기능은 온도에 따라 달라지는 것으로 알려져 있지만 특성화되지 않았습니다. 지침은 실내 온도에 대해서만 제공됩니다.

개정 B – C

PLL이 잠기지 않음

응용 프로그램 코드에서 읽은 EEPROM이 잠금 비트 모드 3에서 작동하지 않습니다.

낮은 공급 볼륨에서 EEPROM 읽기가 실패할 수 있음tage / 낮은 클록 주파수

타이머 카운터 1 OC1B-XOC1B에서 PWM 출력 생성이 올바르게 작동하지 않습니다.

PLL이 잠기지 않음

6.0MHz 미만의 주파수에서 PLL은 잠기지 않습니다.

문제 수정 / 해결 방법

PLL을 사용하는 경우 6.0MHz 이상에서 실행하십시오.

응용 프로그램 코드에서 읽은 EEPROM이 잠금 비트 모드 3에서 작동하지 않습니다.

메모리 잠금 비트 LB2 및 LB1이 모드 3으로 프로그래밍 된 경우 EEPROM 읽기가 애플리케이션 코드에서 작동하지 않습니다.

문제 수정 / 해결 방법

EEPROM에서 애플리케이션 코드를 읽어야하는 경우 잠금 비트 보호 모드 3을 설정하지 마십시오.

낮은 공급 볼륨에서 EEPROM 읽기가 실패할 수 있음tage / 낮은 클록 주파수

낮은 클록 주파수 및/또는 낮은 공급 볼륨에서 EEPROM 읽기 시도tage는 잘못된 데이터를 초래할 수 있습니다.

문제 수정 / 해결 방법

클럭 주파수가 1MHz 미만이고 vol을 공급할 때 EEPROM을 사용하지 마십시오.tage는 2V 미만입니다. 작동 주파수를 1MHz 이상으로 올릴 수 없는 경우 voltage는 2V 이상이어야 합니다. 마찬가지로 공급량tage는 2V 이상으로 올릴 수 없으며 작동 주파수는 1MHz 이상이어야 합니다.

이 기능은 온도에 따라 달라지는 것으로 알려져 있지만 특성화되지 않았습니다. 지침은 실내 온도에 대해서만 제공됩니다.

OC1B에서 타이머 카운터 1 PWM 출력 생성 – XOC1B가 올바르게 작동하지 않음

타이머 카운터 1 PWM 출력 OC1B-XOC1B가 올바르게 작동하지 않습니다. 제어 비트, COM1B1 및 COM1B0이 각각 COM1A1 및 COM1A0과 동일한 모드에있는 경우에만 OC1B-XOC1B 출력이 올바르게 작동합니다.

문제 수정 / 해결 방법

유일한 해결 방법은 COM1A [1 : 0] 및 COM1B [1 : 0] 제어 비트에서 동일한 제어 설정을 사용하는 것입니다. 데이터 시트의 표 14-4를 참조하십시오. Tiny45 rev D의 문제가 수정되었습니다.

A 목사

전력 소비가 너무 높음

DebugWIRE는 한 번의 인터럽트로 인해 통신이 끊어짐

PLL이 잠기지 않음

응용 프로그램 코드에서 읽은 EEPROM이 잠금 비트 모드 3에서 작동하지 않습니다.

낮은 공급 볼륨에서 EEPROM 읽기가 실패할 수 있음tage / 낮은 클록 주파수

전력 소비가 너무 높음

세 가지 상황으로 인해 전력 소비가 너무 높아집니다. 이것들은:

외부 클럭은 퓨즈에 의해 선택되지만 I / O 포트는 여전히 출력으로 활성화됩니다.

전원을 끄기 전에 EEPROM을 읽습니다.

VCC는 4.5V 이상입니다.

고지 사항: 이 문서의 정보는 Atmel 제품과 관련하여 제공됩니다. 이 문서에 의해 또는 Atmel 제품의 판매와 관련하여 지적 재산권에 대한 명시적 또는 묵시적 라이센스가 금반언 또는 기타 방식으로 부여되지 않습니다. ATMEL에 있는 ATMEL 판매 약관에 명시된 경우를 제외하고 WEB사이트, ATMEL은 어떠한 책임도 지지 않으며 상품성, 특정 목적에의 적합성 또는 비침해성에 대한 묵시적 보증을 포함하되 이에 국한되지 않는 제품과 관련된 모든 명시적, 묵시적 또는 법적 보증을 부인합니다. 어떤 경우에도 ATMEL은 사용 또는 사용 불능으로 인해 발생하는 직접적, 간접적, 결과적, 징벌적, 특별 또는 우발적 손해(손실 및 이익에 대한 손해, 영업 중단 또는 정보 손실을 포함하되 이에 제한되지 않음)에 대해 책임을 지지 않습니다. 이 문서는 ATMEL이 그러한 손해의 가능성에 대해 알고 있었던 경우에도 마찬가지입니다.

Atmel은 이 문서 내용의 정확성이나 완전성과 관련하여 어떠한 진술이나 보증도 하지 않으며 언제라도 예고 없이 사양과 제품 설명을 변경할 수 있는 권리를 보유합니다. Atmel은 여기에 포함된 정보를 업데이트하겠다고 약속하지 않습니다. 달리 명시되지 않는 한 Atmel 제품은 자동차 응용 분야에 적합하지 않으며 사용해서는 안 됩니다. Atmel 제품은 생명을 지원하거나 유지하기 위한 응용 프로그램의 구성 요소로 사용하도록 의도, 승인 또는 보증되지 않습니다.

참고문헌

댓글을 남겨주세요

이메일 주소는 공개되지 않습니다. 필수 항목은 표시되어 있습니다. *