Atmel

8bitový mikrokontrolér Atmel AVR s 2/4/8K bajty programovatelným flash systémem v systémučip

 

Vlastnosti

  • Vysoce výkonný 8bitový mikrokontrolér AVR® s nízkou spotřebou
  • Pokročilá architektura RISC
  • 120 mocných pokynů - většina provedení jediného taktu
  • 32 x 8 pracovních registrů pro všeobecné účely
  • Plně statický provoz
  • Trvalé programové a datové paměti
  • 2/4/8 kB bajtů paměti programovatelné programové paměti v systému
  • Vytrvalost: 10,000 XNUMX cyklů zápisu/mazání
  • 128/256/512 bajtů v systému programovatelná EEPROM
  • Vytrvalost: 100,000 XNUMX cyklů zápisu/mazání
  • 128/256/512 bajtů interní SRAM
  • Zámek programování pro samoprogramování programu Flash a zabezpečení dat EEPROM

Periferní funkce

  • 8bitový časovač / čítač s přednastavovačem a dvěma kanály PWM
  • 8bitový vysokorychlostní časovač / čítač se samostatným přednastavovačem
  • 2 vysokofrekvenční PWM výstupy se samostatnými výstupními srovnávacími registry
  • Programovatelný generátor mrtvého času
  • USI - Universal Serial Interface with Start Condition Detector
  • 10bitový ADC

4 kanály s jedním zakončením

2 diferenciální páry kanálů ADC s programovatelným ziskem (1x, 20x)

Měření teploty

Programovatelný časovač hlídacího psa se samostatným oscilátorem na čipu

Analogový komparátor na čipu

Speciální funkce mikrokontroléru

debugWIRE Systém ladění na čipu

Systémově programovatelný přes SPI port

Externí a interní zdroje přerušení

Režim nečinnosti s nízkou spotřebou, redukce šumu ADC a režimy vypnutí

Vylepšený resetovací obvod při zapnutí

Programovatelný obvod detekce zhasnutí

Interní kalibrovaný oscilátor

I / O a balíčky

Šest programovatelných I / O linek

8kolíkový PDIP, 8kolíkový SOIC, 20kolíkový QFN / MLF a 8kolíkový TSSOP (pouze ATtiny45 / V)

Provozní svtage
- 1.8 - 5.5 V pro ATtiny25V / 45V / 85V
- 2.7 - 5.5 V pro ATtiny25 / 45/85

Rychlostní třída
- ATtiny25V / 45V / 85V: 0 - 4 MHz při 1.8 - 5.5 V, 0 - 10 MHz při 2.7 - 5.5 V
- ATtiny25 / 45/85: 0 - 10 MHz při 2.7 - 5.5 V, 0 - 20 MHz při 4.5 - 5.5 V

Průmyslový teplotní rozsah

Nízká spotřeba energie

Aktivní režim:

1 MHz, 1.8 V: 300 uA

Režim vypnutí:

Konfigurace kolíků

Pinout ATtiny25 / 45/85 Konfigurace

Popisy pinů

VCC: Supply voltage.
GND: Zem.
Port B (PB5:PB0): Port B je 6bitový obousměrný I/O port s vnitřními pull-up rezistory (vybranými pro každý bit). Výstupní vyrovnávací paměti Port B mají symetrické charakteristiky měniče s vysokou schopností sink a source. Jako vstupy budou piny Port B, které jsou externě staženy na nízkou úroveň, zdrojem proudu, pokud jsou aktivovány pull-up rezistory. Piny portu B jsou třístavové, když se aktivují podmínky resetování, i když hodiny neběží.

Port B také slouží funkcím různých speciálních funkcí ATtiny25 / 45/85, jak je uvedeno
Na ATtiny25 jsou programovatelné I / O porty PB3 a PB4 (piny 2 a 3) vyměňovány v režimu kompatibility ATtiny15 pro podporu zpětné kompatibility s ATtiny15.

RESET: Resetování vstupu. Nízká úroveň na tomto kolíku po dobu delší, než je minimální délka pulzu, vygeneruje reset, i když hodiny neběží a za předpokladu, že resetovací kolík nebyl deaktivován. Minimální délka pulzu je uvedena v Tabulka 21-4 na straně 165. Není zaručeno, že kratší impulsy vygenerují reset.

Resetovací kolík lze také použít jako (slabý) I / O kolík.

Nadview

ATtiny25 / 45/85 je 8bitový mikrokontrolér CMOS s nízkou spotřebou založený na architektuře RISC vylepšené AVR. Prováděním výkonných instrukcí v jediném taktu dosahuje ATtiny25 / 45/85 propustnosti blížící se 1 MIPS na MHz, což umožňuje návrháři systému optimalizovat spotřebu energie v porovnání s rychlostí zpracování.

Blokové schéma Blokové schéma

Jádro AVR kombinuje bohatou instrukční sadu s 32 univerzálními pracovními registry. Všech 32 registrů je přímo připojeno k aritmetické logické jednotce (ALU), což umožňuje přístup ke dvěma nezávislým registrům v jedné instrukci provedené v jednom hodinovém cyklu. Výsledná architektura je efektivnější z hlediska kódu a dosahuje propustnosti až desetkrát rychlejší než běžné mikrokontroléry CISC.

ATtiny25 / 45/85 poskytuje následující funkce: 2/4 / 8K bajtů In-System Programmable Flash, 128/256/512 bajtů EEPROM, 128/256/256 bajtů SRAM, 6 univerzálních I / O linek, 32 obecných účelové pracovní registry, jeden 8bitový časovač / čítač s režimy porovnání, jeden 8bitový vysokorychlostní časovač / čítač, univerzální sériové rozhraní, interní a externí přerušení, 4kanálový 10bitový ADC, programovatelný časovač Watchdog s interním Oscilátor a tři softwarově volitelné režimy úspory energie. Klidový režim zastaví procesor a umožní systému SRAM, časovač / čítač, ADC, analogový komparátor a systém přerušení pokračovat v činnosti. Režim vypnutí šetří obsah registru a deaktivuje všechny funkce čipu až do dalšího přerušení nebo resetování hardwaru. Režim redukce šumu ADC zastaví procesor a všechny I / O moduly kromě ADC, aby se minimalizoval přepínací šum během převodů ADC.

Zařízení je vyráběno technologií energeticky nezávislé paměti Atmel s vysokou hustotou. On-chip ISP Flash umožňuje přeprogramování programové paměti v systému prostřednictvím sériového rozhraní SPI, konvenčního programátoru energeticky nezávislé paměti nebo bootovacího kódu na čipu běžícího na jádru AVR.

ATtiny25 / 45/85 AVR je podporován celou řadou nástrojů pro vývoj programů a systémů, včetně: C Compilers, Macro Assemblers, Program Debugger / Simulators a Evaluation kits.

O zdrojích

Komplexní sada vývojových nástrojů, poznámky k aplikacím a datové listy jsou k dispozici ke stažení na http://www.atmel.com/avr.

Kód Examples

Tato dokumentace obsahuje jednoduchý kód napřamples, které stručně ukazují, jak používat různé části zařízení. Tyto kódy examppředpokládejme, že hlavička specifická pro část file je zahrnut před kompilací. Uvědomte si, že ne všichni prodejci kompilátoru C obsahují v záhlaví bitové definice files a zpracování přerušení v C je závislé na kompilátoru. Další podrobnosti potvrďte v dokumentaci kompilátoru C.

U I / O registrů umístěných v rozšířené I / O mapě musí být instrukce „IN“, „OUT“, „SBIS“, „SBIC“, „CBI“ a „SBI“ nahrazeny instrukcemi, které umožňují přístup k rozšířeným I /Ó. To obvykle znamená „LDS“ a „STS“ v kombinaci s „SBRS“, „SBRC“, „SBR“ a „CBR“. Všimněte si, že ne všechna zařízení AVR obsahují rozšířenou mapu I / O.

Kapacitní dotykové snímání

Atmel QTouch Library poskytuje snadno použitelné řešení pro dotykově citlivá rozhraní na mikrokontrolérech Atmel AVR. Knihovna QTouch obsahuje podporu pro metody získávání QTouch® a QMatrix®.

Dotykové snímání lze snadno přidat do jakékoli aplikace propojením knihovny QTouch a použitím aplikačního programovacího rozhraní (API) knihovny k definování dotykových kanálů a senzorů. Aplikace poté zavolá API, aby načetla informace o kanálu a určila stav dotykového senzoru.

Knihovna QTouch je zdarma a lze ji stáhnout z Atmel webstránky. Další informace a podrobnosti o implementaci najdete v uživatelské příručce knihovny QTouch - také k dispozici od společnosti Atmel webmísto.

Uchovávání dat

Výsledky kvalifikace spolehlivosti ukazují, že předpokládaná míra selhání uchovávání dat je mnohem menší než 1 PPM po dobu 20 let při 85 ° C nebo 100 let při 25 ° C.

Jádro CPU AVR

Zavedení

Tato část popisuje architekturu jádra AVR obecně. Hlavní funkcí jádra CPU je zajistit správné provedení programu. CPU proto musí být schopen přistupovat k pamětím, provádět výpočty, řídit periferie a zpracovávat přerušení.

Architektonický konecview Architektura

Aby se maximalizoval výkon a paralelismus, používá AVR harvardskou architekturu - se samostatnými pamětí a sběrnicemi pro program a data. Pokyny v paměti programu jsou prováděny s jednou úrovní pipeliningu. Během provádění jedné instrukce je z paměti programu předem načtena další instrukce. Tento koncept umožňuje provádění instrukcí v každém hodinovém cyklu. Paměť programu je v systému přeprogramovatelná paměť Flash.

Rychlý přístup k registru File obsahuje 32 x 8bitových univerzálních pracovních registrů s přístupovou dobou jednoho hodinového cyklu. To umožňuje jednocyklový provoz aritmetických logických jednotek (ALU). V typické operaci ALU jsou z registru výstupem dva operandy File, operace se provede a výsledek se uloží zpět do Registru File- v jednom hodinovém cyklu.

Šest z 32 registrů lze použít jako tři 16bitové ukazatele registru nepřímých adres pro adresování datového prostoru - což umožňuje efektivní výpočty adres. Jeden z těchto ukazatelů adres lze také použít jako ukazatel adresy pro vyhledávací tabulky v paměti programu Flash. Tyto přidané funkční registry jsou 16bitový registr X-, Y- a Z, popsané dále v této části.

ALU podporuje aritmetické a logické operace mezi registry nebo mezi konstantou a registrem. V ALU lze také provádět operace s jedním registrem. Po aritmetické operaci se aktualizuje stavový registr, aby odrážel informace o výsledku operace.

Průběh programu je zajištěn podmíněnými a bezpodmínečnými pokyny pro skok a volání, které jsou schopné přímo adresovat celý adresní prostor. Většina instrukcí AVR má jediný 16bitový formát slova, ale existují také 32bitové instrukce.

Během přerušení a volání podprogramu je na zásobníku uložena zpáteční adresa Program Counter (PC). Zásobník je efektivně alokován v obecných datech SRAM a následně je velikost zásobníku omezena pouze celkovou velikostí SRAM a využitím SRAM. Všechny uživatelské programy musí inicializovat SP v rutině Reset (před provedením podprogramů nebo přerušení). Ukazatel zásobníku (SP) je pro čtení / zápis přístupný ve vstupně-výstupním prostoru. K datům SRAM lze snadno přistupovat prostřednictvím pěti různých režimů adresování podporovaných v architektuře AVR.

Paměťové prostory v architektuře AVR jsou všechny lineární a běžné mapy paměti.

Flexibilní modul přerušení má své řídicí registry v I / O prostoru s dalším bitem Global Interrupt Enable ve stavovém registru. Všechna přerušení mají v tabulce Interrupt Vector samostatný vektor přerušení. Přerušení mají prioritu v souladu s jejich pozicí vektoru přerušení. Čím nižší je adresa vektoru přerušení, tím vyšší je priorita.

Paměťový prostor I/O obsahuje 64 adres pro periferní funkce CPU jako řídicí registry, SPI a další I/O funkce. K paměti I/O lze přistupovat přímo nebo jako k datovým prostorům, která následují po registrátoru File, 0x20 - 0x5F.

ALU - aritmetická logická jednotka

Vysoce výkonný AVR ALU pracuje v přímém spojení se všemi 32 univerzálními pracovními registry. V rámci jediného hodinového cyklu jsou prováděny aritmetické operace mezi registry pro obecné účely nebo mezi registrem a okamžitým. Operace ALU jsou rozděleny do tří hlavních kategorií - aritmetické, logické a bitové funkce. Některé implementace architektury také poskytují výkonný multiplikátor podporující jak podepsané / nepodepsané násobení, tak zlomkový formát. Podrobný popis najdete v části „Sada instrukcí“.

Stavový registr

Stavový registr obsahuje informace o výsledku naposledy provedené aritmetické instrukce. Tyto informace lze použít ke změně toku programu za účelem provedení podmíněných operací. Všimněte si, že stavový registr je aktualizován po všech operacích ALU, jak je uvedeno v příručce Instruction Set Reference. Tím se v mnoha případech odstraní potřeba použití vyhrazených pokynů pro porovnání, což povede k rychlejšímu a kompaktnějšímu kódu.

Registr stavu se neukládá automaticky při vstupu do rutiny přerušení a obnovuje se při návratu z přerušení. To musí být řešeno softwarem.

SREG - Registr stavu AVR

Registr stavu AVR - SREG - je definován jako:

Bit 7 6 5 4 3 2 1 0
0x3F I T H S V N Z C SREG
Čtení/zápis R/W R/W R/W R/W R/W R/W R/W R/W
Počáteční hodnota 0 0 0 0 0 0 0 0

Bit 7 - I: Global Interrupt Enable

Aby byla povolena přerušení, musí být nastaven bit Global Interrupt Enable. Řízení samostatného povolení přerušení se poté provádí v samostatných řídicích registrech. Pokud je vymazán registr globálního povolení přerušení, žádné z přerušení není povoleno nezávisle na nastavení povolení jednotlivých přerušení. I-bit je vymazán hardwarem poté, co došlo k přerušení, a je nastaven instrukcí RETI k povolení následných přerušení. I-bit může být také nastaven a vymazán aplikací pomocí instrukcí SEI a CLI, jak je popsáno v odkazu na instrukční sadu.

Bit 6 - T: Úložiště bitových kopií

Instrukce bitové kopie BLD (Bit LoaD) a BST (Bit STore) používají T-bit jako zdroj nebo cíl pro provozovaný bit. Kousek z rejstříku v Registru File lze zkopírovat do T pomocí instrukce BST a bit v T lze zkopírovat do bitu v registru v registru File podle instrukce BLD.

Bit 5 - H: Half Carry Flag

Příznak Half Carry H označuje Half Carry v některých aritmetických operacích. Half Carry je užitečné v BCD aritmetice. Podrobné informace najdete v části „Popis sady instrukcí“.

Bit 4 – S: Sign Bit, S = N ⊕ V

S-bit je vždy exkluzivní nebo mezi záporným příznakem N a příznakem přetečení komplementu dvojky V. Podrobné informace najdete v části „Popis sady instrukcí“.

Bit 3 - V: Příznak přetečení komplementu dvou

Příznak přetečení doplňku dvojky V podporuje aritmetiku doplňku dvojky. Podrobné informace najdete v části „Popis sady instrukcí“.

Bit 2 - N: Negativní příznak

Negativní příznak N označuje negativní výsledek v aritmetické nebo logické operaci. Podrobné informace najdete v části „Popis sady instrukcí“.

Bit 1 - Z: Nulová vlajka

Nulový příznak Z označuje nulový výsledek v aritmetické nebo logické operaci. Podrobné informace najdete v části „Popis sady instrukcí“.

Bit 0 - C: Carry Flag

Carry Flag C označuje přenos v aritmetické nebo logické operaci. Podrobné informace najdete v části „Popis sady instrukcí“.

Registr pro všeobecné účely File

Registr File je optimalizován pro sadu instrukcí AVR Enhanced RISC. Aby byla dosažena požadovaná výkonnost a flexibilita, registr podporuje následující schémata vstupu/výstupu File:

Jeden 8bitový výstupní operand a jeden 8bitový výsledný vstup

Dva 8bitové výstupní operandy a jeden 8bitový výsledek

Dva 8bitové výstupní operandy a jeden 16bitový výsledek

Jeden 16bitový výstupní operand a jeden 16bitový výsledný vstup

Obrázek 4-2 ukazuje strukturu 32 obecných pracovních registrů v CPU. Obecný účel

Jak je uvedeno v Obrázek 4-2, každému registru je také přiřazena adresa datové paměti a mapuje je přímo do prvních 32 míst uživatelského datového prostoru. Přestože tato organizace paměti není fyzicky implementována jako umístění SRAM, poskytuje velkou flexibilitu v přístupu k registrům, protože registry ukazatelů X, Y a Z lze nastavit tak, aby indexovaly jakýkoli registr v file.Většina instrukcí fungujících v registru File mají přímý přístup ke všem registrům a většina z nich jsou pokyny pro jeden cyklus.

Registr X, registr Y a registr Z.

Registry R26..R31 mají k obecnému použití některé přidané funkce. Tyto registry jsou 16bitové adresní ukazatele pro nepřímé adresování datového prostoru. Tři registry nepřímých adres X, Y a Z jsou definovány tak, jak je popsáno v Obrázek 4-3.

Rejstřík

V různých režimech adresování mají tyto registry adres funkce jako pevné posunutí, automatické zvyšování a automatické snižování (podrobnosti viz odkaz na sadu instrukcí).

Ukazatel zásobníku

Zásobník se používá hlavně k ukládání dočasných dat, k ukládání lokálních proměnných a k ukládání zpátečních adres po přerušeních a voláních podprogramů. Registr ukazatele zásobníku vždy ukazuje na horní část zásobníku. Všimněte si, že zásobník je implementován jako rostoucí z vyšších paměťových míst do nižších paměťových míst. To znamená, že příkaz Stack PUSH snižuje ukazatel Stack.

Ukazatel zásobníku ukazuje na datovou oblast zásobníku SRAM, kde jsou umístěny podprogramy a přerušení zásobníku. Tento zásobníkový prostor v datovém SRAM musí být definován programem před provedením jakýchkoli volání podprogramu nebo povolením přerušení. Ukazatel zásobníku musí být nastaven na bod nad 0x60. Ukazatel zásobníku se sníží o jeden, když se data na Pack posílají pomocí instrukce PUSH, a sníží se o dva, když se zpáteční adresa na zásobník posílá pomocí volání podprogramu nebo přerušení. Ukazatel zásobníku se zvýší o jednu, když se data vyskočí ze zásobníku pomocí instrukce POP, a zvýší se o dva, když se data vyskočí ze zásobníku se návratem z podprogramu RET nebo návratem z přerušení RETI.

AVR Stack Pointer je implementován jako dva 8bitové registry v I / O prostoru. Počet skutečně použitých bitů závisí na implementaci. Všimněte si, že datový prostor v některých implementacích architektury AVR je tak malý, že je potřeba pouze SPL. V takovém případě nebude registr SPH přítomen.

SPH a SPL - registr ukazatele zásobníku

Bit 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 SPL
7 6 5 4 3 2 1 0
Čtení/zápis R/W R/W R/W R/W R/W R/W R/W R/W
Čtení/zápis R/W R/W R/W R/W R/W R/W R/W R/W
Počáteční hodnota RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND
Počáteční hodnota RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND

Načasování provádění pokynů

Tato část popisuje obecné koncepty časování přístupu pro provádění instrukcí. AVR CPU je řízen hodinami CPU clkCPU, přímo generovanými z vybraného zdroje hodin pro čip. Není použito žádné dělení vnitřních hodin.

Obr

Obrázek 4-4 ukazuje souběžné načítání instrukcí a provádění instrukcí povolené architekturou Harvard a registrem rychlého přístupu File pojem. Toto je základní koncept pipeline pro získání až 1 MIPS na MHz s odpovídajícími jedinečnými výsledky pro funkce za cenu, funkce za hodiny a funkce za napájecí jednotku.

Obrázek 4-5. Jednocyklový ALU provoz

Obr

Reset a přerušení zpracování

AVR poskytuje několik různých zdrojů přerušení. Každá z těchto přerušení a samostatný resetovací vektor mají v programovém paměťovém prostoru samostatný programový vektor. Všem přerušením jsou přiřazeny jednotlivé aktivační bity, které musí být zapsány logicky společně s bitem Global Interrupt Enable ve stavovém registru, aby bylo možné přerušení povolit.

Nejnižší adresy v paměti programu jsou standardně definovány jako vektory resetování a přerušení. Kompletní seznam vektorů je uveden v „Přerušení“ na stránce 48. Seznam také určuje úrovně priority různých přerušení. Čím nižší je adresa, tím vyšší je úroveň priority. RESET má nejvyšší prioritu a další je INT0 - externí požadavek na přerušení 0.

Dojde-li k přerušení, bit I Global Bit Interrupt Enable se vymaže a všechna přerušení jsou deaktivována. Uživatelský software může zapsat logický jeden na I-bit, aby umožnil vnořená přerušení. Všechna povolená přerušení pak mohou přerušit aktuální rutinu přerušení. I-bit se automaticky nastaví při provedení instrukce Návrat z přerušení - RETI.

V zásadě existují dva typy přerušení. První typ je spuštěn událostí, která nastaví příznak přerušení. U těchto přerušení je programový čítač vektorován do skutečného vektoru přerušení, aby se provedla rutina zpracování přerušení, a hardware vymaže odpovídající příznak přerušení. Příznaky přerušení lze také vymazat zapsáním logického signálu do pozice (příznaků) bitových bitů, které mají být vymazány. Pokud nastane podmínka přerušení, zatímco je zrušen odpovídající bit aktivace přerušení, bude nastaven příznak přerušení a bude si jej pamatovat, dokud nebude povoleno přerušení, nebo dokud příznak nevymaže software. Podobně, pokud nastane jedna nebo více podmínek přerušení, zatímco je bit Global Interrupt Enable vymazán, bude nastaven odpovídající příznak (y) přerušení a zapamatován, dokud nebude nastaven bit Global Interrupt Enable, a poté budou provedeny podle priority.

Druhý typ přerušení se aktivuje, dokud bude existovat podmínka přerušení. Tato přerušení nemusí nutně mít příznaky přerušení. Pokud podmínka přerušení zmizí před povolením přerušení, přerušení se nespustí.

Když AVR vystoupí z přerušení, vždy se vrátí do hlavního programu a provede ještě jednu instrukci před doručením jakéhokoli nevyřízeného přerušení.

Pamatujte, že stavový registr se automaticky neukládá při zadávání rutiny přerušení, ani se neobnovuje při návratu z rutiny přerušení. To musí být řešeno softwarem.

Při použití instrukce CLI k deaktivaci přerušení budou přerušení okamžitě deaktivována. Po instrukci CLI nebude provedeno žádné přerušení, i když k němu dojde současně s instrukcí CLI. Následující example ukazuje, jak to lze použít k zamezení přerušení během časované sekvence zápisu EEPROM.

Montážní kód Přample
v r16, SREG; uložit hodnotu SREG

cli; zakázat přerušení během časované sekvence

sbi EECR, EEMPE ; spusťte zápis do EEPROM

sbi EECR, EEPE

out SREG, r16; obnovit hodnotu SREG (I-bit)

C kód Přample
char cSREG;

cSREG = SREG; /* uložit hodnotu SREG */

/* zakázat přerušení během časované sekvence */

_CLI ();

EECR |= (1<

EECR | = (1 <

SREG = cSREG; /* obnovit hodnotu SREG (I-bit) */

Při použití instrukce SEI k povolení přerušení bude instrukce následující po SEI provedena před jakýmkoli čekajícím přerušením, jak ukazuje tento example.

Montážní kód Přample
sei; nastavte Global Interrupt Enable

spát; vstoupit do spánku a čekat na přerušení

; poznámka: vstoupí do režimu spánku před čekáním

; přerušení

C kód Přample
_SEI(); /* nastavit Global Interrupt Enable */

_SPÁT(); /* vstoupí do spánku, čeká na přerušení */

/ * poznámka: přejde do režimu spánku před jakýmkoli nevyřízeným přerušením * /

Doba přerušení odezvy

Reakce na provedení přerušení pro všechna povolená přerušení AVR jsou minimálně čtyři cykly hodin. Po čtyřech hodinových cyklech se provede adresa programového vektoru pro aktuální rutinu zpracování přerušení. Během této periody čtyř hodinových cyklů je čítač programu vložen do zásobníku. Vektorem je obvykle skok na rutinu přerušení a tento skok trvá tři hodinové cykly. Pokud během provádění vícecyklové instrukce dojde k přerušení, je tato instrukce dokončena před doručením přerušení. Pokud dojde k přerušení, když je MCU v režimu spánku, prodlouží se doba odezvy na provedení přerušení o čtyři hodinové cykly. Toto zvýšení přichází navíc s dobou spuštění z vybraného režimu spánku.

Návrat z rutiny zpracování přerušení trvá čtyři hodinové cykly. Během těchto čtyř hodinových cyklů se programový čítač (dva bajty) vyskočí zpět ze zásobníku, ukazatel zásobníku se zvýší o dva a nastaví se I-bit v SREG.

AVR vzpomínky

Tato část popisuje různé paměti v ATtiny25 / 45/85. Architektura AVR má dva hlavní paměťové prostory, datovou paměť a paměť programu. ATtiny25 / 45/85 navíc obsahuje paměť EEPROM pro ukládání dat. Všechny tři paměťové prostory jsou lineární a pravidelné.

Přeprogramovatelná programová paměť Flash v systému

ATtiny25 / 45/85 obsahuje 2/4 / 8K bajtů On-chip systémově přeprogramovatelnou flash paměť pro uložení programu. Vzhledem k tomu, že všechny pokyny AVR mají šířku 16 nebo 32 bitů, je Flash uspořádán do formátu 1024/2048/4096 x 16.

Flash paměť má výdrž nejméně 10,000 25 cyklů zápisu a mazání. Počítadlo programů ATtiny45 / 85/10 (PC) má šířku 11/12/1024 bitů, čímž adresuje paměťová místa programu 2048/4096/XNUMX. „Paměťový program- „na straně 147 obsahuje podrobný popis sériového stahování dat Flash pomocí pinů SPI.

Konstantní tabulky lze přidělit v rámci celého adresního prostoru paměti programu (viz popis instrukcí paměti LPM - Načíst program).

Obrázek 5-1. Mapa paměti programu Mapa paměti

Datová paměť SRAM

Obrázek 5-2 ukazuje, jak je organizována paměť ATtiny25 / 45/85 SRAM.

Dolní umístění datové paměti 224/352/607 adresuje jak registr File, I/O paměť a interní datová SRAM. Prvních 32 míst oslovuje Registr File, dalších 64 umístění standardní I/O paměti a posledních 128/256/512 umístění adresuje interní datovou SRAM.

Pět různých režimů adresování pro pokrytí datové paměti: Přímý, Nepřímý s posunutím, Nepřímý, Nepřímý s předběžným snížením a Nepřímý s následným zvýšením. V Registru FileRegistry R26 až R31 obsahují registry ukazatelů nepřímého adresování.

Přímé adresování zasahuje do celého datového prostoru.

Režim Nepřímé s výtlakem dosáhne 63 adresních míst ze základní adresy dané registrem Y nebo Z.

Při použití režimů nepřímého adresování registru s automatickým předběžným a následným přírůstkem se adresní registry X, Y a Z sníží nebo zvýší.

Prostřednictvím všech těchto režimů adresování je přístupných 32 univerzálních pracovních registrů, 64 I/O registrů a 128/256/512 bajtů interních dat SRAM v ATtiny25/45/85. Registrace File je popsán v "Gen- registrujte účel File“Na straně 10.

Obrázek 5-2. Mapa datové paměti Mapa paměti 2

Přístup k datové paměti Times

Tato část popisuje obecné koncepty časování přístupu pro přístup k interní paměti. Přístup k interním datům SRAM se provádí ve dvou cyklech clkCPU, jak je popsáno v Obrázek 5-3.

Obrázek 5-3. Cykly přístupu k datům SRAM na čipu Na čipových datech Datová paměť EEPROM

ATtiny25 / 45/85 obsahuje 128/256/512 bajtů datové paměti EEPROM. Je organizován jako samostatný datový prostor, ve kterém lze číst a zapisovat jednotlivé bajty. EEPROM má výdrž nejméně 100,000 XNUMX cyklů zápisu a mazání. Přístup mezi EEPROM a CPU je popsán v následujícím textu, přičemž jsou specifikovány registry adres EEPROM, datový registr EEPROM a řídicí registr EEPROM. Podrobnosti viz „Sériové stahování“ na straně 151.

Přístup ke čtení / zápisu do EEPROM

Přístupové registry EEPROM jsou přístupné v prostoru I / O.

Doby přístupu pro zápis do EEPROM jsou uvedeny v Tabulka 5-1 na straně 21. Funkce samočasování však umožňuje uživatelskému softwaru zjistit, kdy lze zapsat další bajt. Pokud uživatelský kód obsahuje instrukce, které zapisují do EEPROM, je třeba učinit určitá opatření. V silně filtrovaných napájecích zdrojích bude VCC pravděpodobně pomalu stoupat nebo klesat

Zapnutí/vypnutí. To způsobí, že zařízení po určitou dobu poběží na voltage nižší, než je uvedeno jako minimum pro použitou taktovací frekvenci. Vidět „Prevence poškození EEPROM“ na straně 19 Podrobnosti o tom, jak se v těchto situacích vyhnout problémům.

Aby se zabránilo neúmyslnému zápisu do EEPROM, je třeba dodržovat konkrétní postup zápisu. Odkazují na "Atomový Programování bytů “na straně 17 „Programování rozdělených bajtů“ na stránce 17 pro podrobnosti o tomto.

Když je načtena EEPROM, CPU se zastaví na čtyři hodinové cykly před provedením další instrukce. Když je zapsána EEPROM, CPU se zastaví na dva hodinové cykly před provedením další instrukce.

Atomové bajtové programování

Nejjednodušším režimem je použití programování atomových bytů. Při zápisu bajtu do EEPROM musí uživatel zapsat adresu do registru EEAR a data do registru EEDR. Pokud jsou bity EEPMn nulové, spustí se zápis EEPE (do čtyř cyklů po zapsání EEMPE) operaci mazání / zápisu. Cyklus mazání i zápisu se provádí v jedné operaci a celková doba programování je uvedena v Tabulka 5-1 na straně 21. Bit EEPE zůstává nastaven, dokud nejsou dokončeny operace mazání a zápisu. Když je zařízení zaneprázdněno programováním, není možné provádět žádné další operace EEPROM.

Programování Split Byte

Cyklus mazání a zápisu je možné rozdělit do dvou různých operací. To může být užitečné, pokud systém vyžaduje krátký přístupový čas po určitou omezenou dobu (obvykle pokud je napájecí zdroj objtage padá). Abyste mohli využít výhod- tage této metody je požadováno, aby místa, která mají být zapsána, byla před operací zápisu vymazána. Ale protože operace mazání a zápisu jsou rozděleny, je možné provádět operace mazání, když systém umožňuje provádět časově kritické operace (obvykle po zapnutí).

Vymazat

Chcete-li vymazat bajt, musí být adresa zapsána do EEAR. Pokud jsou bity EEPMn 0b01, zápis EEPE (do čtyř cyklů po zapsání EEMPE) spustí pouze operaci mazání (programovací čas je uveden v Tabulka 5-1 dále strana 21). Bit EEPE zůstává nastaven, dokud není operace mazání dokončena. Když je zařízení zaneprázdněno programováním, není možné provádět žádné další operace EEPROM.

Napsat

Chcete-li zapsat umístění, musí uživatel zapsat adresu do EEAR a data do EEDR. Pokud jsou bity EEPMn 0b10, zápis EEPE (do čtyř cyklů po zapsání EEMPE) spustí pouze operaci zápisu (programovací čas je uveden v Tabulka 5-1 na straně 21). Bit EEPE zůstává nastaven, dokud není operace zápisu dokončena. Pokud místo, které má být zapsáno, nebylo před zápisem vymazáno, musí být uložená data považována za ztracená. Když je zařízení zaneprázdněno programováním, není možné provádět žádné další operace EEPROM.

Kalibrovaný oscilátor se používá k načasování přístupu do EEPROM. Ujistěte se, že frekvence oscilátoru je v souladu s požadavky popsanými v „OSCCAL - registr kalibrace oscilátoru“ na straně 31.

Následující kód examples show one assembly and one C function for erase, write, or atomic write of the EEPROM. Bývalýamples předpokládají, že přerušení jsou řízena (např. globálním zakázáním přerušení), takže během provádění těchto funkcí nedojde k žádnému přerušení.

Montážní kód Přample
EEPROM_write:

; Počkejte na dokončení předchozího zápisu

sbic EECR,EEPE

rjmp EEPROM_write

; Nastavte režim programování

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

z EECR, r16

; Nastavte adresu (r18: r17) v registru adres

ven EEARH, r18

ven EEARL, r17

; Zápis dat (r19) do datového registru

ven EEDR, R19

; Napište logický jeden na EEMPE

sbi EECR, EEMPE

; Začněte psát eeprom nastavením EEPE

sbi EECR,EEPE

ret

C kód Přample
void EEPROM_write(unsigned char ucAddress, unsigned char ucData)

{

/* Počkejte na dokončení předchozího zápisu */ while(EECR & (1<

;

/* Nastavit režim programování */

EECR = (0 <

/ * Nastavení adres a datových registrů * / EEAR = ucAddress;

EEDR = ucData;

/* Zapiš logickou jedničku do EEMPE */

EECR | = (1 <

/ * Zahajte zápis eeprom nastavením EEPE * /

EECR | = (1 <

}

Další kód exampukazují sestavu a funkce C pro čtení EEPROM. Bývalýamppředpokládáme, že přerušení jsou řízena tak, aby během provádění těchto funkcí nedocházelo k žádnému přerušení.

Montážní kód Přample
EEPROM_read:

; Počkejte na dokončení předchozího zápisu

sbic EECR,EEPE

rjmp EEPROM_read

; Nastavte adresu (r18: r17) v registru adres

ven EEARH, r18

ven EEARL, r17

; Začněte číst eeprom psaním EERE

sbi EECR,EERE

; Načíst data z datového registru

v r16, EEDR

ret

C kód Přample
unsigned char EEPROM_read(unsigned char ucAddress)

{

/ * Počkejte na dokončení předchozího zápisu * /

while (EECR & (1 <

;

/ * Nastavit registr adres * / EEAR = ucAddress;

/* Spusťte čtení eeprom zápisem EERE */

EECR | = (1 <

/ * Vrácení dat z datového registru * /

návrat EEDR;

}

Prevence poškození EEPROM

Během období nízkého VCC mohou být data EEPROM poškozena, protože napájecí objtage je příliš nízká na to, aby CPU a EEPROM fungovaly správně. Tyto problémy jsou stejné jako u systémů na úrovni desek využívajících EEPROM a měla by být použita stejná konstrukční řešení.

Poškození dat EEPROM může být způsobeno dvěma situacemi, kdy voltage je příliš nízké. Za prvé, pravidelná sekvence zápisu do EEPROM vyžaduje minimální objemtage, aby fungoval správně. Za druhé, samotný procesor CPU může nesprávně provést pokyny, pokud napájecí napětítage je příliš nízké.

Poškození dat EEPROM lze snadno zabránit dodržením tohoto doporučení pro návrh:

Udržujte AVR RESET aktivní (nízký) během období nedostatečného napájení voltagE. To lze provést aktivací interního detektoru hnědého vybití (BOD). Pokud úroveň detekce vnitřní BSK neodpovídá

potřebnou úroveň detekce, lze použít externí ochranný obvod resetování nízkého VCC. Pokud dojde k resetu během operace zápisu, operace zápisu bude dokončena za předpokladu, že napájecí zdroj objtage je dostatečné.

I / O paměť

Definice I / O prostoru ATtiny25 / 45/85 je uvedena v „Souhrn registrace“ na straně 200.

Všechny I / O ATtiny25 / 45/85 a periferní zařízení jsou umístěny v I / O prostoru. Ke všem I / O umístěním lze přistupovat pomocí instrukcí LD / LDS / LDD a ST / STS / STD, které přenášejí data mezi 32 běžnými pracovními registry a I / O prostorem. I / O registry v rozsahu adres 0x00 - 0x1F jsou přímo bitově přístupné pomocí instrukcí SBI a CBI. V těchto registrech lze hodnotu jednotlivých bitů zkontrolovat pomocí pokynů SBIS a SBIC. Další podrobnosti najdete v části instrukční sady. Při použití I / O specifických příkazů IN a OUT je nutné použít I / O adresy 0x00 - 0x3F. Při adresování I / O registrů jako datového prostoru pomocí instrukcí LD a ST je nutné k těmto adresám přidat 0x20.

Kvůli kompatibilitě s budoucími zařízeními by rezervované bity měly být při přístupu zapisovány na nulu. Rezervované adresy I / O paměti by nikdy neměly být zapsány.

Některé ze stavových příznaků jsou vymazány tak, že jim napíšete logický. Pamatujte, že pokyny CBI a SBI budou fungovat pouze na zadaném bitu, a lze je tedy použít v registrech obsahujících tyto stavové příznaky. Pokyny CBI a SBI fungují pouze s registry 0x00 až 0x1F.

I / O a periferní řídicí registry jsou vysvětleny v dalších částech.

Popis registrace

EEARH - registr adres EEPROM

Bit 7 6 5 4 3 2 1 0
0x1F EEAR8 EARH
Čtení/zápis R R R R R R R R/W
Počáteční hodnota 0 0 0 0 0 0 0 X/0

Bits 7: 1 - Res: Rezervované bity

Tyto bity jsou vyhrazeny pro budoucí použití a budou vždy čteny jako nula.

Bity 0 - EEAR8: Adresa EEPROM

Toto je nejvýznamnější bit adresy EEPROM ATtiny85. V zařízeních s menším počtem EEPROM, tj. ATtiny25 / ATtiny45, je tento bit vyhrazen a bude vždy číst nulu. Počáteční hodnota EEPROM Address Regis- ter (EEAR) je nedefinovaná, a proto musí být před přístupem k EEPROM zapsána správná hodnota.

EEARL - registr adres EEPROM

Bit

0x1E EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0 EEARL
Zadní / Zápis R/W R/W R/W R/W R/W R/W R/W R/W
Počáteční hodnota X X X X X X X X

Bit 7 - EEAR7: Adresa EEPROM

Toto je nejvýznamnější bit adresy EEPROM ATtiny45. V zařízeních s menším počtem EEPROM, tj. ATtiny25, je tento bit vyhrazen a bude vždy číst nulu. Počáteční hodnota EEPROM adresního registru (EEAR) není definována, a proto musí být před přístupem k EEPROM zapsána správná hodnota.

Bity 6: 0 - EEAR [6: 0]: Adresa EEPROM

Toto jsou (nízké) bity registru adres EEPROM. Datové bajty EEPROM jsou adresovány lineárně v rozsahu 0… (128/256 / 512-1). Počáteční hodnota EEAR není definována a před přístupem do EEPROM musí být proto zapsána správná hodnota.

EEDR - EEPROM datový registr

Bit 7 6 5 4 3 2 1 0
0x1D EEDR7 EEDR6 EEDR5 EEDR4 EEDR3 EEDR2 EEDR1 EEDR0 EEDR
Čtení/zápis R/W R/W R/W R/W R/W R/W R/W R/W
Počáteční hodnota 0 0 0 0 0 0 0 0

Pro operaci zápisu na EEPROM obsahuje registr EEDR data, která mají být zapsána do EEPROM na adresu uvedenou v registru EEAR. Pro operaci čtení EEPROM obsahuje EEDR data načtená z

EEPROM na adresu uvedenou EEAR.

 

5.5.4 Řídicí registr EECR - EEPROM

Bit 7 6 5 4 3 2 1 0
0x1C        – EEPM1 EEPM0 DĚSIVÝ EEMPE EEPE EERE EECR
Čtení / zápis R R R / W R/W R/W R/W R/W R/W
Počáteční hodnota 0 0 X X 0 0 X 0

Bit 7 - Res: Vyhrazený bit

Tento bit je vyhrazen pro budoucí použití a v ATtiny0 / 25/45 bude vždy čten jako 85. Kvůli kompatibilitě s budoucími zařízeními AVR vždy zapisujte tento bit na nulu. Po přečtení tento kousek maskujte.

Bit 6 - Res: Vyhrazený bit

Tento bit je rezervován v ATtiny25 / 45/85 a bude vždy čten jako nula.

Bity 5: 4 - EEPM [1: 0]: Bity programovacího režimu EEPROM

Nastavení bitů programovacího režimu EEPROM definuje, která programovací akce bude spuštěna při zápisu EEPE. Je možné programovat data v jedné atomové operaci (vymazat starou hodnotu a naprogramovat novou hodnotu) nebo rozdělit operace mazání a zápisu na dvě různé operace. Programovací časy pro různé režimy jsou zobrazeny v Tabulka 5-1. Když je nastaven EEPE, jakýkoli zápis do EEPMn bude ignorován. Během resetu budou bity EEPMn resetovány na 0b00, pokud EEPROM není zaneprázdněna programováním.

Tabulka 5-1. Bity režimu EEPROM

EEPM1 EEPM0 Programovací čas Operace
0 0 3.4 ms Vymazání a zápis v jedné operaci (atomová operace)
0 1 1.8 ms Pouze vymazat
1 0 1.8 ms Pouze pro zápis
1 1 Rezervováno pro budoucí použití

Bit 3 - EERIE: EEPROM Ready Interrupt Enable

Zápis EERIE do jednoho umožňuje přerušení připravenosti EEPROM, pokud je nastaven I-bit v SREG. Zápis EERIE na nulu zruší přerušení. Přerušení připravené k EEPROM generuje konstantní přerušení, když je energeticky nezávislá paměť připravena k programování.

Bit 2 - EEMPE: EEPROM Master Program Enable

Bit EEMPE určuje, zda zápis EEPE do jednoho bude mít efekt nebo ne.

Když je nastaven EEMPE, nastavení EEPE do čtyř hodinových cyklů naprogramuje EEPROM na vybranou adresu. Pokud je EEMPE nula, nastavení EEPE nebude mít žádný účinek. Když byl EEMPE zapsán do jednoho softwarem, hardware vymaže bit na nulu po čtyřech cyklech hodin.

Bit 1 - EEPE: EEPROM Program Enable

Signál EEPROM Program Enable Signal EEPE je signál umožňující programování do EEPROM. Když je zapsán EEPE, bude EEPROM naprogramována podle nastavení bitů EEPMn. Bit EEMPE musí být zapsán do jednoho před zápisem logického do EEPE, jinak nedojde k žádnému zápisu do EEPROM. Po uplynutí doby přístupu pro zápis je bit EEPE vymazán hardwarem. Po nastavení EEPE se CPU zastaví na dva cykly před provedením další instrukce.

Bit 0 - EERE: EEPROM Read Enable

Signál EEPROM Read Enable - EERE - je čtecí záblesk do EEPROM. Když je v registru EEAR nastavena správná adresa, musí být bit EERE zapsán do jedné, aby se spustilo čtení EEPROM. Přístup ke čtení EEPROM vyžaduje jednu instrukci a požadovaná data jsou okamžitě k dispozici. Při čtení EEPROM se CPU zastaví na čtyři cykly, než se provede další instrukce. Uživatel by měl před zahájením operace čtení vyzvednout bit EEPE. Pokud probíhá operace zápisu, není možné číst EEPROM ani měnit registr EEAR.

Systémové hodiny a možnosti hodin

Hodinové systémy a jejich distribuce

Rozložení hodin

CPU hodiny

Hodiny CPU jsou směrovány do částí systému, které se týkají provozu jádra AVR. Přampsoubory těchto modulů jsou obecný registr File, stavový registr a datová paměť s ukazatelem zásobníku. Zastavení hodin CPU brání jádru provádět obecné operace a výpočty.

I / O hodiny - clkI / O

Hodiny I / O jsou používány většinou I / O modulů, jako je časovač / čítač. Hodiny I / O používá také modul Externí přerušení, ale všimněte si, že některá externí přerušení jsou detekována asynchronní logikou, což umožňuje detekci těchto přerušení, i když jsou hodiny I / O zastaveny.

Flash Clock - clkFLASH

Hodiny Flash řídí činnost rozhraní Flash. Hodiny Flash jsou obvykle aktivní současně s hodinami CPU.

Hodiny ADC - clkADC

ADC je vybaven vyhrazenou doménou hodin. To umožňuje zastavit hodiny CPU a I / O, aby se snížil šum generovaný digitálními obvody. To poskytuje přesnější výsledky převodu ADC.

Interní PLL pro rychlou generaci periferních hodin - clkPCK

Interní PLL v ATtiny25 / 45/85 generuje taktovací frekvenci, která je 8x vynásobena vstupem zdroje. Standardně PLL používá jako zdroj výstup interního RC oscilátoru 8.0 MHz. Alternativně, pokud je nastaven bit LSM PLLCSR, použije PLL výstup RC oscilátoru dělený dvěma. Výstup PLL, tedy rychlý periferní takt, je 64 MHz. Rychlé periferní hodiny, nebo hodiny z nich přednastavené, lze vybrat jako zdroj hodin pro Timer / Counter1 nebo jako systémové hodiny. Vidět Obrázek 6-2. Frekvence rychlých periferních hodin se při nastavení LSM PLLCSR vydělí dvěma, výsledkem je hodinová frekvence 32 MHz. Všimněte si, že LSM nelze nastavit, pokud se jako systémové hodiny používá PLLCLK.

Obrázek 6-2. Hodinový systém PCK. Hodiny PCK

PLL je uzamčen na RC oscilátoru a nastavení RC oscilátoru pomocí registru OSCCAL současně upraví rychlé periferní hodiny. Avšak i když je RC oscilátor převeden na vyšší frekvenci než 8 MHz, rychlá periferní frekvence hodin saturuje na 85 MHz (nejhorší případ) a zůstává oscilovat na maximální frekvenci. Je třeba poznamenat, že PLL v tomto případě již není uzamčen pomocí hodin RC oscilátoru. Proto se nedoporučuje provádět úpravy OSCCAL na vyšší frekvenci než 8 MHz, aby se PLL udržel ve správném provozním rozsahu.

Interní PLL je povolen, když:

Nastaví se bit PLLE v registru PLLCSR.

Pojistka CKSEL je naprogramována na „0001“.

Pojistka CKSEL je naprogramována na „0011“.

Bit PLLCSR PLOCK je nastaven, když je PLL uzamčeno. Jak interní RC oscilátor, tak PLL jsou vypnuty ve vypnutém a pohotovostním režimu spánku.

Interní PLL v režimu kompatibility ATtiny15

Protože ATtiny25 / 45/85 je migrační zařízení pro uživatele ATtiny15, existuje režim kompatibility ATtiny15 pro zpětnou kompatibilitu. Režim kompatibility ATtiny15 je vybrán naprogramováním pojistek CKSEL na '0011'.

V režimu kompatibility ATtiny15 je frekvence interního RC oscilátoru kalibrována až na 6.4 MHz a multiplikační faktor PLL je nastaven na 4x. Vidět Obrázek 6-3. S těmito úpravami je taktovací systém kompatibilní s ATtiny15 a výsledné rychlé periferní hodiny mají frekvenci 25.6 MHz (stejně jako v ATtiny15).

Obrázek 6-3. Hodinový systém PCK v režimu kompatibility ATtiny15. Hodinový systém

Zdroje hodin

Zařízení má následující možnosti zdroje hodin, které lze vybrat pomocí bitů Flash Fuse, jak je uvedeno níže. Hodiny ze zvoleného zdroje jsou přiváděny do generátoru hodin AVR a směrovány do příslušných modulů.

Tabulka 6-1. Možnosti hodin zařízení Vyberte

Možnost časování zařízení CKSEL[3:0](1)
Externí hodiny (vidět strana 26) 0000
Vysokofrekvenční hodiny PLL (vidět strana 26) 0001
Kalibrovaný interní oscilátor (vidět strana 27) 0010(2)
Kalibrovaný interní oscilátor (vidět strana 27) 0011(3)
Interní 128 kHz oscilátor (vidět strana 28) 0100
Nízkofrekvenční krystalový oscilátor (vidět strana 29) 0110
Krystalový oscilátor / keramický rezonátor (vidět strana 29) 1000 – 1111
Rezervováno 0101, 0111

U všech pojistek znamená „1“ neprogramováno, zatímco „0“ znamená naprogramováno.

Zařízení je dodáváno s touto volbou.

Tím se vybere režim kompatibility ATtiny15, kde jsou systémové hodiny vyděleny čtyřmi, což vede k hodinové frekvenci 1.6 MHz. Další informace viz „Kalibrovaný interní oscilátor“ na straně 27.

Různé možnosti pro každou možnost taktování jsou uvedeny v následujících částech. Když se CPU probudí z Power-down, zvolený zdroj hodin se použije k načasování spuštění, čímž se zajistí stabilní provoz oscilátoru před zahájením provádění instrukce. Když se procesor spustí z resetu, dojde k dalšímu zpoždění, které umožní napájení dosáhnout stabilní úrovně před zahájením normálního provozu. Watchdog oscilátor se používá k načasování této části spouštěcí doby v reálném čase. Počet cyklů oscilátoru WDT použitých pro každý časový limit je uveden v Tabulka 6-2.

Tabulka 6-2. Počet cyklů hlídacího oscilátoru

Typ Časový limit Počet cyklů
4 ms 512
64 ms 8K (8,192)

Externí hodiny

Chcete-li řídit zařízení z externího zdroje hodin, CLKI by mělo být řízeno, jak je znázorněno na Obrázek 6-4. Chcete-li zařízení provozovat na externích hodinách, musí být pojistky CKSEL naprogramovány na „00“.

Obrázek 6-4. Konfigurace externí jednotky hodin

Obr

Pokud je vybrán tento zdroj hodin, jsou doby spuštění určeny pojistkami SUT, jak je znázorněno na Tabulka 6-3.

Tabulka 6-3. Časy spouštění pro výběr externích hodin

SUT[1:0] Čas spuštění od vypnutí Další zpoždění z resetu Doporučené použití
00 6 CK 14CK BOD povolen
01 6 CK 14 CK + 4 ms Rychle rostoucí síla
10 6 CK 14 CK + 64 ms Pomalu rostoucí síla
11 Rezervováno

Při použití externích hodin je nutné se vyhnout náhlým změnám aplikované frekvence hodin, aby byl zajištěn stabilní provoz MCU. Změna frekvence o více než 2% mezi jednotlivými hodinovými cykly může vést k nepředvídatelnému chování. Je nutné zajistit, aby byl MCU udržován v resetu během takových změn frekvence hodin.

Všimněte si, že předprodej systémových hodin lze použít k implementaci změn běhu interní frekvence hodin při zachování stabilního provozu. Odkazují na „System Clock Prescaler“ na stránce 31 pro podrobnosti.

Vysokofrekvenční hodiny PLL

K dispozici je interní PLL, který poskytuje nominálně 64 MHz taktovací frekvenci uzamčenou k RC oscilátoru pro použití Periferního časovače / čítače1 a pro zdroj systémových hodin. Je-li vybrán jako zdroj systémových hodin, je naprogramováním pojistek CKSEL na '0001' vydělen čtyřmi, jak je znázorněno v Tabulka 6-4.

Tabulka 6-4. Provozní režimy vysokofrekvenčních hodin PLL

CKSEL[3:0] Jmenovitá frekvence
0001 16 MHz

Pokud je vybrán tento zdroj hodin, jsou doby spuštění určeny pojistkami SUT, jak je uvedeno v Tabulka 6-5.

Tabulka 6-5. Časy spouštění pro vysokofrekvenční hodiny PLL

SUT[1:0] Čas spuštění od vypnutí Další zpoždění od resetu při zapnutí (VCC = 5.0 V) Doporučené použití
00 14 CK + 1 K (1024) CK + 4 ms 4 ms BOD povolen

Tabulka 6-5. Časy spouštění pro vysokofrekvenční hodiny PLL

SUT[1:0] Čas spuštění od vypnutí Další zpoždění od resetu při zapnutí (VCC = 5.0 V) Doporučené použití
01 14 CK + 16 K (16384) CK + 4 ms 4 ms Rychle rostoucí síla
10 14 CK + 1 K (1024) CK + 64 ms 4 ms Pomalu rostoucí síla
11 14 CK + 16 K (16384) CK + 64 ms 4 ms Pomalu rostoucí síla

Kalibrovaný interní oscilátor

Interní RC oscilátor ve výchozím nastavení poskytuje přibližný takt 8.0 MHz. Ačkoli voltagTyto hodiny mohou být velmi přesně kalibrovány uživatelem a závislé na teplotě. Vidět „Kalibrovaný interní RC oscilátor Accu- racy “na straně 164 „Rychlost interního oscilátoru“ na straně 192 Více podrobností. Zařízení je dodáváno s naprogramovanou pojistkou CKDIV8. Vidět „System Clock Prescaler“ na stránce 31 pro více podrobností.

Tyto hodiny lze zvolit jako systémové hodiny naprogramováním pojistek CKSEL, jak je znázorněno na Tabulka 6-6 na straně

27. Pokud je vybráno, bude fungovat bez externích komponent. Během resetu hardware načte předprogramovanou kalibrační hodnotu do registru OSCCAL a tím automaticky kalibruje RC oscilátor. Přesnost této kalibrace se zobrazuje jako tovární kalibrace v Tabulka 21-2 na straně 164.

Změnou registru OSCCAL ze SW viz „OSCCAL - registr kalibrace oscilátoru“ na straně 31, je možné dosáhnout vyšší přesnosti kalibrace než při použití tovární kalibrace. Přesnost této kalibrace se zobrazuje jako Uživatelská kalibrace v Tabulka 21-2 na straně 164.

Pokud se tento oscilátor použije jako hodiny čipu, oscilátor Watchdog se stále použije pro časovač Watchdog a pro vypršení časového limitu. Další informace o předprogramované kalibrační hodnotě najdete v této části "Cali - bation Bytes “na straně 150.

Interní oscilátor lze také nastavit tak, aby poskytoval hodiny 6.4 MHz zápisem pojistek CKSEL na „0011“, jak je znázorněno na Tabulka 6-6 níže. Toto nastavení se označuje jako režim kompatibility ATtiny15 a je určeno k poskytování kalibrovaného zdroje hodin na 6.4 MHz, jako v ATtiny15. V režimu kompatibility ATtiny15 používá PLL interní oscilátor běžící na 6.4 MHz ke generování signálu periferních hodin 25.6 MHz pro Timer / Counter1 (viz „8bitový časovač / čítač Režim ATtiny15 “na straně 95). Pamatujte, že v tomto provozním režimu je hodinový signál 6.4 MHz vždy rozdělen čtyřmi, což poskytuje systémové hodiny 1.6 MHz.

Tabulka 6-6. Provozní režimy interního kalibrovaného RC oscilátoru

CKSEL[3:0] Jmenovitá frekvence
0010(1) 8.0 MHz
0011(2) 6.4 MHz

Zařízení je dodáváno s touto volbou.

Toto nastavení vybere režim kompatibility ATtiny15, kde jsou systémové hodiny vyděleny čtyřmi, což vede k hodinové frekvenci 1.6 MHz.

Když je jako zdroj hodin zvolen kalibrovaný interní oscilátor 8 MHz, časy spuštění jsou určeny pojistkami SUT, jak je znázorněno na Tabulka 6-7 níže.

Tabulka 6-7. Časy spouštění pro interní kalibrované hodiny RC oscilátoru

SUT[1:0] Čas spuštění od vypnutí Další zpoždění od resetu (VCC = 5.0 V) Doporučené použití
00 6 CK 14CK(1) BOD povolen
01 6 CK 14 CK + 4 ms Rychle rostoucí síla
10(2) 6 CK 14 CK + 64 ms Pomalu rostoucí síla
11 Rezervováno

1. Pokud je naprogramována pojistka RSTDISBL, prodlouží se tato doba rozběhu na 14 CK + 4 ms, aby bylo možné vstoupit do programovacího režimu.
2. Zařízení je dodáváno s touto volbou.

V režimu kompatibility ATtiny15 jsou časy spuštění určeny pojistkami SUT, jak je znázorněno na Tabulka 6-8 níže.

Tabulka 6-8. Časy spouštění pro interní kalibrované hodiny RC oscilátoru (v režimu ATtiny15)

SUT[1:0] Čas spuštění od vypnutí Další zpoždění od resetu (VCC = 5.0 V) Doporučené použití
00 6 CK 14 CK + 64 ms
01 6 CK 14 CK + 64 ms
10 6 CK 14 CK + 4 ms
11 1 CK 14CK(1)

Poznámka: Pokud je naprogramována pojistka RSTDISBL, bude tato doba spouštění zvýšena na 14CK + 4 ms, aby bylo možné vstoupit do programovacího režimu.

Stručně řečeno, více informací o režimu kompatibility ATtiny15 najdete v částech „Port B (PB5: PB0)“ na strana 2„Interní PLL v režimu kompatibility ATtiny15“ na straně 24„8bitový časovač / čítač1 v režimu ATtiny15“ zapnutý strana 95„Omezení debugWIRE“ na stránce 140„Kalibrační bajty“ na stránce 150 a v tabulce "Prescaler hodin." Vyberte ”na straně 33.

Interní 128 kHz oscilátor

Interní oscilátor 128 kHz je nízkovýkonový oscilátor poskytující takt 128 kHz. Frekvence je nominální při 3V a 25°C. Tyto hodiny lze vybrat jako systémové hodiny naprogramováním pojistek CKSEL na „0100“.

Pokud je vybrán tento zdroj hodin, jsou doby spuštění určeny pojistkami SUT, jak je znázorněno na Tabulka 6-9.

Tabulka 6-9. Start-up Times for 128 kHz Internal Oscilator

SUT[1:0] Čas spuštění od vypnutí Další zpoždění z resetu Doporučené použití
00 6 CK 14CK(1) BOD povolen
01 6 CK 14 CK + 4 ms Rychle rostoucí síla
10 6 CK 14 CK + 64 ms Pomalu rostoucí síla
11 Rezervováno

Poznámka: Pokud je naprogramována pojistka RSTDISBL, bude tato doba spouštění zvýšena na 14CK + 4 ms, aby bylo možné vstoupit do programovacího režimu.

Nízkofrekvenční krystalový oscilátor

Chcete-li použít hodinový krystal 32.768 kHz jako zdroj hodin pro zařízení, je třeba zvolit nízkofrekvenční krystalový oscilátor nastavením pojistek CKSEL na hodnotu „0110“. Krystal by měl být připojen, jak je znázorněno na Obrázek 6-5. Informace o vhodné kapacitě zátěže pro krystal 32.768 kHz naleznete v datovém listu výrobce.

Pokud je vybrán tento oscilátor, jsou doby spuštění určeny pojistkami SUT, jak je uvedeno v Tabulka 6-10.

Tabulka 6-10. Časy spouštění pro výběr hodin nízkofrekvenčního krystalového oscilátoru

SUT[1:0] Čas spuštění od vypnutí Další zpoždění od resetu (VCC = 5.0 V) Doporučené použití
00 1K (1024) CK(1) 4 ms Rychle rostoucí výkon nebo BOD povoleno
01 1K (1024) CK(1) 64 ms Pomalu rostoucí síla
10 32K (32768) CK 64 ms Stabilní frekvence při spuštění
11 Rezervováno

Poznámka: Tyto možnosti by měly být použity pouze v případě, že stabilita frekvence při spuštění není důležitá.

Nízkofrekvenční krystalový oscilátor poskytuje interní zátěžovou kapacitu, viz Tabulka 6-11 na každém kolíku TOSC.

Tabulka 6-11. Kapacita nízkofrekvenčního krystalového oscilátoru

Zařízení 32 kHz Osc. Typ Víčko (Xtal1 / Tosc1) Víčko (Xtal2 / Tosc2)
ATtiny25 / 45/85 Systém Osc. 16 pF 6 pF

Krystalový oscilátor / keramický rezonátor

XTAL1 a XTAL2 jsou vstupem a výstupem invertování amplifier, který lze nakonfigurovat pro použití jako oscilátor na čipu, jak ukazuje obrázek Obrázek 6-5. Lze použít buď křemenný krystal, nebo keramický rezonátor.

C1 a C2 by měly být vždy stejné pro krystaly i rezonátory. Optimální hodnota kondenzátorů závisí na použitém krystalu nebo rezonátoru, velikosti rozptylové kapacity a elektromagnetickém šumu prostředí. Některé počáteční pokyny pro výběr kondenzátorů pro použití s ​​krystaly jsou uvedeny v Tabulka 6-12 níže. U keramických rezonátorů by se měly použít hodnoty kondenzátoru dané výrobcem.

Tabulka 6-12. Provozní režimy krystalového oscilátoru

CKSEL[3:1] Frekvenční rozsah (MHz) Doporučený rozsah pro kondenzátory C1 a C2 pro použití s ​​krystaly (pF)
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

Poznámky: Tato možnost by se neměla používat s krystaly, pouze s keramickými rezonátory.

Oscilátor může pracovat ve třech různých režimech, každý optimalizovaný pro konkrétní frekvenční rozsah. Provozní režim je zvolen pojistkami CKSEL [3: 1], jak je znázorněno na Tabulka 6-12.

Pojistka CKSEL0 společně s pojistkami SUT [1: 0] volí spouštěcí časy, jak je uvedeno v Tabulka 6-13.

Tabulka 6-13. Časy spouštění pro výběr hodin krystalového oscilátoru

CKSEL0 SUT[1:0] Čas spuštění od vypnutí Další zpoždění z resetu Doporučené použití
0 00 258 CK(1) 14 CK + 4 ms Keramický rezonátor, rychle rostoucí výkon
0 01 258 CK(1) 14 CK + 64 ms Keramický rezonátor, pomalu rostoucí výkon
0 10 1K (1024) CK(2) 14CK Keramický rezonátor, BOD povolen
0 11 1K (1024) CK(2) 14 CK + 4 ms Keramický rezonátor, rychle rostoucí výkon
1 00 1K (1024) CK(2) 14 CK + 64 ms Keramický rezonátor, pomalu rostoucí výkon
1 01 16K (16384) CK 14CK Crystal Oscillator, BOD povoleno
1 10 16K (16384) CK 14 CK + 4 ms Krystalový oscilátor, rychle rostoucí síla
1 11 16K (16384) CK 14 CK + 64 ms Krystalový oscilátor, pomalu rostoucí síla

Poznámky

Tyto možnosti by se měly používat, pouze pokud nepracují na maximální frekvenci zařízení, a pouze v případě, že stabilita frekvence při spuštění není pro aplikaci důležitá. Tyto možnosti nejsou vhodné pro krystaly.

Tyto možnosti jsou určeny pro použití s ​​keramickými rezonátory a zajišťují frekvenční stabilitu při spuštění. Lze je také použít s krystaly, pokud nepracují na maximální frekvenci zařízení a pokud pro aplikaci není důležitá stabilita frekvence při spuštění.

Výchozí zdroj hodin

Zařízení je dodáváno s naprogramovanými CKSEL = „0010“, SUT = „10“ a CKDIV8. Výchozí nastavení zdroje hodin je tedy interní RC oscilátor běžící na 8 MHz s nejdelší dobou spuštění a počátečním přednastavením systémových hodin na 8, což má za následek systémové hodiny 1.0 MHz. Toto výchozí nastavení zajišťuje, že všichni uživatelé mohou provést požadované nastavení zdroje hodin pomocí In-System nebo High-voltage Programátor.

Přednastavovač systémových hodin

Systémové hodiny ATtiny25 / 45/85 lze rozdělit nastavením „CLKPR - Register Prescale Clock“ na straně 32. Tuto funkci lze použít ke snížení spotřeby energie, když je požadavek na výpočetní výkon nízký. To lze použít se všemi možnostmi zdroje hodin a ovlivní taktovací frekvenci CPU a všech synchronních periferií. clkI/O, clkADC, clkCPU a clkFLASH jsou rozděleny faktorem, jak je znázorněno na Tabulka 6-15 na straně 33.

Čas přepínání

Při přepínání mezi nastavením předvolby zajišťuje systémový předvolič hodin, aby v systému hodin nedocházelo k závadám a aby žádná mezifrekvenční frekvence nebyla vyšší než ani hodinová frekvence odpovídající předchozímu nastavení, ani hodinová frekvence odpovídající novému nastavení.

Počítadlo zvlnění, které implementuje prescaler, běží na frekvenci nerozdělených hodin, která může být rychlejší než frekvence hodin CPU. Proto není možné určit stav prescaleru - i když by byl čitelný a nelze přesně předpovědět přesný čas potřebný k přepnutí z jedné hodinové divize na druhou.

Od okamžiku zápisu hodnot CLKPS trvá mezi T1 + T2 a T1 + 2 * T2, než je nová hodinová frekvence aktivní. V tomto intervalu se vytvoří 2 aktivní hodinové hrany. T1 je zde předchozí perioda hodin a T2 je perioda odpovídající novému nastavení předvolby.

Vyrovnávací paměť hodin

Zařízení může vysílat systémové hodiny na pin CLKO (pokud se nepoužívá jako pin XTAL2). Pro povolení výstupu musí být naprogramována pojistka CKOUT. Tento režim je vhodný, když se čipové hodiny používají k řízení dalších obvodů v systému. Pamatujte, že hodiny nebudou během resetu vysílány a že normální programování I / O pinu bude přepsáno, když bude naprogramována pojistka. Interní RC oscilátor, WDT oscilátor, PLL a externí hodiny (CLKI) lze zvolit, když jsou hodiny na výstupu CLKO. Krystalové oscilátory (XTAL1, XTAL2) nelze použít pro výstup hodin na CLKO. Pokud je použit systémový předvoleb hodin, pak jsou vydávány rozdělené systémové hodiny.

Popis registrace

OSCCAL - Kalibrační registr oscilátoru

Bit 7 6 5 4 3 2 1 0
0x31 CAL7 CAL6 CAL5 CAL4 CAL3 CAL2 CAL1 CAL0 OSCCAL
Čtení/zápis R/W R/W R/W R/W R/W R/W R/W R/W

Bity 7: 0 - CAL [7: 0]: Kalibrační hodnota oscilátoru

Registr kalibrace oscilátoru se používá k oříznutí kalibrovaného interního RC oscilátoru k odstranění procesních variací z frekvence oscilátoru. Během resetování čipu se do tohoto registru automaticky zapisuje předem naprogramovaná kalibrační hodnota, což udává továrně kalibrovanou frekvenci, jak je uvedeno v Tabulka 21-2 na straně 164. Aplikační software může tento registr zapsat a změnit tak frekvenci oscilátoru. Oscilátor lze kalibrovat na frekvence, jak je uvedeno v Tabulka 21-2 na straně 164. Kalibrace mimo tento rozsah není zaručena.

Všimněte si, že tento oscilátor slouží k načasování přístupů k zápisu do EEPROM a Flash a tyto časy zápisu budou odpovídajícím způsobem ovlivněny. Pokud jsou zapsány EEPROM nebo Flash, nekalibrujte na více než 8.8 MHz. Jinak může dojít k selhání zápisu na EEPROM nebo Flash.

Bit CAL7 určuje rozsah činnosti oscilátoru. Nastavením tohoto bitu na 0 získáte nejnižší frekvenční rozsah, nastavením tohoto bitu na 1 získáte nejvyšší frekvenční rozsah. Dva frekvenční rozsahy se překrývají, jinými slovy nastavení OSCCAL = 0x7F dává vyšší frekvenci než OSCCAL = 0x80.

Bity CAL [6: 0] se používají k naladění frekvence ve zvoleném rozsahu. Nastavení 0x00 dává nejnižší frekvenci v tomto rozsahu a nastavení 0x7F dává nejvyšší frekvenci v rozsahu.

Aby byl zajištěn stabilní provoz MCU, měla by se kalibrační hodnota měnit v malém. Změna frekvence o více než 2% z jednoho cyklu do druhého může vést k nepředvídatelnému chování. Změny v OSCCAL by u každé kalibrace neměly překročit 0x20. Je nutné zajistit, aby byl MCU udržován v resetu během takových změn frekvence hodin

Tabulka 6-14. Frekvenční rozsah interního RC oscilátoru

Hodnota OSCCAL Typická nejnižší frekvence s ohledem na jmenovitou frekvenci Typická nejvyšší frekvence s ohledem na jmenovitou frekvenci
0x00 50 % 100 %
0x3F 75 % 150 %
0x7F 100 % 200 %

CLKPR - registr předvoleb hodin

Bit 7 6 5 4 3 2 1 0
0x26 CLKPCE CLKPS3 CLKPS2 CLKPS1 CLKPS0 CLKPR
Čtení/zápis R/W R R R R/W R/W R/W R/W

Počáteční hodnota 0 0 0 0 Viz popis bitů

Bit 7 - CLKPCE: Změna předvolby hodin povolena

Bit CLKPCE musí být zapsán na logický, aby bylo možné změnit bity CLKPS. Bit CLKPCE se aktualizuje, pouze když jsou ostatní bity v CLKPR současně zapsány na nulu. CLKPCE je vymazán hardwarem čtyři cykly po jeho zápisu nebo při zápisu CLKPS bitů. Přepis bitů CLKPCE v tomto časovém limitu neprodlouží ani časový limit, ani nevymaže bit CLKPCE.

Bits 6: 4 - Res: Rezervované bity

Tyto bity jsou rezervované bity v ATtiny25 / 45/85 a budou se vždy číst jako nula.

Bits 3: 0 - CLKPS [3: 0]: Clock Prescaler Vyberte Bits 3 - 0

Tyto bity definují dělicí faktor mezi vybraným zdrojem hodin a hodinami interního systému. Tyto bity lze zapisovat za běhu, aby se měnila frekvence hodin tak, aby vyhovovaly požadavkům aplikace. Vzhledem k tomu, že dělič rozděluje vstup hlavních hodin na MCU, rychlost všech synchronních periferií se sníží, když se použije faktor dělení. Faktory dělení jsou uvedeny v Tabulka 6-15.

Aby se zabránilo neúmyslným změnám taktovací frekvence, je třeba při změně bitů CLKPS dodržovat speciální postup zápisu:

Napište bit CLKPCE (Clock Prescaler Change Enable) na jeden a všechny ostatní bity v CLKPR na nulu.

Během čtyř cyklů zapište požadovanou hodnotu do CLKPS a při zápisu nuly do CLKPCE.

Přerušení musí být zakázáno při změně nastavení předvolby, aby se zajistilo, že není přerušen postup zápisu.

Pojistka CKDIV8 určuje počáteční hodnotu bitů CLKPS. Pokud není CKDIV8 naprogramován, bity CLKPS budou resetovány na „0000“. Pokud je naprogramován CKDIV8, bity CLKPS se resetují na „0011“, což dává při spuštění dělicí faktor osm. Tato funkce by měla být použita, pokud má vybraný zdroj hodin vyšší frekvenci, než je maximální frekvence zařízení za současných provozních podmínek. Pamatujte, že do bitů CLKPS lze zapsat jakoukoli hodnotu bez ohledu na nastavení pojistky CKDIV8. Aplikační software musí zajistit dostatečný faktor rozdělení

zvoleno, pokud vybraný zdroj hodin má vyšší frekvenci, než je maximální frekvence zařízení za současných provozních podmínek. Zařízení je dodáváno s naprogramovanou pojistkou CKDIV8.

Tabulka 6-15. Vyberte předděličku hodin

CLKPS3 CLKPS2 CLKPS1 CLKPS0 Faktor hodinového dělení
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 Rezervováno
1 0 1 0 Rezervováno
1 0 1 1 Rezervováno
1 1 0 0 Rezervováno
1 1 0 1 Rezervováno
1 1 1 0 Rezervováno
1 1 1 1 Rezervováno

Poznámka: Předdělička je v režimu kompatibility ATtiny15 deaktivována a zápis do CLKPR ani programování pojistky CKDIV8 nemá žádný vliv na systémové hodiny (které budou vždy 1.6 MHz).

Řízení spotřeby a režimy spánku

Díky vysokému výkonu a špičkové efektivitě kódu jsou mikroprocesory AVR ideální volbou pro aplikace s nízkou spotřebou. Režimy spánku navíc umožňují aplikaci vypnout nepoužívané moduly v MCU, čímž šetří energii. AVR poskytuje různé režimy spánku umožňující uživateli přizpůsobit spotřebu energie požadavkům aplikace.

Režimy spánku

Obrázek 6-1 na straně 23 představuje různé hodinové systémy a jejich distribuci v ATtiny25 / 45/85. Obrázek je užitečný při výběru vhodného režimu spánku. Tabulka 7-1 zobrazuje různé režimy spánku a jejich zdroje probuzení.

Tabulka 7-1. Aktivní hodinové domény a zdroje buzení v různých režimech spánku

Aktivní domény hodin Oscilátory Zdroje probuzení
Režim spánku clkCPU clkFLASH clkIO clkADC clkPCK Hlavní zdroj hodin povolen INT0 a změna PINu SPM / EEPROM

Připraveno

 

USI Startovací podmínka

ADC Jiné I/O Hlídací pes Přerušit
Líný X X X X X X X X X X
Redukce šumu ADC X X X(1) X X X X
Vypnout X(1) X X

Poznámka: Pro INT0 pouze přerušení úrovně.

Pro vstup do některého ze tří režimů spánku musí být bit SE v MCUCR zapsán do logického a musí být provedena instrukce SLEEP. Bity SM [1: 0] v registru MCUCR vybírají, který režim spánku (nečinnost, redukce šumu ADC nebo vypnutí) bude aktivován instrukcí SLEEP. Vidět Tabulka 7-2 pro shrnutí.

Pokud dojde k povolenému přerušení, když je MCU v režimu spánku, MCU se probudí. MCU se pak zastaví na čtyři cykly navíc k době spuštění, provede rutinu přerušení a obnoví provádění od instrukce následující po SLEEP. Obsah rejstříku File a SRAM se nezmění, když se zařízení probudí ze spánku. Pokud během režimu spánku dojde k resetu, MCU se probudí a spustí se z resetovacího vektoru.

Poznámka: Je-li pro probuzení použito přerušení spouštěné úrovní, musí být změněná úroveň po určitou dobu podržena, aby se MCU probudil (a aby MCU vstoupil do servisní rutiny přerušení). Vidět „Externí přerušení“ na stránce 49 pro podrobnosti.

Klidový režim

Když jsou bity SM[1:0] zapsány na 00, instrukce SLEEP uvede MCU do klidového režimu, zastaví CPU, ale umožní analogovému komparátoru, ADC, USI, časovači/počítadlu, Watchdogu a systému přerušení pokračovat v činnosti. jíst. Tento režim spánku v podstatě zastaví clkCPU a clkFLASH, zatímco umožňuje běh ostatních hodin.

Klidový režim umožňuje MCU probudit se z externích aktivovaných přerušení i interních, jako je přetečení časovače. Pokud není vyžadováno probuzení z přerušení analogového komparátoru, lze analogový komparátor vypnout nastavením bitu ACD v „ACSR - Řízení analogového komparátoru a stavový registr“ na stránce 120. Tím se sníží spotřeba energie v základním režimu. Pokud je povolen ADC, převod se spustí automaticky, když vstoupíte do tohoto režimu.

Režim redukce šumu ADC

Když jsou bity SM[1:0] zapsány do 01, instrukce SLEEP způsobí, že MCU vstoupí do režimu redukce šumu ADC, zastaví CPU, ale umožní ADC, externím přerušením a Watchdog pokračovat v činnosti (pokud je povoleno). Tento režim spánku zastaví clkI/O, clkCPU a clkFLASH, zatímco umožňuje běh ostatních hodin.

To zlepšuje šumové prostředí pro ADC a umožňuje měření s vyšším rozlišením. Pokud je povolen ADC, převod se spustí automaticky, když vstoupíte do tohoto režimu. Kromě přerušení ADC Conversion Complete může probudit MCU z ADC Noise Reduction pouze externí reset, Watchdog reset, Brown-out reset, přerušení připravené SPM / EEPROM, externí přerušení úrovně na INT0 nebo přerušení změny pinu režimu.

Režim vypnutí

Když jsou bity SM [1: 0] zapsány na 10, instrukce SLEEP přepne MCU do režimu vypnutí. V tomto režimu je oscilátor zastaven, zatímco externí přerušení, detekce podmínek spuštění USI a Watchdog pokračují v provozu (pokud je povoleno). MCU může probudit pouze externí reset, Watchdog reset, Brown-out reset, USI start podmínka přerušení, externí úroveň přerušení na INT0 nebo pin změna přerušení. Tento režim spánku zastaví všechny generované hodiny a umožní provoz pouze asynchronních modulů.

Zakázat software BOD

Když je detektor zhasnutí (BOD) aktivován pojistkami BODLEVEL (viz Tabulka 20-4 na straně 148), BSK aktivně monitoruje napájecí napětítage během období spánku. V některých zařízeních je možné ušetřit energii vypnutím BSK softwarem v režimu spánku při vypnutí. Spotřeba energie v režimu spánku pak bude na stejné úrovni, jako když je BOD globálně deaktivován pojistkami.

Pokud je BOD softwarově zakázán, funkce BOD se vypne ihned po přechodu do režimu spánku. Po probuzení ze spánku se BOD opět automaticky aktivuje. To zajišťuje bezpečný provoz v případě, že úroveň VCC klesne během období spánku.

Pokud byl BOD deaktivován, bude doba probuzení z režimu spánku stejná jako doba probuzení z RESETU. Uživatel musí ručně nakonfigurovat časy probuzení tak, aby měl odkaz na bandgap čas začít a BOD pracuje správně, než MCU pokračuje ve spouštění kódu. Viz pojistkové bity SUT [1: 0] a CKSEL [3: 0] v tabulce „Fuse Low Byte“ na straně 149

Zakázání BOD je řízeno bitem BODS (BOD Sleep) v MCU Control Register, viz „MCUCR - ovládání MCU Zaregistrovat se “na straně 37. Zápis tohoto bitu do jedné vypne BOD při vypnutí, zatímco zápis nuly udržuje BOD aktivní. Výchozí nastavení je nula, tj. Aktivní BOD.

Zápis do bitu BODS je řízen časovanou posloupností a bitem povolení, viz „MCUCR - Regulace řízení MCU- ter “na straně 37.

Omezení

Funkce deaktivace BOD byla implementována pouze v následujících zařízeních:

ATtiny25, revize E a novější

ATtiny45, revize D a novější

ATtiny85, revize C a novější

Revize jsou označeny na balíčku zařízení a lze je vyhledat následujícím způsobem:

Spodní strana balíčků 8P3 a 8S2

Horní strana obalu 20M1

Registr snížení výkonu

Registr redukce výkonu (PRR), viz „PRR - registr snižování výkonu“ na straně 38, poskytuje metodu ke snížení spotřeby energie zastavením hodin na jednotlivých periferních zařízeních. Aktuální stav periferního zařízení je zmrazen a I / O registry nelze číst ani zapisovat. Prostředky, které periferní zařízení používá při zastavení hodin, zůstanou obsazené, a proto by periferní zařízení mělo být ve většině případů před zastavením hodin deaktivováno. Probuzení modulu, které se provádí vymazáním bitu v PRR, uvede modul do stejného stavu jako před vypnutím.

Vypnutí modulu lze použít v základním režimu a aktivním režimu k podstatnému snížení celkové spotřeby energie. Ve všech ostatních režimech spánku jsou hodiny již zastaveny. Vidět „Napájecí proud I / O modulů“ na stránce 177 napřamples.

Minimalizace spotřeby energie

Při pokusu o minimalizaci spotřeby energie v systému řízeném AVR je třeba vzít v úvahu několik problémů. Obecně by měly být spánkové režimy používány v maximální možné míře a spánkový režim by měl být zvolen tak, aby fungovalo co nejméně funkcí zařízení. Všechny nepotřebné funkce by měly být deaktivovány. Zejména následující moduly mohou vyžadovat zvláštní pozornost, když se snažíte dosáhnout co nejnižší spotřeby energie.

Analogově digitální převodník

Pokud je povoleno, bude ADC povolen ve všech režimech spánku. Z důvodu úspory energie by měl být ADC před přechodem do režimu spánku deaktivován. Když je ADC vypnutý a znovu zapnutý, další převod bude rozšířený převod. Odkazují na „Analogově digitální převodník“ na straně 122 pro podrobnosti o provozu ADC.

Analogový komparátor

Při vstupu do základního režimu by měl být analogový komparátor deaktivován, pokud není používán. Při vstupu do režimu redukce šumu ADC by měl být deaktivován analogový komparátor. V ostatních spánkových režimech je analogový komparátor automaticky deaktivován. Pokud je však analogový komparátor nastaven tak, aby používal interní voltage Odkaz jako vstup, analogový komparátor by měl být deaktivován ve všech spánkových režimech. Jinak Interní svtage Reference bude povolena nezávisle na režimu spánku. Odkazují na „Analogový komparátor“ na straně 119 Podrobnosti o konfiguraci analogového komparátoru.

Brown-out detektor

Pokud detektor zhnědnutí není v aplikaci potřeba, měl by být tento modul vypnutý. Pokud je detektor zhasnutí aktivován pojistkami BODLEVEL, bude aktivován ve všech režimech spánku, a proto vždy spotřebovává energii. V režimech hlubšího spánku to významně přispěje k celkové spotřebě proudu. Vidět "Brown-out Detec- “na straně 41 „Zakázání softwaru BOD“ na straně 35 Podrobnosti o konfiguraci detektoru zhnědnutí.

Interní svtage Reference

The Internal Voltage Reference bude v případě potřeby povolena detekcí zhasnutí, analogovým komparátorem nebo ADC. Pokud jsou tyto moduly deaktivovány, jak je popsáno v částech výše, interní voltagReference bude deaktivována a nebude spotřebovávat energii. Při opětovném zapnutí musí uživatel povolit spuštění reference před použitím výstupu. Pokud je reference zapnutá v režimu spánku, lze výstup použít okamžitě. Odkazují na "Interní svtage Reference “na stránce 42 pro podrobnosti o době spuštění.

Watchdog Timer

Pokud v aplikaci není potřeba časovač Watchdog, měl by být tento modul vypnutý. Pokud je aktivován časovač Watchdog, bude aktivován ve všech režimech spánku, a proto bude vždy spotřebovávat energii. V režimech hlubšího spánku to významně přispěje k celkové spotřebě proudu. Odkazují na „Časovač hlídacího psa“ na straně 42 Podrobnosti o konfiguraci časovače Watchdog.

Kolíky portů

Při přechodu do režimu spánku by měly být všechny piny portu nakonfigurovány tak, aby spotřebovávaly minimální spotřebu. Nejdůležitější je pak zajistit, aby žádné kolíky nepoháněly odporovou zátěž. V režimech spánku, kde jsou zastaveny I/O hodiny (clkI/O) i ADC hodiny (clkADC), budou vstupní vyrovnávací paměti zařízení deaktivovány. Tím je zajištěno, že se nespotřebovává žádná energie

logikou vstupu, když to není potřeba. V některých případech je vstupní logika potřebná pro detekci podmínek probuzení a

poté bude povoleno. Viz část „Povolení digitálního vstupu a režimy spánku“ na stránce 57 podrobnosti o tom, které piny jsou povoleny. Pokud je povolena vstupní vyrovnávací paměť a vstupní signál je ponechán plovoucí nebo má úroveň analogového signálu blízkou VCC/2, bude vstupní vyrovnávací paměť spotřebovávat nadměrné množství energie.

U analogových vstupních pinů by měla být vyrovnávací paměť digitálního vstupu vždy vypnuta. Úroveň analogového signálu blízká VCC/2 na vstupním kolíku může způsobit značný proud i v aktivním režimu. Vyrovnávací paměti digitálního vstupu lze deaktivovat zápisem do registru DIDR0 (Digital Input Disable Register). Odkazují na „DIDR0 - Digital Input Disable Register 0“ na stránce 121 pro podrobnosti.

Popis registrace

MCUCR - MCU Control Register

Řídicí registr MCU obsahuje řídicí bity pro správu napájení.

Bit 7 6 5 4 3 2 1 0
0x35 BODS PUD SE SM1 SM0 TĚLO ISC01 ISC00 MCUCR
Čtení/zápis R R/W R/W R/W R/W R R/W R/W
Počáteční hodnota 0 0 0 0 0 0 0 0

Bit 7 - BODS: BOD Sleep

Funkce deaktivace BOD je k dispozici pouze na některých zařízeních. Vidět „Omezení“ na stránce 36.

Chcete-li deaktivovat BOD během spánku (viz Tabulka 7-1 na straně 34) bit BODS musí být zapsán do logického. To je řízeno časovanou sekvencí a aktivačním bitem, BODSE v MCUCR. Nejprve musí být BODS i BODSE nastaveny na jednu. Zadruhé, během čtyř hodinových cyklů musí být BODS nastaven na jeden a BODSE musí být nastaven na nulu. Bit BODS je aktivní tři hodiny po jeho nastavení. Je-li BODS aktivní, musí být provedena instrukce spánku, aby se BOD vypnul pro aktuální režim spánku. Bit BODS se automaticky vymaže po třech cyklech hodin.

V zařízeních, kde nebyl implementován Sleeping BOD, je tento bit nepoužíván a bude vždy číst nulu.

Bit 5 - SE: Sleep Enable

Bit SE musí být zapsán do logické jedničky, aby MCU přešel do režimu spánku při provedení instrukce SLEEP. Aby se zabránilo přechodu MCU do režimu spánku, pokud to není účelem programátoru, doporučuje se zapsat bit Sleep Enable (SE) na jedničku těsně před provedením instrukce SLEEP a vymazat jej ihned po probuzení.

Bity 4: 3 - SM [1: 0]: Režim spánku Vyberte bity 1 a 0

Tyto bity vybírají mezi třemi dostupnými režimy spánku, jak je uvedeno v Tabulka 7-2.

Tabulka 7-2. Vyberte režim spánku

SM1 SM0 Režim spánku
0 0 Líný
0 1 Redukce šumu ADC
1 0 Vypnout
1 1 Rezervováno

Bit 2 - BODSE: BOD Sleep Enable

Funkce deaktivace BOD je k dispozici pouze na některých zařízeních. Vidět „Omezení“ na stránce 36.

Bit BODSE umožňuje nastavení kontrolního bitu BODS, jak je vysvětleno v popisu bitu BODS. Deaktivace BOD je řízena časovanou sekvencí.

Tento bit se nepoužívá v zařízeních, kde nebylo implementováno zakázání softwaru BOD, a v těchto zařízeních bude čten jako nula.

PRR - registr snížení výkonu

Registr snížení výkonu poskytuje metodu ke snížení spotřeby energie povolením deaktivace signálů periferních hodin.

Bit 7 6 5 4 3 2 1 0
0x20 PRIM1 PRIM0 PRUSI PRADC PRR
Čtení/zápis R R R R R/W R/W R/W R/W
Počáteční hodnota 0 0 0 0 0 0 0 0

Bits 7: 4 - Res: Rezervované bity

Tyto bity jsou rezervované bity v ATtiny25 / 45/85 a budou se vždy číst jako nula.

Bit 3 - PRTIM1: Časovač / čítač snížení výkonu1

Zápis logického na tento bit vypne modul Timer / Counter1. Když je povolen časovač / čítač1, bude provoz pokračovat jako před vypnutím.

Bit 2 - PRTIM0: Časovač / čítač snížení výkonu0

Zápis logického na tento bit vypne modul Timer / Counter0. Když je povolen časovač / čítač0, bude provoz pokračovat jako před vypnutím.

Bit 1 - PRUSI: USI pro snížení výkonu

Zápis logické jednotky na tento bit vypne USI zastavením hodin modulu. Při opětovném probuzení USI by měl být USI znovu inicializován, aby byla zajištěna správná funkce.

Bit 0 - PRADC: ADC s redukcí výkonu

Zápis logického do tohoto bitu vypne ADC. Před vypnutím musí být ADC deaktivován. Všimněte si, že hodiny ADC používají také některé části analogového komparátoru, což znamená, že analogový komparátor nelze použít, když je tento bit vysoký.

Ovládání a reset systému

Resetování AVR

Během resetu jsou všechny I / O registry nastaveny na své počáteční hodnoty a program zahájí provádění z resetovacího procesoru. Instrukce umístěná na resetovacím vektoru musí být instrukcí RJMP - relativní skok - k manipulační rutině resetování. Pokud program nikdy neaktivuje zdroj přerušení, vektory přerušení se nepoužívají a na těchto místech lze umístit běžný programový kód. Schéma zapojení v Obrázek 8-1 ukazuje logiku resetu. Elektrické parametry resetovacích obvodů jsou uvedeny v „Vlastnosti systému a resetování“ na stránce 165.

Obrázek 8-1 Resetovat logiku Logika resetování

I / O porty AVR se okamžitě resetují do původního stavu, když je aktivní zdroj resetování. To nevyžaduje spuštění žádného zdroje hodin.

Poté, co všechny zdroje resetování přestanou být aktivní, je vyvoláno počítadlo zpoždění, které natáhne interní reset. To umožňuje, aby energie dosáhla stabilní úrovně před spuštěním normálního provozu. Časový limit čítače zpoždění je definován uživatelem pomocí pojistek SUT a CKSEL. Různé výběry pro dobu zpoždění jsou uvedeny v "Hodiny Zdroje “na straně 25.

Obnovit zdroje

ATtiny25 / 45/85 má čtyři zdroje resetování:

Reset při zapnutí. MCU se resetuje, když je napájení objtage je pod prahovou hodnotou Power-on Reset (VPOT).

Externí reset. MCU se resetuje, když je na kolíku RESET přítomna nízká úroveň po dobu delší, než je minimální délka pulzu.

Hlídací pes Reset. MCU se resetuje, když vyprší doba časovače Watchdog a je Watchdog povolen.

Reset zhnědnutí. MCU se resetuje, když napájecí napětítage VCC je pod prahovou hodnotou pro resetování brown-out (VBOT) a detektor brown-out je povolen.

Reset při zapnutí

Impuls resetování při zapnutí (POR) je generován detekčním obvodem na čipu. Úroveň detekce je definována v "Sys- a resetování charakteristik “na straně 165. POR se aktivuje vždy, když je VCC pod úrovní detekce. Obvod POR lze použít ke spuštění Start-up Reset, stejně jako k detekci výpadku napájecího objtage.

Obvod POR (Power-on Reset) zajišťuje, že se zařízení resetuje po zapnutí. Dosažení prahové hodnoty resetování při zapnutítage vyvolá čítač zpoždění, který určuje, jak dlouho bude zařízení udržováno v RESETU po nárůstu VCC. Signál RESET se znovu aktivuje bez zpoždění, když VCC klesne pod úroveň detekce.

Obrázek 8-2. Spuštění MCU, RESET Svázáno s VCC

VNITŘNÍ RESET

Obrázek 8-3. Start-up MCU, RESET Extended Extended External

Externí reset

Externí reset je generován nízkou úrovní na kolíku RESET, pokud je povolen. Resetujte impulsy delší než je minimální šířka impulzu (viz „Vlastnosti systému a resetování“ na stránce 165) vygeneruje reset, i když hodiny neběží. Kratší pulsy negarantují vygenerování resetu. Když aplikovaný signál dosáhne nulovacího prahu resetovánítage – VRST – na kladné hraně čítač zpoždění spustí MCU po vypršení Time-out periody.

Obrázek 8-4. Externí reset během provozu Obr

Detekce zhasnutí

ATtiny25/45/85 má obvod BOD (On-chip Brown-out Detection) pro monitorování úrovně VCC během provozu jejím porovnáním s pevnou úrovní spouštění. Spouštěcí úroveň pro BOD lze vybrat pomocí pojistek BODLEVEL. Spouštěcí úroveň má hysterezi pro zajištění detekce Brown-out bez špiček. Hystereze na úrovni detekce by měla být interpretována jako VBOT+ = VBOT + VHYST/2 a VBOT- = VBOT – VHYST/2.

Když je povolena BOD a VCC se sníží na hodnotu pod spouštěcí úroveň (VBOT-in Obrázek 8-5), okamžitě se aktivuje Brown-out Reset. Když se VCC zvýší nad spouštěcí úroveň (VBOT+ in Obrázek 8-5), čítač zpoždění spustí MCU po vypršení časového limitu tTOUT.

Obvod BSK detekuje pokles VCC pouze v případě, že objemtage zůstane pod spouštěcí úrovní déle než tBOD „Vlastnosti systému a resetování“ na stránce 165. Obr

Hlídací pes Reset

Po vypršení časového limitu Watchdog vygeneruje krátký resetovací impuls v délce trvání jednoho cyklu CK. Na sestupné hraně tohoto impulsu začne časovač zpoždění počítat dobu prodlevy tTOUT. Odkazují na „Časovač hlídacího psa“ na straně 42 pro podrobnosti o provozu časovače Watchdog.

svtage Reference Povolte signály a dobu spuštění

VoltagReferenční čas má čas spuštění, který může ovlivnit způsob, jakým by měl být používán. Čas spuštění je uveden v „Vlastnosti systému a resetování“ na stránce 165. Z důvodu úspory energie není reference vždy zapnutá. Odkaz je aktivní v následujících situacích:

Když je BOD povolen (programováním pojistkových bitů BODLEVEL [2: 0]).

Když je reference bandgap připojena k analogovému komparátoru (nastavením bitu ACBG v ACSR).

Když je povolen ADC.

Když tedy není povolen BOD, po nastavení bitu ACBG nebo povolení ADC musí uživatel vždy umožnit spuštění reference před použitím výstupu z analogového komparátoru nebo ADC. Aby se snížila spotřeba energie v režimu Power-down, může se uživatel vyhnout výše uvedeným třem podmínkám, aby se ujistil, že je reference před vstupem do režimu Power down vypnuta.

Watchdog Timer

Časovač Watchdog je taktován z oscilátoru na čipu, který běží na 128 kHz. Ovládáním předvolby časovače Watchdog Timer lze upravit interval resetování Watchdog, jak je znázorněno na Tabulka 8-3 na straně 46. Pokyny WDR - Watchdog Reset - resetují časovač Watchdog. Časovač Watchdog se také resetuje, když je deaktivován a dojde k resetování čipu. Pro určení doby resetování lze vybrat deset různých period taktu. Pokud doba resetování vyprší bez dalšího resetu Watchdogu, ATtiny25 / 45/85 se resetuje a provede z resetovacího vektoru. Podrobnosti o časování resetování Watchdog najdete na Tabulka 8-3 na straně 46.

Časovač Watchdog lze také nakonfigurovat tak, aby místo resetu generoval přerušení. To může být velmi užitečné při použití Watchdogu k probuzení z vypnutí.

Aby se zabránilo neúmyslnému vypnutí Watchdogu nebo neúmyslné změně časového limitu, jsou pojistkou WDTON vybrány dvě různé úrovně bezpečnosti, jak je znázorněno na Tabulka 8-1 Viz „Časované sekvence pro změnu kon- konfigurace časovače Watchdog ”na stránce 43 pro podrobnosti.

Tabulka 8-1. Konfigurace WDT jako funkce nastavení pojistek WDTON

WDTON Úroveň bezpečnosti Počáteční stav WDT Jak zakázat WDT Jak změnit časový limit
Neprogramováno 1 Zakázáno Časovaná sekvence Žádná omezení
Naprogramováno 2 Povoleno Vždy povoleno Časovaná sekvence

Obrázek 8-7. Watchdog Timer Hlídací pes

Časované sekvence pro změnu konfigurace časovače Watchdog

Pořadí pro změnu konfigurace se mezi dvěma úrovněmi bezpečnosti mírně liší. Pro každou úroveň jsou popsány samostatné postupy.

Úroveň bezpečnosti 1: V tomto režimu je časovač Watchdog zpočátku zakázán, ale lze jej povolit zápisem bitu WDE na jedničku bez jakéhokoli omezení. Při deaktivaci aktivovaného časovače Watchdog je potřeba časovaná sekvence. Chcete-li deaktivovat aktivovaný časovač Watchdog, je třeba dodržet následující postup:

Ve stejné operaci napište logický na WDCE a WDE. Logický musí být zapsán do WDE bez ohledu na předchozí hodnotu bitu WDE.

Během následujících čtyř hodinových cyklů ve stejné operaci zapište bity WDE a WDP podle potřeby, ale s vymazaným bitem WDCE.

Úroveň bezpečnosti 2: V tomto režimu je časovač Watchdog vždy povolen a bit WDE se vždy čte jako jeden. Při změně časového limitu Watchdog je potřeba časovaná sekvence. Chcete-li změnit časový limit Watchdog, musíte dodržet následující postup:

Ve stejné operaci napište logický do WDCE a WDE. I když je WDE vždy nastaveno, WDE musí být zapsáno do jednoho, aby se spustila časovaná sekvence.

Během příštích čtyř hodinových cyklů ve stejné operaci zapište bity WDP podle potřeby, ale s vymazaným bitem WDCE. Hodnota zapsaná na bit WDE je irelevantní.

Kód Example

Následující kód example ukazuje jednu sestavu a jednu C funkci pro vypnutí WDT. Bývalýample předpokládá, že přerušení jsou řízena (např. globálním zakázáním přerušení), takže během provádění těchto funkcí nedojde k žádnému přerušení.

Montážní kód Přample(1)
WDT_off:

wdr

; Vymazat WDRF v MCUSR

ldi r16, (0<

z MCUSR, r16

; Napište logický na WDCE a WDE

; Ponechte staré nastavení předvolby, abyste zabránili neúmyslnému resetování Watchdog

v r16, WDTCR

ori r16, (1<

z WDTCR, r16

; Vypněte WDT

ldi r16, (0<

z WDTCR, r16

ret

C kód Přample(1)
void WDT_off(void)

{

_WDR ();

/* Vymazat WDRF v MCUSR */ MCUSR = 0x00

/* Zapíše logickou jedničku do WDCE a WDE */ WDTCR |= (1<

/ * Vypnout WDT * / WDTCR = 0x00;

}

Poznámka: 1. Viz „Kód Přamples “na stránce 6.

Popis registrace

MCUSR - Registr stavu MCU

Registr stavu MCU poskytuje informace o tom, který zdroj resetování způsobil reset MCU.

Bit 7 6 5 4 3 2 1 0
0x34 WDRF BORF EXTRF PORF MCUSR
Čtení/zápis R R R R R/W R/W R/W R/W

Počáteční hodnota 0 0 0 0 Viz popis bitů

Bits 7: 4 - Res: Rezervované bity

Tyto bity jsou rezervované bity v ATtiny25 / 45/85 a budou se vždy číst jako nula.

Bit 3 - WDRF: Příznak resetování hlídacího psa

Tento bit je nastaven, pokud dojde k resetování Watchdog. Bit se resetuje resetováním při zapnutí nebo zapsáním logické nuly do příznaku.

Bit 2 - BORF: Brown-out Reset Flag

Tento bit je nastaven, pokud dojde k Brown-out resetu. Bit se resetuje resetováním při zapnutí nebo zapsáním logické nuly do příznaku.

Bit 1 - EXTRF: Příznak externího resetu

Tento bit je nastaven, pokud dojde k externímu resetu. Bit se resetuje resetem při zapnutí nebo zapsáním logické nuly do příznaku.

Bit 0 - PORF: Příznak resetování po zapnutí

Tento bit je nastaven, pokud dojde k resetování při zapnutí. Bit se resetuje pouze zapsáním logické nuly do příznaku.

Chcete-li použít příznaky resetování k identifikaci podmínky resetování, měl by uživatel číst a poté resetovat MCUSR co nejdříve v programu. Pokud je registr vymazán dříve, než dojde k dalšímu resetu, lze zdroj resetu vyhledat prozkoumáním příznaků resetu.

WDTCR - Watchdog Timer Control Register

Bit 7 6 5 4 3 2 1 0
0x21 WDIF WDIE WDP3 WDCE WDE WDP2 WDP1 WDP0 WDTCR
Čtení/zápis R/W R/W R/W R/W R/W R/W R/W R/W
Počáteční hodnota 0 0 0 0 X 0 0 0

Bit 7 - WDIF: Příznak přerušení časového limitu hlídacího psa

Tento bit je nastaven, když dojde k vypršení časového limitu v časovači Watchdog a časovač Watchdog je nakonfigurován pro přerušení. WDIF je vymazán hardwarem při provádění odpovídajícího vektoru zpracování přerušení. Alternativně se WDIF vymaže zapsáním logického do vlajky. Když jsou nastaveny I-bit v SREG a WDIE, provede se přerušení Watchdog Time-out Interrupt.

Bit 6 - WDIE: Watchdog Timeout Interrupt Enable

Když je tento bit zapsán do jedné, WDE je vymazáno a je nastaven I-bit ve stavovém registru, je povoleno přerušení časového limitu Watchdog. V tomto režimu se místo přerušení provede odpovídající přerušení, pokud dojde k vypršení časového limitu v časovači Watchdog.

Pokud je nastaveno WDE, WDIE se automaticky vymaže hardwarem, když dojde k vypršení časového limitu. To je užitečné pro zachování zabezpečení Watchdog Reset při používání přerušení. Poté, co je bit WDIE vymazán, vygeneruje příští časový limit reset. Abyste se vyhnuli Watchdog Reset, musí být WDIE nastaveno po každém přerušení.

Tabulka 8-2. Konfigurace časovače Watchdog

WDE WDIE Stav časovače hlídacího psa Akce na oddechový čas
0 0 Zastaveno Žádný
0 1 Běh Přerušit
1 0 Běh Resetovat
1 1 Běh Přerušit

Bit 4 - WDCE: Watchdog Change Enable

Tento bit musí být nastaven, když je bit WDE zapsán na logickou nulu. Jinak nebude Watchdog deaktivován. Jakmile je zapsán do jednoho, hardware tento bit vymaže po čtyřech hodinových cyklech. Postup deaktivace Watchdog najdete v popisu bitu WDE. Tento bit musí být také nastaven při změně bitů předvolby. Vidět "Časované sekvence." pro změnu konfigurace časovače Watchdog ”na straně 43.

Bit 3 - WDE: Watchdog Enable

Když je WDE zapsán do logiky, je povolen časovač Watchdog a pokud je WDE zapsán do logické nuly, funkce časovače Watchdog je zakázána. WDE lze vymazat, pouze pokud má bit WDCE logickou úroveň jedna. Chcete-li deaktivovat povolený časovač Watchdog, je třeba dodržet následující postup:

Ve stejné operaci napište logický na WDCE a WDE. Logický musí být zapsán do WDE, i když je nastaven na jeden před zahájením operace deaktivace.

Během následujících čtyř hodinových cyklů napište logiku 0 na WDE. Tím se deaktivuje hlídací pes.

Na úrovni zabezpečení 2 není možné deaktivovat časovač Watchdog, a to ani při výše popsaném algoritmu. Vidět „Časované sekvence pro změnu konfigurace časovače Watchdog“ na stránce 43.

V úrovni zabezpečení 1 je WDE v MCUSR přepsáno WDRF. Vidět „MCUSR - Registr stavu MCU“ na straně 44 pro popis WDRF. To znamená, že WDE je nastaveno vždy, když je nastaveno WDRF. Chcete-li vymazat WDE, musí být před deaktivací Watchdogu výše popsaným postupem vymazány WDRF. Tato funkce zajišťuje několik resetů během podmínek způsobujících selhání a bezpečné spuštění po selhání.

Poznámka: Pokud se v aplikaci nebude používat hlídací časovač, je důležité při inicializaci zařízení projít procedurou deaktivace hlídacího obvodu. Pokud je Watchdog náhodně aktivován, napřampPokud dojde k uvolnění nebo zhasnutí ukazatele, zařízení bude resetováno, což následně povede k novému resetování hlídacího psa. Aby se tomu zabránilo, měl by aplikační software v inicializační rutině vždy vymazat příznak WDRF a řídicí bit WDE.

Bity 5, 2: 0 - WDP [3: 0]: Watchdog Timer Prescaler 3, 2, 1 a 0

Bity WDP [3: 0] určují přednastavení časovače Watchdog Timer, když je povolen časovač Watchdog. Různé hodnoty přednastavení a jejich odpovídající časové limity jsou zobrazeny v Tabulka 8-3.

Tabulka 8-3. Watchdog Timer Prescale Select

WDP3 WDP2 WDP1 WDP0 Počet cyklů oscilátoru WDT Typický časový limit při VCC = 5.0 V
0 0 0 0 2K (2048) cyklů 16 ms
0 0 0 1 4K (4096) cyklů 32 ms
0 0 1 0 8K (8192) cyklů 64 ms
0 0 1 1 16K (16384) cyklů 0.125 s
0 1 0 0 32K (32764) cyklů 0.25 s
0 1 0 1 64K (65536) cyklů 0.5 s
0 1 1 0 128K (131072) cyklů 1.0 s
0 1 1 1 256K (262144) cyklů 2.0 s
1 0 0 0 512K (524288) cyklů 4.0 s
1 0 0 1 1024K (1048576) cyklů 8.0 s

Tabulka 8-3. Watchdog Timer Prescale Select (Pokračování)

WDP3 WDP2 WDP1 WDP0 Počet cyklů oscilátoru WDT Typický časový limit při VCC = 5.0 V
1 0 1 0 Rezervováno(1)
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1

Poznámka: 1. Pokud je vybráno, použije se jedno z platných nastavení pod 0b1010.

Přerušení

Tato část popisuje specifika zpracování přerušení prováděného v ATtiny25 / 45/85. Obecné vysvětlení zpracování přerušení AVR viz „Reset a přerušení zpracování“ na straně 12.

Přerušit vektory v ATtiny25 / 45/85

Vektory přerušení ATtiny25 / 45/85 jsou popsány v Tabulka 9-1níže.

Tabulka 9-1. Resetovat a přerušit vektory

Vektor č. Programová adresa Zdroj Definice přerušení
1 0x0000 RESETOVAT Externí kolík, reset při zapnutí, reset Brown-out, reset Watchdog
2 0x0001 INT0 Žádost o externí přerušení 0
3 0x0002 PCINT0 PIN Změna požadavku na přerušení 0
4 0x0003 TIMER1_COMPA Časovač / Počítadlo1 Porovnat zápas A
5 0x0004 TIMER1_OVF Přetečení časovače / čítače1
6 0x0005 TIMER0_OVF Přetečení časovače / čítače0
7 0x0006 EE_RDY Připraveno na EEPROM
8 0x0007 ANA_COMP Analogový komparátor
9 0x0008 ADC Převod ADC je dokončen
10 0x0009 TIMER1_COMPB Časovač / Počítadlo1 Porovnat zápas B
11 0x000A TIMER0_COMPA Časovač / Počítadlo0 Porovnat zápas A
12 0x000B TIMER0_COMPB Časovač / Počítadlo0 Porovnat zápas B
13 0x000C WDT Časový limit hlídacího psa
14 0x000D USI_START POUŽÍVEJTE START
15 0x000E USI_OVF Přetečení USI

Pokud program nikdy neaktivuje zdroj přerušení, vektory přerušení se nepoužívají a na těchto místech lze umístit běžný programový kód.

Typické a obecné nastavení pro adresy vektorů přerušení v ATtiny25/45/85 je ukázáno v programu example níže.

Montážní kód Přample
.org 0x0000 ; Nastavit adresu dalšího prohlášení
rjmp RESET ; Adresa 0x0000
rjmp INT0_ISR ; Adresa 0x0001
rjmp PCINT0_ISR ; Adresa 0x0002
rjmp TIM1_COMPA_ISR ; Adresa 0x0003
rjmp TIM1_OVF_ISR ; Adresa 0x0004
rjmp TIM0_OVF_ISR ; Adresa 0x0005
rjmp EE_RDY_ISR ; Adresa 0x0006
rjmp ANA_COMP_ISR ; Adresa 0x0007
rjmp ADC_ISR ; Adresa 0x0008
rjmp TIM1_COMPB_ISR ; Adresa 0x0009
rjmp TIM0_COMPA_ISR ; Adresa 0x000A
rjmp TIM0_COMPB_ISR ; Adresa 0x000B
rjmp WDT_ISR ; Adresa 0x000C
rjmp USI_START_ISR ; Adresa 0x000D
rjmp USI_OVF_ISR ; Adresa 0x000E
RESETOVÁNÍ: ; Spuštění hlavního programu
; Adresa 0x000F

Poznámka: Viz „Kód Přamples “na stránce 6.

Externí přerušení

Externí přerušení jsou spouštěna pinem INT0 nebo kterýmkoli z pinů PCINT [5: 0]. Pokud je povoleno, přerušení se spustí, i když jsou piny INT0 nebo PCINT [5: 0] nakonfigurovány jako výstupy. Tato funkce poskytuje způsob generování softwarového přerušení. Přerušení výměny pinů PCI se spustí, pokud se zapne jakýkoli povolený pin PCINT [5: 0]. Registr PCMSK řídí, které piny přispívají k přerušení změn pinů. Přerušení výměny kolíků na PCINT [5: 0] jsou detekována asynchronně. To znamená, že tato přerušení lze použít k probuzení součásti také z jiných režimů spánku než nečinnosti.

Přerušení INT0 lze spustit klesající nebo vzestupnou hranou nebo nízkou úrovní. Toto je nastaveno, jak je uvedeno ve specifikaci pro MCU Control Register - MCUCR. Když je povoleno přerušení INT0 a je nakonfigurováno jako spouštěné na úrovni, přerušení se spustí, dokud je pin udržován na nízké úrovni. Všimněte si, že rozpoznání přerušení sestupné nebo vzestupné hrany na INT0 vyžaduje přítomnost I / O hodin, popsaných v „Hodinové systémy a jejich distribuce“ zapnuto strana 23.

Přerušení na nízké úrovni

Přerušení nízké úrovně na INT0 je detekováno asynchronně. To znamená, že toto přerušení lze použít k probuzení součásti také z jiných režimů spánku než nečinnosti. Hodiny I / O jsou zastaveny ve všech režimech spánku kromě základního režimu.

Všimněte si, že pokud se pro probuzení z vypnutí použije přerušení spouštěné úrovní, musí být požadovaná úroveň držena dostatečně dlouho, aby MCU dokončilo probuzení a spustilo přerušení úrovně. Pokud hladina zmizí před koncem Start-up Time, MCU se stále probudí, ale nebude generováno žádné přerušení. Doba spouštění je definována pojistkami SUT a CKSEL, jak je popsáno v „Systémové hodiny a možnosti hodin“ na straně 23.

Pokud je nízká úroveň na kolíku přerušení odstraněna před probuzením zařízení, nebude provádění programu přesměrováno na rutinu servisní služby přerušení, ale bude pokračovat od instrukce následující po příkazu SLEEP.

Pin Změnit načasování přerušení

BývalýampLe načasování přerušení změny pinů je zobrazeno v Obrázek 9-1.

Popis registrace

MCUCR - MCU Control Register

Registr A externího řízení přerušení A obsahuje řídicí bity pro řízení snímání přerušení.

Bit 7 6 5 4 3 2 1 0
0x35 BODS PUD SE SM1 SM0 TĚLO ISC01 ISC00 MCUCR
Čtení/zápis R R/W R/W R/W R/W R R/W R/W
Počáteční hodnota 0 0 0 0 0 0 0 0

Bity 1: 0 - ISC0 [1: 0]: Řízení přerušení snímání 0 Bit 1 a Bit 0

Externí přerušení 0 je aktivováno externím pinem INT0, pokud je nastaven SREG I-příznak a odpovídající maska ​​přerušení. Úroveň a hrany na externím kolíku INT0, které aktivují přerušení, jsou definovány v Tabulka 9-2. Hodnota na pinu INT0 je samppřed detekcí hran. Pokud je vybráno přerušení na hraně nebo přepnutí, generují přerušení impulsy, které trvají déle než jedno časové období. Kratší impulsy nezaručují generování přerušení. Pokud je vybráno přerušení nízké úrovně, musí být nízká úroveň podržena až do dokončení aktuálně provádějící instrukce, aby se vygenerovalo přerušení.

Tabulka 9-2. Přerušit 0 Sense Control

ISC01 ISC00 Popis
0 0 Nízká úroveň INT0 generuje požadavek na přerušení.
0 1 Jakákoli logická změna na INT0 generuje požadavek na přerušení.
1 0 Sestupná hrana INT0 generuje požadavek na přerušení.
1 1 Náběžná hrana INT0 generuje požadavek na přerušení.

GIMSK - Obecný registr přerušení masky

Bit 7 6 5 4 3 2 1 0
0x3B INT0 PCIE GIMSK
Čtení/zápis R R/W R/W R R R R R
Počáteční hodnota 0 0 0 0 0 0 0 0

Bits 7, 4: 0 - Res: Rezervované bity

Tyto bity jsou rezervované bity v ATtiny25 / 45/85 a budou se vždy číst jako nula.

Bit 6 - INT0: Externí požadavek na přerušení 0 povolen

Když je nastaven bit INT0 (jeden) a je nastaven I-bit ve stavovém registru (SREG) (jeden), je povoleno přerušení externího kolíku. Bity řízení přerušení 0 bitů 1/0 (ISC01 a ISC00) v řídicím registru MCU (MCUCR) definují, zda je externí přerušení aktivováno na stoupající a / nebo klesající hraně pinu INT0 nebo na snímané úrovni. Aktivita na pinu způsobí požadavek na přerušení, i když je INT0 nakonfigurován jako výstup. Odpovídající přerušení požadavku na externí přerušení 0 je provedeno z vektoru přerušení INT0.

Bit 5 - PCIE: Pin Change Interrupt Enable

Když je bit PCIE nastaven (jeden) a I-bit ve stavovém registru (SREG) je nastaven (jeden), je povoleno přerušení změny pinů. Jakákoli změna na jakémkoli aktivovaném pinu PCINT [5: 0] způsobí přerušení. Odpovídající přerušení požadavku na změnu PIN Pin je provedeno z vektoru přerušení PCI. Piny PCINT [5: 0] jsou jednotlivě povoleny registrem PCMSK0.

GIFR - Obecný registr příznaků přerušení

Bit 7 6 5 4 3 2 1 0
0x3A INTF0 PCIF DÁREK
Čtení/zápis R R/W R/W R R R R R
Počáteční hodnota 0 0 0 0 0 0 0 0

Bits 7, 4: 0 - Res: Rezervované bity

Tyto bity jsou rezervované bity v ATtiny25 / 45/85 a budou se vždy číst jako nula.

Bit 6 - INTF0: Příznak externího přerušení 0

Když hrana nebo logická změna na kolíku INT0 spustí požadavek na přerušení, INTF0 se nastaví (jedna). Pokud jsou nastaveny I-bit v SREG a bit INT0 v GIMSKu (jeden), MCU přeskočí na příslušný Interrupt Vector. Příznak je vymazán, když je provedena rutina přerušení. Případně lze příznak vymazat zapsáním logického znaku. Tento příznak je vždy vymazán, když je INT0 nakonfigurován jako přerušení úrovně.

Bit 5 - PCIF: Pin Change Interrupt Flag

Když logická změna na kterémkoli pinu PCINT [5: 0] spustí požadavek na přerušení, nastaví se PCIF (jeden). Pokud jsou nastaveny I-bit v SREG a PCIE bit v GIMSKu (jeden), MCU přeskočí na příslušný Interrupt Vector. Příznak je vymazán, když je provedena rutina přerušení. Případně lze příznak vymazat zapsáním logického znaku.

PCMSK - Zaregistrujte masku změny PIN

Bit 7 6 5 4 3 2 1 0
0x15 PCINT5 PCINT4 PCINT3 PCINT2 PCINT1 PCINT0 PCMSK
Čtení/zápis R R R/W R/W R/W R/W R/W R/W
Počáteční hodnota 0 0 0 0 0 0 0 0

Bits 7: 6 - Res: Rezervované bity

Tyto bity jsou rezervované bity v ATtiny25 / 45/85 a budou se vždy číst jako nula.

Bity 5: 0 - PCINT [5: 0]: Pin Change Enable Mask 5: 0

Každý bit PCINT [5: 0] vybírá, zda je na odpovídajícím I / O pinu povoleno přerušení změny pinu. Pokud je nastaven PCINT [5: 0] a je nastaven bit PCIE v GIMSKu, je na příslušném I / O pinu povoleno přerušení změny pinu. Pokud je PCINT [5: 0] vymazán, přerušení výměny kolíku na odpovídajícím I / O kolíku je deaktivováno.

I/O porty

Zavedení

Všechny porty AVR mají skutečnou funkci čtení, úpravy a zápisu, pokud jsou použity jako obecné digitální I/O porty. To znamená, že směr jednoho kolíku portu lze změnit bez neúmyslné změny směru jakéhokoli jiného kolíku pomocí pokynů SBI a CBI. Totéž platí při změně hodnoty měniče (je-li konfigurován jako výstup) nebo při povolení/zakázání výsuvných odporů (je-li konfigurován jako vstup). Každá výstupní vyrovnávací paměť má symetrické charakteristiky pohonu s možností vysokého propadu i zdroje. Pin driver je dostatečně silný, aby přímo ovládal LED displeje. Všechny portové piny mají individuálně volitelné výsuvné odpory s napájecím napětímtage invariantní odpor. Všechny I/O piny mají ochranné diody pro VCC i zem, jak je uvedeno v Obrázek 10-1. Viz „Elektrické vlastnosti“ na stránce 161 pro úplný seznam parametrů.

Obrázek 10-1. Schéma ekvivalentní I/O pinu

Obr

Všechny registry a bitové odkazy v této části jsou zapsány v obecné formě. Malá písmena „x“ představují číslovací písmena portu a malá „n“ představuje bitové číslo. Při použití registru nebo bitu definovaného v programu však musí být použit přesný tvar. Za example, PORTB3 pro bit č. 3 v portu B, zde obecně dokumentováno jako PORTxn. Fyzické I/O registry a umístění bitů jsou uvedeny v „Registrovat popis“ na strana 64.

Pro každý port jsou přidělena tři umístění adres I / O paměti, každé pro datový registr - PORTx, registr datových směrů - DDRx a portové vstupní piny - PINx. Umístění I / O vstupních pinů portů je pouze pro čtení, zatímco datový registr a registr datových směrů jsou pro čtení / zápis. Napsání logického čísla na jeden bit v registru PINx však povede k přepnutí příslušného bitu v datovém registru. Bit Pull-up Disable - PUD v MCUCR navíc po nastavení zakáže funkci pull-up pro všechny piny ve všech portech.

Použití I / O portu jako General Digital I / O je popsáno v „Porty jako General Digital I / O“ na stránce 53. Většina pinů portů je multiplexována s alternativními funkcemi pro periferní funkce zařízení. Jak každá alternativní funkce interferuje s kolíkem portu, je popsáno v „Alternativní funkce portů“ na stránce 57. Úplný popis alternativních funkcí najdete v jednotlivých částech modulu.

Pamatujte, že povolení alternativní funkce některých pinů portu nemá vliv na použití ostatních pinů v portu jako obecného digitálního I / O.

Porty jako General Digital I / O

Porty jsou obousměrné I / O porty s volitelnými interními vytaženími. Obrázek 10-2 zobrazuje funkční popis jednoho pinu I / O-portu, zde obecně nazývaného Pxn.

Obrázek 10-2. Obecné digitální I/O(1)

Obr

Konfigurace kolíku

Každý kolík portu se skládá ze tří bitů registru: DDxn, PORTxn a PINxn. Jak je uvedeno v „Registrovat popis“ na strana 64, k bitům DDxn se přistupuje na I / O adrese DDRx, bitům PORTxn na I / O adrese PORTx a bitům PINxn na I / O adrese PINx.

Bit DDxn v registru DDRx vybírá směr tohoto kolíku. Pokud je DDxn zapsán logický, je Pxn nakonfigurován jako výstupní pin. Pokud je DDxn zapsána logická nula, je Pxn nakonfigurován jako vstupní pin.

Pokud je PORTxn zapsán logicky, když je pin konfigurován jako vstupní pin, aktivuje se pull-up rezistor. Pro vypnutí pull-up rezistoru musí být PORTxn zapsána logická nula nebo pin musí být nakonfigurován jako výstupní pin. Když se aktivují podmínky resetování, kolíky portů jsou trojí, i když nejsou spuštěny žádné hodiny.

Pokud je PORTxn zapsán logicky, když je pin nakonfigurován jako výstupní pin, je pin portu vysoký (jeden). Pokud je PORTxn zapsána logická nula, když je pin nakonfigurován jako výstupní pin, je pin portu nízký (nula).

Přepínání špendlíku

Zápis logického do PINxn přepíná hodnotu PORTxn, nezávisle na hodnotě DDRxn. Všimněte si, že instrukci SBI lze použít k přepnutí jednoho jediného bitu v portu.

Přepínání mezi vstupem a výstupem

Při přepínání mezi třístavovým stavem ({DDxn, PORTxn} = 0b00) a vysokým výstupem ({DDxn, PORTxn} = 0b11), přechodným stavem s povoleným roztažením {DDxn, PORTxn} = 0b01) nebo nízkým výstupem ({DDxn, PORTxn} = 0b10). Normálně je stav aktivace pull-up plně přijatelný, protože prostředí s vysokou impedancí nepostřehne rozdíl mezi silným high driverem a pull-upem. Pokud tomu tak není, lze bit PUD v registru MCUCR nastavit tak, aby deaktivoval všechny pull-upy na všech portech.

Stejný problém vytváří přepínání mezi vstupem se zdvihem a nízkým výstupem. Uživatel musí použít mezistupeň ({DDxn, PORTxn} = 0b00) nebo stav výstupu high ({DDxn, PORTxn} = 0b10).

Tabulka 10-1 shrnuje řídicí signály pro hodnotu pinu.

Tabulka 10-1. Konfigurace pinů portu

DDxn PORTxn PUD

(v MCUCR)

I/O Vytahování Komentář
0 0 X Vstup Žádný Tri-stát (Hi-Z)
0 1 0 Vstup Ano Pxn bude zdrojem proudu, pokud ext. stáhl.
0 1 1 Vstup Žádný Tri-stát (Hi-Z)
1 0 X Výstup Žádný Nízký výstup (dřez)
1 1 X Výstup Žádný Vysoký výstup (zdroj)

Čtení hodnoty PIN

Nezávisle na nastavení bitu Data Direction DDxn lze pin portu číst prostřednictvím bitu PINxn Register. Jak je uvedeno v Obrázek 10-2bit PINxn Register a předchozí západka tvoří synchronizátor. To je nutné, aby se zabránilo metastabilitě, pokud fyzický pin změní hodnotu blízko okraje interních hodin, ale také to zavádí zpoždění. Obrázek 10-3 ukazuje časový diagram synchronizace při čtení externě aplikované hodnoty pinu. Maximální a minimální zpoždění šíření jsou označeny tpd,max a tpd,min.

Zvažte období hodin začínající krátce po první sestupné hraně systémových hodin. Západka je zavřená, když jsou hodiny nízké, a je průhledná, když jsou hodiny vysoké, jak je naznačeno stínovanou oblastí signálu „SYNC LATCH“. Hodnota signálu se zablokuje, když hodiny systému klesnou. Je taktován do registru PINxn na následující pozitivní hodinové hraně. Jak je naznačeno dvěma šipkami tpd, max a tpd, min, přechod jednoho signálu na kolíku bude zpožděn mezi ½ a 1 ½ periody systému v závislosti na době tvrzení.

Při zpětném načítání softwarově přiřazené hodnoty pinu musí být vložena instrukce nop, jak je uvedeno v Obrázek 10-4. Instrukce out nastaví signál „SYNC LATCH“ na kladnou hranu hodin. V tomto případě je zpoždění tpd synchronizátorem jedna perioda systémových hodin.

Následující kód example ukazuje, jak nastavit piny 0 a 1 portu B na vysoké, 2 a 3 na nízké úrovni a definovat piny portu od 4 do 5 jako vstup s pull-up přiřazeným k portu 4. Výsledné hodnoty pinů se přečtou znovu, ale jak bylo diskutováno dříve, je zahrnuta instrukce nop, aby bylo možné zpětně přečíst hodnotu nedávno přiřazenou některým pinům.

Montážní kód Přample(1)

; Definujte pull-ups a nastavte výstupy vysoko

; Definujte směry pro piny portu

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

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

ven PORTB,r16

ven DDRB,r17

; Vložte nop pro synchronizaci

ne

; Přečtěte si piny portu

v r16, PINB

Poznámka: Pro program sestavení jsou použity dva dočasné registry pro minimalizaci doby od pull-up nastavení na pinech 0, 1 a 4, dokud nejsou směrové bity správně nastaveny, definují bity 2 a 3 jako nízké a předefinují bity 0 a 1 jako silné vysoké ovladače.

C kód Přample
unsigned char i;

/* Definujte pull-ups a nastavte výstupy vysoko */

/* Definování směrů pro piny portu */ PORTB = (1<

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

/* Vložit nop pro synchronizaci*/

_NOP ();

/* Čtení pinů portu */ i = PINB;

Režimy digitálního vstupu a režimy spánku

Jak je uvedeno v Obrázek 10-2, digitální vstupní signál může být třamped k zemi na vstupu schmittova spouště. Signál označený na obrázku SLEEP je nastaven ovladačem spánku MCU v režimu vypnutí, aby se zabránilo vysoké spotřebě energie, pokud některé vstupní signály zůstanou plovoucí nebo mají úroveň analogového signálu blízkou VCC/2.

SLEEP je přepsán pro piny portů povolené jako piny externího přerušení. Pokud není povolen požadavek na externí přerušení, je SLEEP aktivní i pro tyto piny. SLEEP je také přepsán různými jinými alternativními funkcemi, jak je popsáno v „Alternativní funkce portů“ na stránce 57.

Pokud je na asynchronním externím kolíku přerušení konfigurovaném jako „Přerušení na vzestupné hraně, sestupné hraně nebo jakákoli logická změna na kolíku“ přítomna vysoká logická úroveň („jedna“), zatímco externí přerušení není povoleno, zobrazí se odpovídající příznak externího přerušení. nastavit při obnovení z výše uvedeného režimu spánku, protože třamppřepnutí do tohoto režimu spánku vyvolá požadovanou logickou změnu.

Nepřipojené piny

Pokud některé piny nejsou použity, doporučuje se zajistit, aby tyto piny měly definovanou úroveň. I když je většina digitálních vstupů deaktivována v režimech hlubokého spánku, jak je popsáno výše, je třeba se vyhnout plovoucím vstupům, aby se snížila spotřeba proudu ve všech ostatních režimech, kde jsou digitální vstupy povoleny (reset, aktivní režim a nečinný režim).

Nejjednodušší způsob, jak zajistit definovanou úroveň nevyužitého kolíku, je povolit vnitřní pull-up. V tomto případě bude pull-up během resetování deaktivován. Pokud je důležitá nízká spotřeba energie během resetování, doporučuje se použít externí pull-up nebo pulldown. Připojování nepoužívaných kolíků přímo k VCC nebo GND se nedoporučuje, protože to může způsobit nadměrné proudy, pokud je kolík náhodně nakonfigurován jako výstup.

Alternativní funkce portů

Většina pinů portů má kromě obecných digitálních I / O také alternativní funkce. Obrázek 10-5 ukazuje, jak řídicí signály pinů portů zjednodušují Obrázek 10-2 lze přepsat alternativními funkcemi. Potlačující signály nemusí být přítomny ve všech kolících portů, ale obrázek slouží jako obecný popis použitelný pro všechny kolíky portů v rodině mikrokontrolérů AVR.

Tabulka 10-2. Obecný popis nadřazených signálů pro alternativní funkce

Název signálu Celé jméno Popis
PUOE Pull-up Override Povolit Pokud je tento signál nastaven, aktivace vytažení je řízena signálem PUOV. Pokud je tento signál vymazán, vytažení je povoleno, když

{DDxn, PORTxn, PUD} = 0b010.

PUOV Hodnota přepsání vytažení Je-li nastaven PUOE, aktivace / deaktivace vytažení při nastavení / vymazání PUOV, bez ohledu na nastavení bitů registru DDxn, PORTxn a PUD.
DDOE Přepsat směr dat povolit Pokud je tento signál nastaven, je výstupní ovladač povolen pomocí signálu DDOV. Pokud je tento signál vymazán, je výstupní ovladač povolen bitem registru DDxn.
DDOV Hodnota přepsání směru dat Pokud je nastaven DDOE, je výstupní ovladač povolen / zakázán, když je DDOV nastaven / vymazán, bez ohledu na nastavení bitu DDxn Register.
PVOE Přepsat hodnotu portu Povolit Pokud je tento signál nastaven a výstupní ovladač je povolen, je hodnota portu řízena signálem PVOV. Pokud je PVOE vymazáno a je povolen výstupní ovladač, hodnota portu je řízena bitem registru PORTxn.
PVOV Hodnota přepsání hodnoty portu Pokud je nastaven PVOE, hodnota portu je nastavena na PVOV, bez ohledu na nastavení bitu PORTxn Register.
PTOE Přepnout přepínání portů Povolit Pokud je nastaven PTOE, je bit PORTxn Register invertován.
DIEOE Povolit digitální vstup Přepsat Povolit Pokud je tento bit nastaven, je povolení digitálního vstupu řízeno signálem DIEOV. Je-li tento signál vymazán, je povolení digitálního vstupu určeno stavem MCU (normální režim, režim spánku).
DIEOV Hodnota digitálního vstupu umožňuje přepsat hodnotu Pokud je nastaven DIEOE, digitální vstup je povolen / zakázán, když je DIEOV nastaven / vymazán, bez ohledu na stav MCU (normální režim, režim spánku).
DI Digitální vstup Toto je digitální vstup pro alternativní funkce. Na obrázku je signál připojen k výstupu Schmittova spouště, ale před synchronizátorem. Pokud není digitální vstup použit jako zdroj hodin, použije modul s alternativní funkcí vlastní synchronizátor.
AIO Analogový vstup / výstup Toto je analogový vstup / výstup z / do alternativních funkcí. Signál je připojen přímo k podložce a lze jej použít obousměrně.

Následující podkapitoly stručně popisují alternativní funkce pro každý port a vztahují převažující signály k alternativní funkci. Další podrobnosti viz popis alternativní funkce.

Alternativní funkce portu B.

Kolíky portu B s alternativní funkcí jsou zobrazeny v Tabulka 10-3.

Tabulka 10-3. Piny portu B Alternativní funkce

Port Pin Alternativní funkce
PB5

RESET: Resetovat PIN

dW: debugWIRE I / O ADC0: Vstupní kanál ADC 0

PCINT5: Přerušení výměny kolíku, zdroj 5

PB4 XTAL2: Výstup krystalového oscilátoru CLKO: Výstup systémových hodin ADC2: Vstupní kanál ADC 2

OC1B: Timer / Counter1 Porovnání výstupu Match B Výstup PCINT4: Pin Change Interrupt 0, Zdroj 4

PB3 XTAL1: Vstup krystalového oscilátoru CLKI: Vstup externích hodin ADC3: Vstup ADC, kanál 3

OC1B: Doplňkový časovač / čítač1 Porovnání výstupu shody B PCINT3: Přerušení výměny kolíku 0, zdroj 3

PB2 SCK: Vstup sériových hodin ADC1: Vstupní kanál ADC 1.

T0: Časovač / Počítadlo0 Zdroj hodin USCK: Hodiny USI (režim tří vodičů) SCL: Hodiny USI (režim dvou vodičů) INT0: Externí přerušení 0 Vstup PCINT2: Přerušení změny kolíku 0, Zdroj 2

PB1 MISO: SPI Vstup hlavních dat / Slave datový výstup AIN1: Analogový komparátor, Záporný vstup OC0B: Časovač / Počitadlo0 Porovnat Výstup B shody B OC1A: Časovač / Počitadlo1 Porovnat Spárovat A Výstup DO: USI Datový výstup (režim tří vodičů) PCINT1: Přerušení změny kolíku 0, zdroj 1
PB0 MOSI :: SPI Výstup hlavních dat / Vstup slave dat AIN0: Analogový komparátor, pozitivní vstup

OC0A: Timer/Counter0 Porovnat výstup Match A

OC1A: Doplňkový časovač / čítač1 Porovnání Porovnání výstupu A DI: Vstup dat USI (režim tří vodičů)

SDA: Vstup dat USI (režim dvou vodičů) AREF: Externí analogová reference PCINT0: Přerušení změny kolíku 0, Zdroj 0

Port B, bit 5 - RESET / dW / ADC0 / PCINT5

RESET: Vstup externího resetu je aktivní nízký a je povolen neprogramováním („1“) pojistky RSTDISBL. Pullup je aktivován a výstupní ovladač a digitální vstup jsou deaktivovány, když je pin použit jako pin RESET.

dW: Když je naprogramována pojistka debugWIRE Enable (DWEN) a nejsou naprogramovány Lock bity, aktivuje se systém debugWIRE v cílovém zařízení. Pin portu RESET je konfigurován jako dvousměrný I / O pin drát-AND (open-drain) s povoleným pull-up a stává se komunikační bránou mezi cílem a emulátorem.

ADC0: Analogově digitální převodník, kanál 0.

PCINT5: Zdroj změny přerušení kolíku 5.

Port B, bit 4 - XTAL2 / CLKO / ADC2 / OC1B / PCINT4

XTAL2: Pin 2. Oscilátor hodin 4. Používá se jako hodinový pin pro všechny zdroje hodin hodin s výjimkou interního kalibrovatelného RC oscilátoru a externích hodin. Pokud je použit jako hodinový pin, nelze jej použít jako I / O pin. Při použití interního kalibrovatelného RC oscilátoru nebo externích hodin jako zdroje hodinových čipů slouží PBXNUMX jako obyčejný I / O pin.

CLKO: Rozdělené systémové hodiny lze vysílat na pin PB4. Pokud je naprogramována pojistka CKOUT, budou vydány rozdělené systémové hodiny, bez ohledu na nastavení PORTB4 a DDB4. Bude také vydáván během resetu.

ADC2: Analogově digitální převodník, kanál 2.

OC1B: Porovnání výstupu Výstup výstupu: Pin PB4 může sloužit jako externí výstup pro Timer / Counter1 Compare Match B, když je nakonfigurován jako výstup (sada DDB4). Pin OC1B je také výstupním pinem pro funkci časovače v režimu PWM.

PCINT4: Zdroj změny přerušení kolíku 4.

Port B, bit 3 - XTAL1 / CLKI / ADC3 / OC1B / PCINT3

XTAL1: Kolík oscilátoru hodin čipu 1. Používá se pro všechny zdroje hodin hodin s výjimkou interního kalibrovaného RC oscilátoru. Pokud je použit jako hodinový pin, nelze jej použít jako I / O pin.

CLKI: Vstup hodin z externího zdroje hodin, viz „Externí hodiny“ na stránce 26.

ADC3: Analogově digitální převodník, kanál 3.

OC1B: Inverted Output Compare Match output: Pin PB3 může sloužit jako externí výstup pro Timer / Counter1 Compare Match B, když je nakonfigurován jako výstup (sada DDB3). Pin OC1B je také invertovaný výstupní pin pro funkci časovače režimu PWM.

PCINT3: Zdroj změny přerušení kolíku 3.

Port B, bit 2 - SCK / ADC1 / T0 / USCK / SCL / INT0 / PCINT2

SCK: Výstup Master Clock, vstupní pin Slave Clock pro kanál SPI. Když je SPI povolen jako Slave, je tento pin nakonfigurován jako vstup bez ohledu na nastavení DDB2. Když je SPI povolen jako Master, směr dat tohoto pinu je řízen DDPB2. Když je SPI vynucen jako vstup, může být pull-up stále řízen bitem PORTB2.

ADC1: Analogově digitální převodník, kanál 1.

T0: Zdroj časovače / čítače0.

USCK: Třívodičový režim Hodiny univerzálního sériového rozhraní.

SCL: Dvouvodičový režim Sériové hodiny pro USI Dvouvodičový režim.

INT0: Externí zdroj přerušení 0.

PCINT2: Zdroj změny přerušení kolíku 2.

Port B, bit 1 - MISO / AIN1 / OC0B / OC1A / DO / PCINT1

MISO: Vstup Master Data, výstupní pin Slave Data pro kanál SPI. Když je SPI povolen jako Master, je tento pin nakonfigurován jako vstup bez ohledu na nastavení DDB1. Když je SPI povolen jako Slave, směr dat tohoto pinu je řízen DDB1. Když je SPI vynucen jako vstup, může být pull-up stále řízen bitem PORTB1.

AIN1: Negativní vstup analogového komparátoru. Nakonfigurujte pin portu jako vstup s vypnutým interním pull-up, aby funkce digitálního portu nezasahovala do funkce analogového komparátoru.

OC0B: Porovnání výstupu Porovnání výstupu. Pin PB1 může sloužit jako externí výstup pro porovnávání zápasů Timer / Counter0 B. Pin PB1 musí být nakonfigurován jako výstup (sada DDB1 (jedna)), aby sloužil této funkci. Pin OC0B je také výstupním pinem pro funkci časovače v režimu PWM.

OC1A: Výstup porovnávání shody výstupu: Pin PB1 může sloužit jako externí výstup pro shodu časovače / čítače1 porovnání B, když je nakonfigurován jako výstup (sada DDB1). Pin OC1A je také výstupním pinem pro funkci časovače v režimu PWM.

DO: Třívodičový režim Datový výstup univerzálního sériového rozhraní. Třívodičový režim Datový výstup přepíše hodnotu PORTB1 a je přenášen na port, když je nastaven bit datového směru DDB1 (jeden). PORTB1 stále umožňuje vytažení, pokud je zadán směr a je nastaven PORTB1 (jeden).

PCINT1: Zdroj změny přerušení kolíku 1.

Port B, bit 0 - MOSI / AIN0 / OC0A / OC1A / DI / SDA / AREF / PCINT0

MOSI: Výstup hlavních dat SPI, vstup vedlejších dat pro kanál SPI. Když je SPI povolen jako Slave, je tento pin nakonfigurován jako vstup bez ohledu na nastavení DDB0. Když je SPI povolen jako Master, směr dat tohoto pinu je řízen DDB0. Když je SPI vynucen jako vstup, může být pull-up stále řízen bitem PORTB0.

AIN0: Pozitivní vstup analogového komparátoru. Nakonfigurujte pin portu jako vstup s vypnutým interním pull-up, aby funkce digitálního portu nezasahovala do funkce analogového komparátoru.

OC0A: Porovnání výstupu Porovnání výstupu. Pin PB0 může sloužit jako externí výstup pro Timer / Counter0 Compare Match A, pokud je nakonfigurován jako výstup (sada DDB0 (jedna)). Pin OC0A je také výstupním pinem pro funkci časovače režimu PWM.

OC1A: Inverted Output Compare Match output: Pin PB0 může sloužit jako externí výstup pro Timer / Counter1 Compare Match B, když je nakonfigurován jako výstup (sada DDB0). Pin OC1A je také invertovaný výstupní pin pro funkci časovače režimu PWM.

SDA: Dvouvodičový režim Data sériového rozhraní.

AREF: Externí analogová reference pro ADC. Pullup a výstupní ovladač jsou na PB0 deaktivovány, pokud je pin použit jako externí reference nebo interní voltage Reference s externím kondenzátorem na pinu AREF.

DI: Vstup dat v třívodičovém režimu USI. USI Třívodičový režim nemá přednost před normálními funkcemi portu, takže pin musí být nakonfigurován jako vstup pro funkci DI.

PCINT0: Zdroj změny přerušení kolíku 0.

Tabulka 10-4 Tabulka 10-5 vztahují alternativní funkce portu B k převažujícím signálům zobrazeným v Obrázek 10-5 zapnutý strana 58.

Tabulka 10-4. Přepisující signály pro alternativní funkce v PB[5:3]

Název signálu PB5 / RESET / ADC0 / PCINT5 PB4/ADC2/XTAL2/ OC1B/PCINT4 PB3/ADC3/XTAL1/ OC1B/PCINT3
PUOE

RSTDISBL(1) • DWEN(1)

0 0
PUOV 1 0 0
DDOE RSTDISBL(1) • DWEN(1) 0 0
DDOV debugWire Přenos 0 0
PVOE 0 OC1B Povolit

OC1B Povolit

PVOV 0 OC1B OC1B
PTOE 0 0 0
DIEOE

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

PCINT4 • PCIE + ADC2D PCINT3 • PCIE + ADC3D
DIEOV ADC0D ADC2D ADC3D
DI Vstup PCINT5 Vstup PCINT4 Vstup PCINT3
AIO Vstup RESET, vstup ADC0 Vstup ADC2 Vstup ADC3

Poznámka: když je pojistka „0“ (naprogramováno).

Tabulka 10-5. Přepisující signály pro alternativní funkce v PB[2:0]

Název signálu 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

PUOE USI_TWO_WIRE 0 USI_TWO_WIRE
PUOV 0 0 0
DDOE USI_TWO_WIRE 0 USI_TWO_WIRE
DDOV (USI_SCL_HOLD + PORTB2) • DDB2 0  

(SDA + PORTB0) • DDB0

PVOE USI_TWO_WIRE • DDB2 OC0B Povolit + OC1A Povolit + USI_THREE_WIRE

OC0A Povolit + OC1A Povolit + (USI_TWO_WIRE

DDB0)

PVOV 0 OC0B + OC1A + DO

OC0A + OC1A

PTOE USITC 0 0
DIEOE PCINT2 • PCIE + ADC1D + USISIE PCINT1 • PCIE + AIN1D PCINT0 • PCIE + AIN0D + USISIE
DIEOV ADC1D AIN1D AIN0D
DI T0 / USCK / SCL / INT0 /

Vstup PCINT2

Vstup PCINT1 Vstup DI / SDA / PCINT0
AIO Vstup ADC1 Negativní vstup analogového komparátoru Pozitivní vstup analogového komparátoru

Popis registrace

MCUCR - MCU Control Register

Bit 7 6 5 4 3 2 1 0
0x35 BODS PUD SE SM1 SM0 TĚLO ISC01 ISC00 MCUCR
Čtení/zápis R R/W R/W R/W R/W R R/W R/W
Počáteční hodnota 0 0 0 0 0 0 0 0

Bit 6 - PUD: Pull-up Disable

Když je tento bit zapsán do jedné, přípony na I / O portech jsou zakázány, i když jsou registry DDxn a PORTxn nakonfigurovány tak, aby umožňovaly přípony ({DDxn, PORTxn} = 0b01). Vidět „Konfigurace kolíku“ na stránce 54 pro více informací o této funkci.

PORTB - datový registr portu B.

Bit 7 6 5 4 3 2 1 0
0x18 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB0 PORTB
Čtení/zápis R R R/W R/W R/W R/W R/W R/W
Počáteční hodnota 0 0 0 0 0 0 0 0

Registr datových směrů DDRB - Port B.

Bit 7 6 5 4 3 2 1 0
0x17 DDB5 DDB4 DDB3 DDB2 DDB1 DDB0 DDRB
Čtení/zápis R R R/W R/W R/W R/W R/W R/W
Počáteční hodnota 0 0 0 0 0 0 0 0

PINB - adresa vstupních pinů portu B.

Bit 7 6 5 4 3 2 1 0
0x16 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0 PINB
Čtení/zápis R R R/W R/W R/W R/W R/W R/W
Počáteční hodnota 0 0 N/A N/A N/A N/A N/A N/A

8bitový časovač / čítač0 s PWM

Vlastnosti

Dvě nezávislé jednotky pro porovnání výstupu

Porovnávací registry s dvojitým vyrovnávacím výstupem

Vymazat časovač při porovnání shody (automatické načtení)

Bezporuchový, fázově korektní modulátor šířky pulzu (PWM)

Variabilní PWM období

Generátor frekvence

Tři nezávislé zdroje přerušení (TOV0, OCF0A a OCF0B)

Nadview

Timer / Counter0 je 8bitový modul Timer / Counter pro všeobecné použití, se dvěma nezávislými jednotkami pro porovnání výstupu a s podporou PWM. Umožňuje přesné načasování provádění programu (správa událostí) a generování vln.

Zjednodušené blokové schéma 8bitového časovače / čítače je zobrazeno v Obrázek 11-1. Aktuální umístění I / O pinů viz „Pinout ATtiny25 / 45/85“ na straně 2. CPU přístupné I / O registry, včetně I / O bitů a I / O pinů, jsou zobrazeny tučně. Specifický I / O registr a umístění bitů jsou uvedeny v seznamu „Popis registrace“ na stránce 77.

Registry časovače/počítadla (TCNT0) a výstupní porovnávací registry (OCR0A a OCR0B) jsou 8bitové registry. Signály požadavku přerušení (na obrázku zkráceně Int.Req.) jsou všechny viditelné v registru příznaků přerušení časovače (TIFR). Všechna přerušení jsou individuálně maskována registrem masky přerušení časovače (TIMSK). TIFR a TIMSK nejsou na obrázku znázorněny.

Časovač/počítač lze taktovat interně, přes předděličku nebo externím zdrojem hodin na kolíku T0. Logický blok Clock Select řídí, který zdroj hodin a hranu používá časovač/počítač ke zvýšení (nebo snížení) své hodnoty. Časovač/počítadlo je neaktivní, pokud není vybrán žádný zdroj hodin. Výstup z logiky Clock Select se označuje jako hodiny časovače (clkT0).

Dvojité vyrovnávací paměti pro porovnání výstupu (OCR0A a OCR0B) se vždy porovnávají s hodnotou časovače / čítače. Výsledek porovnání může generátor vln použít k vygenerování PWM nebo výstupu s proměnnou frekvencí na piny výstupu porovnání (OC0A a OC0B). Viz „Jednotka pro porovnání výstupu“ na straně 69. pro detaily. Událost Porovnat shodu také nastaví příznak porovnání (OCF0A nebo OCF0B), který lze použít ke generování požadavku na přerušení výstupu.

Definice

Mnoho registrů a bitových odkazů v této části je napsáno obecně. Malé písmeno „n“ nahradí číslo časovače / čítače, v tomto případě 0. Malé písmeno „x“ nahradí výstupní srovnávací jednotku, v tomto případě srovnávací jednotku A nebo srovnávací jednotku B. Pokud však použijete registr nebo bit, v programu musí být použita přesná forma, tj. TCNT0 pro přístup k hodnotě čítače Timer / Counter0 atd.

Definice v Tabulka 11-1 jsou v celém dokumentu také značně používány.

Tabulka 11-1. Definice

Konstantní Popis
DNO Počítadlo dosáhne DOLU, když se stane 0x00
MAX Čítač dosáhne svého maxima, když se stane 0xFF (desítkově 255)
TOP Počítadlo dosáhne vrcholu, když se rovná nejvyšší hodnotě v sekvenci počítání. Hodnotu TOP lze přiřadit jako pevnou hodnotu 0xFF (MAX) nebo hodnotu uloženou v registru OCR0A. Přiřazení závisí na provozním režimu

Časovač / čítač a měřítko hodin a zdroje hodin

Časovač / čítač lze taktovat pomocí interního nebo externího zdroje hodin. Zdroj hodin je vybrán logikou Clock Select, která je řízena bity Clock Select (c) umístěnými v řídicím registru Timer / Counter0 (TCCR0B).

Interní zdroj hodin s přednastavovačem

Časovač/Počítadlo0 lze taktovat přímo systémovými hodinami (nastavením CS0[2:0] = 1). To zajišťuje nejrychlejší provoz s maximální frekvencí hodin časovače/počítadla rovnou frekvenci systémových hodin (fCLK_I/O). Alternativně lze jako zdroj hodin použít jeden ze čtyř kohoutků z předděličky. Předškálované hodiny mají frekvenci buď

Reset přednastavovacího zařízení

Prescaler běží volně, tj. Funguje nezávisle na logice Clock Select časovače/čítače0. Vzhledem k tomu, že předdělička není ovlivněna volbou hodin časovače/počítadla, bude mít stav předděličky důsledky pro situace, kdy se používají hodiny s předškálováním. Jeden exampArtefakt předkalkulace je, když je časovač/čítač povolen a taktován prescalerem (6> CS0 [2: 0]> 1). Počet cyklů systémových hodin od zapnutí časovače po první počet může být od 1 do N+1 cyklů systémových hodin, kde N se rovná děliteli prescaleru (8, 64, 256 nebo 1024).

Je možné použít Prescaler Reset pro synchronizaci časovače / čítače k ​​provedení programu.

Externí zdroj hodin

Externí zdroj hodin aplikovaný na kolík T0 lze použít jako hodiny časovače/počítadla (clkT0). Pin T0 je sampvedl jednou za každý systémový hodinový cyklus logikou synchronizace pinů. Synchronizované (sampLED)

přes detektor hran. Obrázek 11-2 ukazuje funkční ekvivalentní blokové schéma synchronizace T0 a logiky detektoru hran. Registry jsou taktovány na kladné hraně vnitřních systémových hodin (clkI/O). Západka je průhledná ve vysoké periodě vnitřních systémových hodin.

Hranový detektor generuje jeden pulz clkT0 pro každou pozitivní (CS0[2:0] = 7) nebo negativní (CS0[2:0] = 6) hranu, kterou detekuje.

Registry OCR0x mají dvojitou vyrovnávací paměť, když používají některý z režimů PWM (Pulse Width Modulation). Pro normální provozní režimy a režim Clear Timer on Compare (CTC) je dvojité ukládání do vyrovnávací paměti zakázáno. Dvojité ukládání do vyrovnávací paměti synchronizuje aktualizaci srovnávacích registrů OCR0x buď na horní, nebo na dolní část počítací sekvence. Synchronizace zabraňuje výskytu lichých nesymetrických PWM pulsů, čímž je výstup bez závad.

Přístup do registru OCR0x se může zdát složitý, ale není tomu tak. Když je povoleno dvojité ukládání do vyrovnávací paměti, CPU má přístup k registru vyrovnávacích pamětí OCR0x a pokud je dvojité ukládání do vyrovnávací paměti zakázáno, CPU bude přistupovat přímo k OCR0x.

Porovnání výkonu

V režimech generování křivek jiných než PWM lze vynutit porovnávací výstup komparátoru zápisem jednoho do bitu FOC0x (Force Output Compare). Vynucení funkce Porovnání shody nenastaví příznak OCF0x nebo opětovné načtení / vymazání časovače, ale pin OC0x bude aktualizován, jako by došlo ke skutečnému porovnání shody (nastavení bitů COM0x [1: 0] definuje, zda je nastaven pin OC0x, vymazán nebo přepnuto).

Porovnání blokování shody pomocí zápisu TCNT0

Všechny operace zápisu CPU do registru TCNT0 zablokují jakoukoli porovnávací shodu, ke které dojde v příštím hodinovém cyklu časovače, i když je časovač zastaven. Tato funkce umožňuje inicializaci OCR0x na stejnou hodnotu jako TCNT0 bez spuštění přerušení, když jsou povoleny hodiny časovače / čítače.

Použití jednotky pro porovnání výstupu

Vzhledem k tomu, že zápis TCNT0 v jakémkoli provozním režimu zablokuje všechny porovnávací shody pro jeden hodinový cyklus časovače, při změně TCNT0 při použití jednotky pro porovnání výstupu existují rizika, nezávisle na tom, zda běží časovač / čítač nebo ne. Pokud se hodnota zapsaná do TCNT0 rovná hodnotě OCR0x, bude porovnána shoda, což bude mít za následek nesprávné generování křivky. Podobně nezapisujte hodnotu TCNT0 rovnou BOTTOM, když počítadlo počítá dolů.

Nastavení OC0x by mělo být provedeno před nastavením Data Direction Register pro výstup pin portu. Nejjednodušší způsob, jak nastavit hodnotu OC0x, je použít v normálním režimu strobo bity Force Output Compare (FOC0x). Registry OC0x si zachovávají své hodnoty i při přepínání mezi režimy generování vln.

Uvědomte si, že bity COM0x [1: 0] nejsou dvojitě ukládány do vyrovnávací paměti společně s porovnávanou hodnotou. Změna bitů COM0x [1: 0] se projeví okamžitě.

Porovnejte výstupní jednotku

Bity režimu porovnávání výstupu (COM0x [1: 0]) mají dvě funkce. Generátor průběhů používá bity COM0x [1: 0] pro definování stavu Porovnání výstupu (OC0x) při příštím porovnání shody. Bity COM0x [1: 0] také řídí výstupní zdroj pinů OC0x. Obrázek 11-6 ukazuje zjednodušené schéma logiky ovlivněné nastavením bitu COM0x [1: 0]. I / O registry, I / O bity a I / O piny na obrázku jsou zobrazeny tučně. Zobrazeny jsou pouze části obecných registrů řízení vstupů / výstupů portů (DDR a PORT), které jsou ovlivněny bity COM0x [1: 0]. Při odkazování na stav OC0x je odkaz na interní registr OC0x, nikoli na kolík OC0x. Pokud dojde k resetování systému, registr OC0x se resetuje na „0“.

Když je OC0A / OC0B připojen k I / O pinu, závisí funkce bitů COM0A [1: 0] / COM0B [1: 0] na nastavení bitu WGM0 [2: 0]. Tabulka 11-2 ukazuje bitovou funkčnost COM0x [1: 0], když jsou bity WGM0 [2: 0] nastaveny na normální nebo režim CTC (bez PWM).

Tabulka 11-2. Porovnat režim výstupu, režim bez PWM

COM0A1 COM0B1 COM0A0 COM0B0 Popis
0 0 Normální provoz portu, odpojen OC0A / OC0B.
0 1 Přepnout OC0A / OC0B při porovnání shody
1 0 Vymazat OC0A / OC0B při porovnání shody
1 1 Nastavte OC0A / OC0B na Porovnat shodu

Tabulka 11-3 zobrazuje bitovou funkčnost COM0x [1: 0], když jsou bity WGM0 [2: 0] nastaveny na rychlý režim PWM.

Tabulka 11-3. Porovnejte výstupní režim, rychlý režim PWM(1)

COM0A1 COM0B1 COM0A0 COM0B0 Popis
0 0 Normální provoz portu, odpojen OC0A / OC0B.
0 1 Rezervováno
1 0 Vymazat OC0A / OC0B při porovnání shody, nastavit OC0A / OC0B na DOLNÍ (neinvertující režim)
1 1 Nastavit OC0A / OC0B na funkci Porovnat shodu, vymazat OC0A / OC0B ve spodní části (invertující režim)

Poznámka: Zvláštní případ nastane, když se OCR0A nebo OCR0B rovná TOP a je nastaveno COM0A1/COM0B1. V tomto případě je porovnávací shoda ignorována, ale nastavení nebo vymazání se provede na BOTTOM. Vidět „Rychlý režim PWM“ na straně 73 pro více podrobností.

Tabulka 11-4 ukazuje bitovou funkčnost COM0x [1: 0], když jsou bity WGM0 [2: 0] nastaveny na fázově správný režim PWM.

Tabulka 11-4. Porovnat výstupní režim, fázově správný režim PWM(1)

COM0A1 COM0B1 COM0A0 COM0B0 Popis
0 0 Normální provoz portu, odpojen OC0A / OC0B.
0 1 Rezervováno
1 0 Vynulujte OC0A / OC0B při porovnání shody při počítání. Při odečítání nastavte OC0A / OC0B na Porovnat shodu.
1 1 Nastavit OC0A / OC0B na Porovnat shodu, když se počítá. Vynulujte OC0A / OC0B při porovnání shody při down-countingu.

Poznámka: 1. Zvláštní případ nastane, když se OCR0A nebo OCR0B rovná TOP a je nastaveno COM0A1/COM0B1. V tomto případě je porovnávací shoda ignorována, ale nastavení nebo vymazání se provede na TOP. Vidět „Fázově správný režim PWM“ na stránce 74 pro více podrobností.

Bits 3: 2 - Res: Rezervované bity

Tyto bity jsou rezervované bity v ATtiny25 / 45/85 a budou se vždy číst jako nula.

Bity 1: 0 - WGM0 [1: 0]: Režim generování křivky

V kombinaci s bitem WGM02 nalezeným v registru TCCR0B tyto bity řídí sekvenci počítání čítače, zdroj maximální hodnoty (TOP) čítače a jaký typ generace křivky má být použit, viz Tabulka 11-5. Režimy podporované jednotkou Timer / Counter jsou: Normální režim (čítač), Vymazat časovač v režimu Porovnání shody (CTC) a dva typy režimů Pulse Width Modulation (PWM) (viz „Provozní režimy“ na straně 71).

Tabulka 11-5. Popis bitu režimu generování tvaru vlny

Režim WGM 02 WGM 01 WGM 00 Provozní režim časovače / čítače TOP Aktualizace OCRx na Nastaven příznak TOV
0 0 0 0 Normální 0xFF Bezprostřední MAX(1)
1 0 0 1 PWM, správná fáze 0xFF TOP DNO(2)
2 0 1 0 CTC OCRA Bezprostřední MAX(1)
3 0 1 1 Rychlé PWM 0xFF DNO(2) MAX(1)
4 1 0 0 Rezervováno
5 1 0 1 PWM, správná fáze OCRA TOP DNO(2)
6 1 1 0 Rezervováno
7 1 1 1 Rychlé PWM OCRA DNO(2) TOP

Bit 7 - FOC0A: Porovnání výstupu síly A

Bit FOC0A je aktivní pouze tehdy, když bity WGM určují režim, který není PWM.

Pro zajištění kompatibility s budoucími zařízeními však musí být tento bit nastaven na nulu, když je TCCR0B zapsán při provozu v režimu PWM. Při zápisu logického do bitu FOC0A je na jednotce Generování vln vynuceno okamžité Porovnání shody. Výstup OC0A se mění podle nastavení bitů COM0A [1: 0]. Všimněte si, že bit FOC0A je implementován jako stroboskop. Proto je to hodnota přítomná v bitech COM0A [1: 0], která určuje účinek vynuceného porovnání.

Stroboskop FOC0A nebude generovat žádné přerušení, ani nevymaže časovač v režimu CTC pomocí OCR0A jako TOP. Bit FOC0A se vždy čte jako nula.

Bit 6 - FOC0B: Porovnání výstupu síly B

Bit FOC0B je aktivní pouze tehdy, když bity WGM určují režim, který není PWM.

Pro zajištění kompatibility s budoucími zařízeními však musí být tento bit nastaven na nulu, když je TCCR0B zapsán při provozu v režimu PWM. Při zápisu logického na bit FOC0B je na jednotce Generování vln vynuceno okamžité Porovnání shody. Výstup OC0B se mění podle nastavení bitů COM0B [1: 0]. Všimněte si, že bit FOC0B je implementován jako stroboskop. Proto je to hodnota přítomná v bitech COM0B [1: 0], která určuje účinek vynuceného porovnání.

Stroboskop FOC0B nebude generovat žádné přerušení, ani nevymaže časovač v režimu CTC pomocí OCR0B jako TOP.

Bit FOC0B se vždy čte jako nula.

Bits 5: 4 - Res: Rezervované bity

Tyto bity jsou rezervované bity v ATtiny25 / 45/85 a budou se vždy číst jako nula.

Bit 3 - WGM02: Režim generování křivek

Viz popis v „TCCR0A - Registr řízení časovače / čítače A“ na straně 77.

Bits 2: 0 - CS0 [2: 0]: Výběr hodin

Tři bity Clock Select vybírají zdroj hodin, který má použít časovač / čítač.

Tabulka 11-6. Hodiny Vyberte popis bitu

CS02 CS01 CS00 Popis
0 0 0 Žádný zdroj hodin (časovač / čítač zastaven)
0 0 1 clkI/O/(žádné předškálování)
0 1 0 clkI/O/8 (z předděličky)
0 1 1 clkI/O/64 (z předděličky)
1 0 0 clkI/O/256 (z předděličky)
1 0 1 clkI/O/1024 (z předděličky)
1 1 0 Externí zdroj hodin na kolíku T0. Hodiny na sestupné hraně.
1 1 1 Externí zdroj hodin na kolíku T0. Hodiny na vzestupné hraně.

Pokud jsou pro Timer / Counter0 použity režimy externího pinu, přechody na pinu T0 způsobí taktování čítače, i když je pin nakonfigurován jako výstup. Tato funkce umožňuje softwarovou kontrolu počítání.

Počítat a porovnávat jednotky

Obecná operace Timer / Counter1 je popsána v asynchronním režimu a operace v synchronním režimu je uvedena pouze v případě, že existují rozdíly mezi těmito dvěma režimy. Obrázek 12-2 zobrazuje blokové schéma synchronizačního registru časovače / čítače 1 a zpoždění synchronizace mezi registry. Všimněte si, že na obrázku nejsou zobrazeny všechny detaily vtoku. Hodnoty registru Timer / Counter1 procházejí interními synchronizačními registry, které způsobují zpoždění synchronizace vstupu, než ovlivní činnost čítače. Registry TCCR1, GTCCR, OCR1A, OCR1B a OCR1C lze číst zpět hned po zapsání registru. Hodnoty zpětného čtení jsou pro registr Timer / Counter1 (TCNT1) a příznaky (OCF1A, OCF1B a TOV1) zpožděny z důvodu synchronizace vstupu a výstupu.

Timer / Counter1 nabízí vysoké rozlišení a vysokou přesnost použití s ​​nižšími možnostmi přednastavení. Může také podporovat dva přesné, vysokorychlostní 8bitové modulátory pulzní šířky využívající frekvence až 64 MHz (nebo 32 MHz v režimu nízké rychlosti). V tomto režimu slouží časovač / čítač1 a registry pro porovnání výstupů jako duální samostatné PWM s nepřekrývajícími se neinvertovanými a invertovanými výstupy. Odkazují na strana 86 pro podrobný popis této funkce. Podobně díky možnosti vysokého přednastavení je tato jednotka užitečná pro funkce s nižší rychlostí nebo pro přesné časování s občasnými akcemi.

Obrázek 12-2. Blokový diagram synchronizačního registru časovače/počítadla 1.

Timer / Counter1 a prescaler umožňují spouštět CPU z jakéhokoli zdroje hodin, zatímco prescaler pracuje na rychlých hodinách PCK 64 MHz (nebo 32 MHz v režimu nízké rychlosti) v asynchronním režimu.

Pamatujte, že taktovací frekvence systému musí být nižší než jedna třetina frekvence PCK. Synchronizační mechanismus asynchronního časovače / čítače1 potřebuje alespoň dvě hrany PCK, když jsou hodiny systému vysoké. Pokud je frekvence systémových hodin příliš vysoká, existuje riziko ztráty dat nebo řídicích hodnot.

Následující Obrázek 12-3 ukazuje blokové schéma pro časovač / čítač1.

Tabulka 12-1. Režim porovnání Vyberte v režimu PWM

COM1x1 COM1x0 Vliv na piny pro porovnání výstupu
0 0 OC1x není připojen. OC1x není připojen.
0 1 OC1x vymazán při porovnání shody. Nastavit, kdyžTCNT1 = $ 00. OC1x nastaven na srovnávací zápas. Vymazáno, když TCNT1 = $ 00.
1 0 OC1x vymazán při porovnání shody. Nastaveno, když TCNT1 = $ 00. OC1x není připojen.
1 1 OC1x Nastavit na srovnávací zápas. Vymazáno, když TCNT1 = $ 00. OC1x není připojen.

Charakteristiky ADC

Tabulka 21-8. Charakteristika ADC, kanály s jedním zakončením. TA = -40 °C až +85 °C

Symbol Parametr Stav Min Typ Max Jednotky
Rezoluce 10 Bity
Absolutní přesnost (včetně chyb INL, DNL a kvantizace, zisku a posunu) VREF = 4V, VCC = 4V,

Takt ADC = 200 kHz

2 LSB
VREF = 4V, VCC = 4V,

Takt ADC = 1 MHz

3 LSB
VREF = 4V, VCC = 4V,

Takt ADC = 200 kHz

Režim redukce šumu

1.5 LSB
VREF = 4V, VCC = 4V,

Takt ADC = 1 MHz

Režim redukce šumu

2.5 LSB
Integrovaná nelinearita (INL) (přesnost po kalibraci offsetu a zesílení) VREF = 4V, VCC = 4V,

Takt ADC = 200 kHz

1 LSB
Diferenciální nelinearita (DNL) VREF = 4V, VCC = 4V,

Takt ADC = 200 kHz

0.5 LSB
Chyba zisku VREF = 4V, VCC = 4V,

Takt ADC = 200 kHz

2.5 LSB
Chyba offsetu VREF = 4V, VCC = 4V,

Takt ADC = 200 kHz

1.5 LSB
Čas převodu Bezplatná konverze 14 280 µs
Frekvence hodin 50 1000 kHz
VIN Vstupní objemtage GND VREF V
Vstupní šířka pásma 38.4 kHz
AREF Externí reference svtage 2.0 VCC V
VINT Interní svtage Reference 1.0 1.1 1.2 V
Interní reference 2.56V (1) VCC > 3.0 V 2.3 2.56 2.8 V
RREF 32
DÉŠŤ Odpor analogového vstupu 100
Výstup ADC 0 1023 LSB

Poznámka: 1. Hodnoty jsou pouze orientační.

Tabulka 21-9. Charakteristika ADC, Diferenční kanály (Unipolární režim). TA = -40 °C až +85 °C

Symbol Parametr Stav Min Typ Max Jednotky
Rezoluce Zisk = 1x 10 Bity
Zisk = 20x 10 Bity
Absolutní přesnost (včetně INL, DNL a

Kvantování, chyby zesílení a posunutí)

Zisk = 1x

VREF = 4V, VCC = 5V

Hodiny ADC = 50 - 200 kHz

10.0 LSB
Zisk = 20x

VREF = 4V, VCC = 5V

Hodiny ADC = 50 - 200 kHz

20.0 LSB
Integrovaná nelinearita (INL) (přesnost po kompenzaci a kalibraci zisku) Zisk = 1x

VREF = 4V, VCC = 5V

Hodiny ADC = 50 - 200 kHz

4.0 LSB
Zisk = 20x

VREF = 4V, VCC = 5V

Hodiny ADC = 50 - 200 kHz

10.0 LSB
Chyba zisku Zisk = 1x 10.0 LSB
Zisk = 20x 15.0 LSB
Chyba offsetu Zisk = 1x

VREF = 4V, VCC = 5V

Hodiny ADC = 50 - 200 kHz

3.0 LSB
Zisk = 20x

VREF = 4V, VCC = 5V

Hodiny ADC = 50 - 200 kHz

4.0 LSB
Čas převodu Bezplatná konverze 70 280 µs
Frekvence hodin 50 200 kHz
VIN Vstupní objemtage GND VCC V
VDIFF Vstupní diferenciální objemtage VREF/zisk V
Vstupní šířka pásma 4 kHz
AREF Externí reference svtage 2.0 VCC – 1.0 V
VINT Interní svtage Reference 1.0 1.1 1.2 V
Interní reference 2.56V (1) VCC > 3.0 V 2.3 2.56 2.8 V
RREF Referenční vstupní odpor 32
DÉŠŤ Odpor analogového vstupu 100
Výstup převodu ADC 0 1023 LSB

Poznámka: Hodnoty jsou pouze orientační.

Tabulka 21-10. Charakteristika ADC, diferenciální kanály (bipolární režim). TA = -40 °C až +85 °C

Symbol Parametr Stav Min Typ Max Jednotky
Rezoluce Zisk = 1x 10 Bity
Zisk = 20x 10 Bity
Absolutní přesnost (včetně INL, DNL a

Kvantování, chyby zesílení a posunutí)

Zisk = 1x

VREF = 4V, VCC = 5V

Hodiny ADC = 50 - 200 kHz

8.0 LSB
Zisk = 20x

VREF = 4V, VCC = 5V

Hodiny ADC = 50 - 200 kHz

8.0 LSB
Integrovaná nelinearita (INL) (přesnost po kompenzaci a kalibraci zisku) Zisk = 1x

VREF = 4V, VCC = 5V

Hodiny ADC = 50 - 200 kHz

4.0 LSB
Zisk = 20x

VREF = 4V, VCC = 5V

Hodiny ADC = 50 - 200 kHz

5.0 LSB
Chyba zisku Zisk = 1x 4.0 LSB
Zisk = 20x 5.0 LSB
Chyba offsetu Zisk = 1x

VREF = 4V, VCC = 5V

Hodiny ADC = 50 - 200 kHz

3.0 LSB
Zisk = 20x

VREF = 4V, VCC = 5V

Hodiny ADC = 50 - 200 kHz

4.0 LSB
Čas převodu Bezplatná konverze 70 280 µs
Frekvence hodin 50 200 kHz
VIN Vstupní objemtage GND VCC V
VDIFF Vstupní diferenciální objemtage VREF/zisk V
Vstupní šířka pásma 4 kHz
AREF Externí reference svtage 2.0 VCC – 1.0 V
VINT Interní svtage Reference 1.0 1.1 1.2 V
Interní reference 2.56V (1) VCC > 3.0 V 2.3 2.56 2.8 V
RREF Referenční vstupní odpor 32
DÉŠŤ Odpor analogového vstupu 100
Výstup převodu ADC -512 511 LSB

Souhrn instrukční sady

Mnemotechnické pomůcky Operandy Popis Operace Vlajky # Hodiny
ARITMETICKÉ A LOGICKÉ POKYNY
PŘIDAT Rd, Rr Přidejte dva registry Rd ← Rd + Rr Z, C, N, V, H 1
ADC Rd, Rr Přidejte s sebou dva registry Rd ← Rd + Rr + C Z, C, N, V, H 1
ADIW Rdl, K Přidat okamžitý do Wordu Rdh:Rdl ← Rdh:Rdl + K Z, C, N, V, S 2
SUB Rd, Rr Odečtěte dva registry Rd ← Rd – Rr Z, C, N, V, H 1
ŠEL JSEM NAHORU Rd, K. Odečtěte konstantu z registru Rd ← Rd – K Z, C, N, V, H 1
SBC Rd, Rr Odečtěte s provedením dvou registrů Rd ← Rd – Rr – C Z, C, N, V, H 1
SBCI Rd, K. Odečtěte s Carry Constant od Reg. Rd ← Rd – K – C Z, C, N, V, H 1
SBIW Rdl, K Odečtěte okamžitě od Wordu Rdh:Rdl ← Rdh:Rdl – K Z, C, N, V, S 2
A Rd, Rr Logické AND registry Rd ← Rd ∙ Rr Z, N, V 1
ANDI Rd, K. Logický AND registr a konstantní Rd ← Rd ∙ K Z, N, V 1
OR Rd, Rr Logické NEBO registry Rd ← Rd v Rr Z, N, V 1
ORI Rd, K. Logický NEBO registr a konstantní Rd ← Rd v K Z, N, V 1
EOR Rd, Rr Exkluzivní NEBO registry Rd ← Rd ⊕ Rr Z, N, V 1
COM Rd Jeden je doplněk Rd ← 0xFF − Rd Z, C, N, V 1
NEG Rd Doplněk dvojky Rd ← 0x00 − Rd Z, C, N, V, H 1
SBR Rd, K. Nastavte bity v registru Rd ← Rd v K Z, N, V 1
CBR Rd, K. Vymazání bitů v registru Rd ← Rd ∙ (0xFF – K) Z, N, V 1
INC Rd Přírůstek Rd ← Rd + 1 Z, N, V 1
DEC Rd Dekrement Rd ← Rd − 1 Z, N, V 1
TST Rd Vyzkoušejte nulu nebo minus Rd ← Rd ∙ Rd Z, N, V 1
CLR Rd Vymazat registraci Rd ← Rd ⊕ Rd Z, N, V 1
SER Rd Nastavit registraci Rd ← 0xFF Žádný 1
POKYNY PRO POBOČKY
RJMP k Relativní skok PC ← PC + k + 1 Žádný 2
IJMP Nepřímý Přejít na (Z) PC ← Z Žádný 2
ZAVOLAT k Relativní volání podprogramu PC ← PC + k + 1 Žádný 3
ZAVOLAT Nepřímé volání na (Z) PC ← Z Žádný 3
RET Návrat podprogramu PC ← STACK Žádný 4
SÍTĚ Přerušit návrat PC ← STACK I 4
CPSE Rd, Rr Porovnat, přeskočit, pokud je rovno if (Rd = Rr) PC ← PC + 2 nebo 3 Žádný 1. 2. 3
CP Rd, Rr Porovnejte Rd − Rr Z, N, V, C, H 1
CPC Rd, Rr Porovnejte s Carry Rd − Rr − C Z, N, V, C, H 1
CPI Rd, K. Porovnat Registrovat s Okamžitým Rd - K Z, N, V, C, H 1
SBRC Rr, nar Přeskočit, pokud bit v registru vymazán jestliže (Rr(b)=0) PC ← PC + 2 nebo 3 Žádný 1. 2. 3
SBRS Rr, nar Přeskočit, pokud je nastaven bit v registru jestliže (Rr(b)=1) PC ← PC + 2 nebo 3 Žádný 1. 2. 3
SBIC P, nar Přeskočit, pokud bit v I / O registru vymazán pokud (P(b)=0) PC ← PC + 2 nebo 3 Žádný 1. 2. 3
SBIS P, nar Přeskočit, pokud je nastaven bit v I / O registru pokud (P(b)=1) PC ← PC + 2 nebo 3 Žádný 1. 2. 3
BRBS s, k Větev, pokud je nastaven příznak stavu if (SREG(s) = 1) pak PC←PC+k + 1 Žádný 1/2
BRBC s, k Pobočka, pokud je příznak stavu vymazán if (SREG(s) = 0) pak PC←PC+k + 1 Žádný 1/2
BREQ k Větev, pokud se rovná jestliže (Z = 1), pak PC ← PC + k + 1 Žádný 1/2
BRNĚ k Větev, pokud se nerovná jestliže (Z = 0), pak PC ← PC + k + 1 Žádný 1/2
BRCS k Pobočka, pokud nese sadu jestliže (C = 1), pak PC ← PC + k + 1 Žádný 1/2
BRCC k Pobočka, pokud je Carry Clear jestliže (C = 0), pak PC ← PC + k + 1 Žádný 1/2
BRSH k Větev, pokud je stejná nebo vyšší jestliže (C = 0), pak PC ← PC + k + 1 Žádný 1/2
BRLO k Pobočka, pokud je nižší jestliže (C = 1), pak PC ← PC + k + 1 Žádný 1/2
BRMI k Větev, pokud je minus jestliže (N = 1), pak PC ← PC + k + 1 Žádný 1/2
BRPL k Pobočka, pokud Plus jestliže (N = 0), pak PC ← PC + k + 1 Žádný 1/2
BRGE k Pobočka, pokud je větší nebo rovnocenná, podepsaná jestliže (N ⊕ V= 0), pak PC ← PC + k + 1 Žádný 1/2
BRLT k Pobočka, pokud je menší než nula, podepsaná jestliže (N ⊕ V= 1), pak PC ← PC + k + 1 Žádný 1/2
BRHS k Větve, pokud je nastavena vlajka s poloviční přepravou jestliže (H = 1) pak PC ← PC + k + 1 Žádný 1/2
BRHC k Pobočka, pokud je příznak Half Carry vymazán jestliže (H = 0) pak PC ← PC + k + 1 Žádný 1/2
BRTS k Větev, pokud je nastaven příznak T. jestliže (T = 1), pak PC ← PC + k + 1 Žádný 1/2
BRTC k Pobočka, pokud je příznak T vymazán jestliže (T = 0), pak PC ← PC + k + 1 Žádný 1/2
BRVS k Větev, pokud je nastaven příznak přetečení jestliže (V = 1) pak PC ← PC + k + 1 Žádný 1/2
BRVC k Větev, pokud je příznak přetečení vymazán jestliže (V = 0) pak PC ← PC + k + 1 Žádný 1/2
BRIE k Pobočka, pokud je povoleno přerušení jestliže ( I = 1) pak PC ← PC + k + 1 Žádný 1/2
BRID k Pobočka, pokud je přerušeno zakázáno jestliže ( I = 0) pak PC ← PC + k + 1 Žádný 1/2
POKYNY PRO ZKOUŠKU BIT A BIT
SBI P, b Nastavit bit v I / O registru I/O(P,b) ← 1 Žádný 2
CBI P, b Vymazat bit v I / O registru I/O(P,b) ← 0 Žádný 2
LSL Rd Logický Shift doleva Rd(n+1) ← Rd(n), Rd(0) ← 0 Z, C, N, V 1
LSR Rd Logický posun doprava Rd(n) ← Rd(n+1), Rd(7) ← 0 Z, C, N, V 1
ROLE Rd Otočit doleva přes Carry Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) Z, C, N, V 1
ROR Rd Otočte se přímo skrz Carry Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) Z, C, N, V 1
ASR Rd Aritmetický posun doprava Rd(n) ← Rd(n+1), n=0..6 Z, C, N, V 1
Mnemotechnické pomůcky Operandy Popis Operace Vlajky # Hodiny
SWAP Rd Vyměňte křupky Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) Žádný 1
BSET s Sada příznaků SREG(y) ← 1 SREG 1
BCLR s Vlajka vymazána SREG(y) ← 0 SREG 1
BST Rr, nar Obchod bitů z registrace do T T ← Rr(b) T 1
BLD Rd, nar Bitové zatížení z T do registru Rd(b) ← T Žádný 1
SEC Nastavte Carry C ← 1 C 1
CLC Clear Carry C ← 0 C 1
SEN Nastavit negativní vlajku N ← 1 N 1
CLN Vymazat negativní vlajku N ← 0 N 1
SEZ Nastavit nulovou vlajku Z ← 1 Z 1
CLZ Vymazat nulovou vlajku Z ← 0 Z 1
SEI Povolit globální přerušení Já ← 1 I 1
CLI Globální přerušení je zakázáno Já ← 0 I 1
SES Nastavit podepsanou testovací vlajku S ← 1 S 1
CLS Vymazat podepsanou testovací vlajku S ← 0 S 1
SEV Nastavte přetečení doplňku dvojčat. V ← 1 V 1
CLV Vyčistěte přetečení doplňku dvojky V ← 0 V 1
SOUBOR Nastavte T v SREG T ← 1 T 1
CLT Vymazat T v SREG T ← 0 T 1
SEH Nastavit vlajku na polovinu v SREG H ← 1 H 1
CLH Vymazat vlajku na polovinu v SREG H ← 0 H 1
POKYNY PRO PŘENOS DAT
MOV Rd, Rr Pohyb mezi registry Rd ← Rr Žádný 1
MOVW Rd, Rr Kopírovat Zaregistrovat Word Rd+1:Rd ← Rr+1:Rr Žádný 1
LDI Rd, K. Načíst okamžitě Rd ← K Žádný 1
LD Rd, X Načíst nepřímo Rd ← (X) Žádný 2
LD Rd, X + Načíst nepřímo a Post-Inc. Rd ← (X), X ← X + 1 Žádný 2
LD Rd, - X Načíst nepřímo a předem. X ← X – 1, Rd ← (X) Žádný 2
LD Rd, Y. Načíst nepřímo Rd ← (Y) Žádný 2
LD Rd, Y + Načíst nepřímo a Post-Inc. Rd ← (Y), Y ← Y + 1 Žádný 2
LD Rd, - Y Načíst nepřímo a předem. Y ← Y – 1, Rd ← (Y) Žádný 2
LDD Rd, Y + q Načíst nepřímo s výtlakem Rd ← (Y + q) Žádný 2
LD Rd, Z Načíst nepřímo Rd ← (Z) Žádný 2
LD Rd, Z + Načíst nepřímo a Post-Inc. Rd ← (Z), Z ← Z+1 Žádný 2
LD Rd, -Z Načíst nepřímo a předem. Z ← Z – 1, Rd ← (Z) Žádný 2
LDD Rd, Z + q Načíst nepřímo s výtlakem Rd ← (Z + q) Žádný 2
LDS Rd, k Načíst přímo ze SRAM Rd ← (k) Žádný 2
ST X, Rr Uložit nepřímo (X) ← Rr Žádný 2
ST X +, Rr Store Nepřímé a Post-Inc. (X) ← Rr, X ← X + 1 Žádný 2
ST - X, Rr Ukládejte nepřímo a předem. X ← X – 1, (X) ← Rr Žádný 2
ST Y, Rr Uložit nepřímo (Y) ← Rr Žádný 2
ST Y +, Rr Store Nepřímé a Post-Inc. (Y) ← Rr, Y ← Y + 1 Žádný 2
ST - Y, Rr Ukládejte nepřímo a předem. Y ← Y – 1, (Y) ← Rr Žádný 2
STD Y + q, Rr Skladujte nepřímo s výtlakem (Y + q) ← Rr Žádný 2
ST Z, Rr Uložit nepřímo (Z) ← Rr Žádný 2
ST Z +, Rr Store Nepřímé a Post-Inc. (Z) ← Rr, Z ← Z + 1 Žádný 2
ST -Z, Rr Ukládejte nepřímo a předem. Z ← Z – 1, (Z) ← Rr Žádný 2
STD Z + q, Rr Skladujte nepřímo s výtlakem (Z + q) ← Rr Žádný 2
STS k, Rr Ukládejte přímo do SRAM (k) ← Rr Žádný 2
LPM Načtěte programovou paměť R0 ← (Z) Žádný 3
LPM Rd, Z Načtěte programovou paměť Rd ← (Z) Žádný 3
LPM Rd, Z + Načtěte programovou paměť a Post-Inc Rd ← (Z), Z ← Z+1 Žádný 3
SPM Uložte programovou paměť (z) ← R1:R0 Žádný
IN Rd, P V přístavu Rd ← P Žádný 1
VEN P, Rr Ven Port P ← Rr Žádný 1
TAM Rr Zatlačte Registrovat na Stack STACK ← Rr Žádný 2
POP Rd Pop Zaregistrujte se ze zásobníku Rd ← STACK Žádný 2
POKYNY K ŘÍZENÍ MCU
NOP Žádná operace Žádný 1
SPÁT Spát (viz konkrétní popis funkce Spánek) Žádný 1
WDR Hlídací pes Reset (viz konkrétní popis pro WDR / Timer) Žádný 1
PŘERUŠENÍ Přerušení
Rychlost (MHz) (1) Supply Voltage (V) Teplotní rozsah Balík (2) Objednací kód (3)
10 1.8 – 5.5 Průmyslový

(-40 ° C až +85 ° C) (4)

8P3 ATtiny45V-10PU
8S2 ATtiny45V-10SU ATtiny45V-10SUR ATtiny45V-10SH ATtiny45V-10SHR
8X ATtiny45V-10XU ATtiny45V-10XUR
20 M1 ATtiny45V-10MU ATtiny45V-10MUR
20 2.7 – 5.5 Průmyslový

(-40 ° C až +85 ° C) (4)

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

ATtiny45-20SH ATtiny45-20SHR

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

Poznámky: 1. Pro rychlost vstage, viz část 21.3 „Rychlost“ na straně 163.

Všechna balení jsou bez Pb, bez halogenidů a jsou plně zelená a odpovídají evropské směrnici o omezení nebezpečných látek (RoHS).

Indikátory kódu

H: Povrchová úprava olova NiPdAu

U: matný cín

R: páska a cívka

Tato zařízení lze také dodat ve formě oplatky. Podrobnější informace o objednání a minimální množství získáte od místního obchodního zastoupení Atmel.

Errato

Errata ATtiny25

Dopis o revizi v této části odkazuje na revizi zařízení ATtiny25.

Rev D - F

Žádná známá errata.

Rev B - C.

Čtení EEPROM může selhat při nízkém napájecím napětítage / nízká hodinová frekvence

Čtení EEPROM může selhat při nízkém napájecím napětítage / nízká hodinová frekvence

Pokus o čtení EEPROM při nízkých hodinových frekvencích a/nebo nízkém napájecím napětítage může mít za následek neplatná data.

Oprava problému / Řešení

Nepoužívejte EEPROM, pokud je taktovací frekvence nižší než 1MHz a napájecí napětítage je nižší než 2V. Pokud nelze provozní frekvenci zvýšit nad 1 MHz, pak napájecí napětítage by mělo být více než 2V. Podobně, pokud je dodávka voltage nelze zvýšit nad 2V, pak by pracovní frekvence měla být vyšší než 1MHz.

Je známo, že tato vlastnost závisí na teplotě, ale nebyla charakterizována. Pokyny jsou uvedeny pouze pro pokojovou teplotu.

Rev A.

Ne sampvedený.

Errata ATtiny45

Dopis o revizi v této části odkazuje na revizi zařízení ATtiny45.

Rev F - G

Žádná známá errata

Rev D - E

Čtení EEPROM může selhat při nízkém napájecím napětítage / nízká hodinová frekvence

Čtení EEPROM může selhat při nízkém napájecím napětítage / nízká hodinová frekvence

Pokus o čtení EEPROM při nízkých hodinových frekvencích a/nebo nízkém napájecím napětítage může mít za následek neplatná data.

Oprava problému / Řešení

Nepoužívejte EEPROM, pokud je taktovací frekvence nižší než 1MHz a napájecí napětítage je nižší než 2V. Pokud nelze provozní frekvenci zvýšit nad 1 MHz, pak napájecí napětítage by mělo být více než 2V. Podobně, pokud je dodávka voltage nelze zvýšit nad 2V, pak by pracovní frekvence měla být vyšší než 1MHz.

Je známo, že tato vlastnost závisí na teplotě, ale nebyla charakterizována. Pokyny jsou uvedeny pouze pro pokojovou teplotu.

Rev B - C.

PLL se nezablokuje

Čtení EEPROM z kódu aplikace nefunguje v režimu uzamčení bitů 3

Čtení EEPROM může selhat při nízkém napájecím napětítage / nízká hodinová frekvence

Generování výstupu PWM čítače časovače 1 na OC1B-XOC1B nefunguje správně

PLL se nezablokuje

Při frekvencích pod 6.0 ​​MHz se PLL nezablokuje

Oprava problému / Řešení

Pokud používáte PLL, pracujte na 6.0 MHz nebo vyšší.

Čtení EEPROM z kódu aplikace nefunguje v režimu uzamčení bitů 3

Když jsou bity LB2 a LB1 paměti naprogramovány na režim 3, čtení EEPROM nefunguje z kódu aplikace.

Oprava problému / Řešení problému

Nenastavujte režim ochrany uzamčení bitů 3, když je třeba kód aplikace číst z EEPROM.

Čtení EEPROM může selhat při nízkém napájecím napětítage / nízká hodinová frekvence

Pokus o čtení EEPROM při nízkých hodinových frekvencích a/nebo nízkém napájecím napětítage může mít za následek neplatná data.

Oprava problému / Řešení

Nepoužívejte EEPROM, pokud je taktovací frekvence nižší než 1MHz a napájecí napětítage je nižší než 2V. Pokud nelze provozní frekvenci zvýšit nad 1 MHz, pak napájecí napětítage by mělo být více než 2V. Podobně, pokud je dodávka voltage nelze zvýšit nad 2V, pak by pracovní frekvence měla být vyšší než 1MHz.

Je známo, že tato vlastnost závisí na teplotě, ale nebyla charakterizována. Pokyny jsou uvedeny pouze pro pokojovou teplotu.

Generování výstupu PWM čítače časovače 1 na OC1B - XOC1B nefunguje správně

Časovač Counter1 Výstup PWM OC1B-XOC1B nefunguje správně. Pouze v případě, že řídicí bity, COM1B1 a COM1B0 jsou ve stejném režimu jako COM1A1 a COM1A0, výstup OC1B-XOC1B funguje správně.

Oprava problému / Řešení problému

Jediným řešením je použít stejné nastavení řízení na kontrolních bitech COM1A [1: 0] a COM1B [1: 0], viz tabulka 14–4 v datovém listu. Problém byl opraven u Tiny45 rev D.

Rev A.

Příliš vysoká spotřeba energie

DebugWIRE ztrácí komunikaci, když vstoupí do přerušení

PLL se nezablokuje

Čtení EEPROM z kódu aplikace nefunguje v režimu uzamčení bitů 3

Čtení EEPROM může selhat při nízkém napájecím napětítage / nízká hodinová frekvence

Příliš vysoká spotřeba energie

Tři situace povedou k příliš vysoké spotřebě energie. Tyto jsou:

Externí hodiny jsou vybrány pojistkami, ale I / O PORT je stále povolen jako výstup.

EEPROM se načte před připojením k napájení.

VCC je 4.5 voltu nebo vyšší.

Prohlášení: Informace v tomto dokumentu jsou poskytovány v souvislosti s produkty Atmel. Tímto dokumentem ani v souvislosti s prodejem produktů Atmel není udělena žádná licence, výslovná nebo předpokládaná, estoppel nebo jinak, k právům duševního vlastnictví. S VÝJIMKOU UVEDENÝCH V PODMÍNKÁCH A PODMÍNEK PRODEJE ATMEL UVEDENÝCH V ATMEL WEBSTRÁNKA, ATMEL NEPŘEBÍRÁ ŽÁDNOU ODPOVĚDNOST A ODMÍTÁ JAKÉKOLI VÝSLOVNÉ, PŘEDPOKLÁDANÉ NEBO ZÁKONNÉ ZÁRUKY VZTAHUJÍCÍ SE NA SVÉ PRODUKTY, VČETNĚ PŘEDPOKLÁDANÉ ZÁRUKY OBCHODOVATELNOSTI, VHODNOSTI SPOLEČNOSTI N. V ŽÁDNÉM PŘÍPADĚ NEBUDE ATMEL ODPOVĚDNÁ ZA JAKÉKOLI PŘÍMÉ, NEPŘÍMÉ, NÁSLEDNÉ, TRESTUJÍCÍ, ZVLÁŠTNÍ NEBO NÁHODNÉ ŠKODY (VČETNĚ, BEZ OMEZENÍ, ŠKOD ZA ZTRÁTU A ZISKY, PŘERUŠENÍ OBCHODNÍ ČINNOSTI NEBO ZTRÁTU INFORMACÍ) TENTO DOKUMENT, I KDYŽ BYL ATMEL UPOZORNĚN NA MOŽNOST TAKOVÝCH ŠKOD.

Společnost Atmel neposkytuje žádná prohlášení ani záruky s ohledem na přesnost nebo úplnost obsahu tohoto dokumentu a vyhrazuje si právo kdykoli bez upozornění provádět změny specifikací a popisů produktů. Společnost Atmel se nezavazuje aktualizovat zde uvedené informace. Pokud není výslovně uvedeno jinak, produkty Atmel nejsou vhodné pro automobilové aplikace a nesmí se v nich používat. Produkty Atmel nejsou zamýšleny, autorizovány nebo zaručeny pro použití jako součásti v aplikacích určených k podpoře nebo udržení životnosti.

Reference

Zanechte komentář

Vaše emailová adresa nebude zveřejněna. Povinná pole jsou označena *