8bitový mikrokontrolér Atmel AVR s 2/4/8K bajty programovatelným flash systémem v systému
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
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
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
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.
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.
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á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
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
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
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 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 a „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
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.
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.
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
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 a „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 a „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
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
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.
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
Č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
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)
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 a 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 | ![]() |
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 | kΩ | ||||
DÉŠŤ | Odpor analogového vstupu | 100 | MΩ | |||
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 | kΩ | |||
DÉŠŤ | Odpor analogového vstupu | 100 | MΩ | |||
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 | kΩ | |||
DÉŠŤ | Odpor analogového vstupu | 100 | MΩ | |||
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.