8-bitový mikrokontrolér Atmel AVR s 2/4/8K bajtovým programovateľným systémom Flash
Vlastnosti
- Vysokovýkonný 8-bitový mikrokontrolér AVR® s nízkou spotrebou energie
- Pokročilá architektúra RISC
- 120 mocných pokynov - väčšina vykonaní jedného taktu
- 32 x 8 pracovných registrov na všeobecné účely
- Plne statická prevádzka
- Trvalé programové a dátové pamäte
- 2/4/8 kB bajtov programovateľnej programovej pamäte Flash v systéme
- Výdrž: 10,000 XNUMX cyklov zápisu/vymazania
- 128/256/512 bajtov v systéme programovateľná EEPROM
- Výdrž: 100,000 XNUMX cyklov zápisu/vymazania
- 128/256/512 bajtov Interná SRAM
- Programovací zámok pre samo-programovací program Flash a bezpečnosť údajov EEPROM
Periférne funkcie
- 8-bitový časovač / počítadlo s predradníkom a dvoma kanálmi PWM
- 8-bitový vysokorýchlostný časovač / počítadlo s oddeleným predradníkom
- 2 vysokofrekvenčné PWM výstupy so samostatnými výstupnými porovnávacími registrami
- Programovateľný generátor mŕtveho času
- USI - Universal Serial Interface with Start Condition Detector
- 10-bitový ADC
4 samostatné kanály
2 dvojice diferenciálnych kanálov ADC s programovateľným zosilnením (1x, 20x)
Meranie teploty
Programovateľný časovač strážneho psa so samostatným oscilátorom na čipe
Analógový komparátor na čipe
Špeciálne vlastnosti mikrokontroléra
DebugWIRE On-chip Debug System
In-System programovateľný cez SPI port
Externé a interné zdroje prerušenia
Režim nečinnosti s nízkou spotrebou, redukcia šumu ADC a režimy vypnutia
Vylepšený resetovací obvod pri zapnutí
Programovateľný obvod detekcie zhasnutia
Interný kalibrovaný oscilátor
I / O a balíčky
Šesť programovateľných I / O riadkov
8-pin PDIP, 8-pin SOIC, 20-pad QFN / MLF a 8-pin TSSOP (iba ATtiny45 / V)
Prevádzkový zvtage
- 1.8 - 5.5 V pre ATtiny25V / 45V / 85V
- 2.7 - 5.5 V pre ATtiny25 / 45/85
Rýchlostný stupeň
- ATtiny25V / 45V / 85V: 0 - 4 MHz pri 1.8 - 5.5 V, 0 - 10 MHz pri 2.7 - 5.5 V
- ATtiny25 / 45/85: 0 - 10 MHz pri 2.7 - 5.5 V, 0 - 20 MHz pri 4.5 - 5.5 V
Rozsah priemyselných teplôt
Nízka spotreba energie
Aktívny režim:
1 MHz, 1.8 V: 300 uA
Režim vypnutia:
Konfigurácie pinov
Pinout ATtiny25 / 45/85
Popisy pinov
VCC: Supply voltage.
GND: Zem.
Port B (PB5:PB0): Port B je 6-bitový obojsmerný I/O port s internými pull-up odpormi (vybratými pre každý bit). Výstupné vyrovnávacie pamäte Port B majú symetrické charakteristiky pohonu s vysokou schopnosťou záchytu aj zdroja. Ako vstupy budú piny Port B, ktoré sú externe stiahnuté na nízku hodnotu, zdrojom prúdu, ak sú aktivované pull-up odpory. Piny portu B sú trojstavové, keď sa aktivuje podmienka resetovania, aj keď hodiny nebežia.
Port B tiež slúži na funkcie rôznych špeciálnych funkcií modelu ATtiny25 / 45/85, ako je uvedené
Na ATtiny25 sa programovateľné I / O porty PB3 a PB4 (piny 2 a 3) vymieňajú v režime kompatibility ATtiny15 na podporu spätnej kompatibility s ATtiny15.
RESET: Resetovanie vstupu. Nízka úroveň na tomto kolíku dlhšia ako minimálna dĺžka impulzu vygeneruje reset, aj keď hodiny nebežia a za predpokladu, že resetovací kolík nebol deaktivovaný. Minimálna dĺžka impulzu je uvedená v Tabuľka 21-4 na strane 165. Nie je zaručené, že kratšie impulzy vygenerujú reset.
Resetovací pin sa dá použiť aj ako (slabý) I / O pin.
Koniecview
ATtiny25 / 45/85 je 8-bitový mikrokontrolér CMOS s nízkym výkonom založený na architektúre RISC s vylepšeným AVR. Vykonaním výkonných pokynov v jednom taktovacom cykle dosahuje procesor ATtiny25 / 45/85 priepustnosť blížiacu sa 1 MIPS na MHz, čo umožňuje návrhárovi systému optimalizovať spotrebu energie v porovnaní s rýchlosťou spracovania.
Bloková schéma
Jadro AVR kombinuje bohatú inštrukčnú sadu s 32 univerzálnymi pracovnými registrami. Všetkých 32 registrov je priamo pripojených k aritmetickej logickej jednotke (ALU), čo umožňuje prístup k dvom nezávislým registrom v jednej inštrukcii vykonanej v jednom hodinovom cykle. Výsledná architektúra je efektívnejšia z hľadiska kódu a dosahuje priepustnosť až desaťkrát rýchlejšiu ako bežné mikrokontroléry CISC.
ATtiny25 / 45/85 poskytuje nasledujúce funkcie: 2/4 / 8K bajtov In-System Programmable Flash, 128/256/512 bajtov EEPROM, 128/256/256 bajtov SRAM, 6 univerzálnych I / O liniek, 32 všeobecných účelové pracovné registre, jeden 8-bitový časovač / počítadlo s režimami porovnávania, jeden 8-bitový vysokorýchlostný časovač / počítadlo, univerzálne sériové rozhranie, interné a externé prerušenia, 4-kanálový, 10-bitový ADC, programovateľný časovač Watchdog s interným Oscilátor a tri softvérovo voliteľné režimy úspory energie. Pohotovostný režim zastaví procesor a umožní systému SRAM, časovač / počítadlo, ADC, analógový komparátor a systém prerušenia pokračovať v činnosti. Režim vypnutia uloží obsah registra a deaktivuje všetky funkcie čipu až do nasledujúceho prerušenia alebo resetovania hardvéru. Režim redukcie šumu ADC zastaví procesor a všetky I / O moduly okrem ADC, aby sa minimalizoval šum pri prepínaní počas prevodov ADC.
Prístroj je vyrobený pomocou technológie Atmel s vysokou hustotou energeticky nezávislej pamäte. On-chip ISP Flash umožňuje opätovné programovanie programovej pamäte v systéme prostredníctvom sériového rozhrania SPI, konvenčného programátora energeticky nezávislej pamäte alebo bootovacieho kódu na čipu bežiaceho na jadre AVR.
ATtiny25 / 45/85 AVR je podporovaný úplnou sadou nástrojov na vývoj programov a systémov vrátane: C Compilers, Macro Assemblers, Program Debugger / Simulators a Evaluation kits.
O zdrojoch
Komplexná sada vývojových nástrojov, poznámky k aplikácii a údajové listy sú k dispozícii na stiahnutie na http://www.atmel.com/avr.
Kód Examples
Táto dokumentácia obsahuje jednoduchý kód napramples, ktoré stručne ukazujú, ako používať rôzne časti zariadenia. Tieto kódy napramppredpokladajme, že časť špecifická hlavička file je zahrnutý pred kompiláciou. Uvedomte si, že nie všetci dodávatelia kompilátorov C obsahujú v hlavičke bitové definície files a spracovanie prerušenia v C závisí od kompilátora. Bližšie informácie získate v dokumentácii k kompilátoru C.
Pre I / O registre umiestnené na rozšírenej mape I / O musia byť pokyny „IN“, „OUT“, „SBIS“, „SBIC“, „CBI“ a „SBI“ nahradené pokynmi, ktoré umožňujú prístup k rozšíreným I / O. Spravidla to znamená „LDS“ a „STS“ v kombinácii s „SBRS“, „SBRC“, „SBR“ a „CBR“. Upozorňujeme, že nie všetky zariadenia AVR obsahujú rozšírenú mapu I / O.
Kapacitné snímanie dotyku
Atmel QTouch Library poskytuje jednoducho použiteľné riešenie pre dotykové rozhrania na mikroovládačoch Atmel AVR. Knižnica QTouch Library obsahuje podporu pre metódy získavania QTouch® a QMatrix®.
Dotykové snímanie sa ľahko pridáva do akejkoľvek aplikácie prepojením knižnice QTouch a použitím aplikačného programovacieho rozhrania (API) knižnice na definovanie dotykových kanálov a senzorov. Aplikácia potom zavolá API, aby získala informácie o kanáli a určila stav dotykového snímača.
Knižnica QTouch je bezplatná a dá sa stiahnuť z webu Atmel webstránky. Ďalšie informácie a podrobnosti o implementácii nájdete v používateľskej príručke knižnice QTouch - k dispozícii aj od spoločnosti Atmel webstránky.
Uchovávanie údajov
Výsledky kvalifikácie spoľahlivosti ukazujú, že predpokladaná miera zlyhania uchovania údajov je oveľa menej ako 1 PPM počas 20 rokov pri 85 ° C alebo 100 rokov pri 25 ° C.
Jadro procesora AVR
Úvod
Táto časť všeobecne pojednáva o architektúre jadra AVR. Hlavnou funkciou jadra CPU je zabezpečiť správne vykonávanie programu. CPU preto musí byť schopné prístupu k pamätiam, vykonávania výpočtov, riadenia periférií a spracovania prerušenia.
Architektonický koniecview
Aby sa maximalizoval výkon a paralelnosť, používa AVR harvardskú architektúru - so samostatnými pamäťami a zbernicami pre program a dáta. Pokyny v programovej pamäti sú vykonávané s jednou úrovňou pipeline. Pokiaľ sa vykonáva jedna inštrukcia, ďalšia inštrukcia sa vopred vyzdvihne z pamäte programu. Táto koncepcia umožňuje vykonávanie pokynov v každom hodinovom cykle. Pamäť programu je programovateľná pamäť typu Flash zabudovaná v systéme.
Register s rýchlym prístupom File obsahuje 32 x 8-bitových všeobecných pracovných registrov s prístupovým časom jedného hodinového cyklu. To umožňuje jednocyklovú prevádzku aritmetickej logickej jednotky (ALU). V typickej operácii ALU sú z registra výstupom dva operandy File, operácia sa vykoná a výsledok sa uloží späť do registra File- v jednom hodinovom cykle.
Šesť z 32 registrov možno použiť ako tri 16-bitové ukazovatele nepriameho adresného registra na adresovanie dátového priestoru - čo umožňuje efektívne výpočty adries. Jeden z týchto ukazovateľov adresy možno použiť aj ako ukazovateľ adresy na vyhľadanie tabuliek v pamäti programu Flash. Týmito pridanými funkčnými registrami sú 16-bitový register X, Y a Z, ktorý je opísaný ďalej v tejto časti.
ALU podporuje aritmetické a logické operácie medzi registrami alebo medzi konštantou a registrom. V ALU je možné vykonávať aj operácie jedného registra. Po aritmetickej operácii sa stavový register aktualizuje, aby odrážal informácie o výsledku operácie.
Priebeh programu je zabezpečený podmienenými a bezpodmienečnými pokynmi na skok a volanie, ktoré sú schopné priamo adresovať celý adresný priestor. Väčšina inštrukcií AVR má jediný 16-bitový formát slova, ale existujú aj 32-bitové pokyny.
Počas prerušenia a hovoru podprogramu sa v zásobníku uloží spätná adresa Program Counter (PC). Zásobník je efektívne alokovaný vo všeobecných údajoch SRAM, a preto je veľkosť zásobníka obmedzená iba celkovou veľkosťou SRAM a využitím SRAM. Všetky užívateľské programy musia inicializovať SP v rutine Reset (predtým, ako sa vykonajú podprogramy alebo prerušenia). Stack Pointer (SP) je na čítanie / zápis prístupný v I / O priestore. K dátam SRAM je možné ľahko získať prístup prostredníctvom piatich rôznych režimov adresovania podporovaných v architektúre AVR.
Pamäťové priestory v architektúre AVR sú lineárne a bežné pamäťové mapy.
Flexibilný modul prerušenia má svoje riadiace registre v I / O priestore s ďalším bitom Global Interrupt Enable v registri stavu. Všetky prerušenia majú v tabuľke Interrupt Vector samostatný vektor prerušenia. Prerušenia majú prioritu v súlade s ich pozíciou vektora prerušenia. Čím nižšia je adresa vektora prerušenia, tým vyššia je priorita.
Pamäťový priestor I/O obsahuje 64 adries pre periférne funkcie CPU ako riadiace registre, SPI a ďalšie funkcie I/O. Do pamäte I/O je možné získať prístup priamo alebo ako do umiestnení dátového priestoru podľa registrátora File, 0x20 - 0x5F.
ALU - aritmetická logická jednotka
Vysokovýkonný AVR ALU pracuje v priamom spojení so všetkými 32 univerzálnymi pracovnými registrami. V rámci jediného hodinového cyklu sa vykonajú aritmetické operácie medzi registrami na všeobecné účely alebo medzi registrom a okamžitým záznamom. Operácie ALU sú rozdelené do troch hlavných kategórií - aritmetické, logické a bitové funkcie. Niektoré implementácie architektúry tiež poskytujú výkonný multiplikátor podporujúci podpísané / nepodpísané násobenie a zlomkový formát. Podrobný popis nájdete v časti „Instruction Set“.
Stavový register
Stavový register obsahuje informácie o výsledku naposledy vykonanej aritmetickej inštrukcie. Tieto informácie možno použiť na zmenu toku programu za účelom vykonania podmienených operácií. Pamätajte, že stavový register sa aktualizuje po všetkých operáciách ALU, ako sa uvádza v príručke k inštrukčnej sade. To v mnohých prípadoch odstráni potrebu používania vyhradených pokynov na porovnanie, čo povedie k rýchlejšiemu a kompaktnejšiemu kódu.
Stavový register sa neuloží automaticky pri zadaní rutiny prerušenia a obnoví sa po návrate z prerušenia. Musí to byť riešené softvérom.
SREG - Register stavu AVR
Register stavu AVR - SREG - je definovaný ako:
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3F | I | T | H | S | V | N | Z | C | SREG |
Čítanie/Písanie | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Počiatočná hodnota | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 7 - I: Globálne prerušenie je povolené
Aby boli prerušenia povolené, musí byť nastavený bit Global Interrupt Enable. Jednotlivé riadenie aktivácie prerušenia sa potom vykonáva v samostatných riadiacich registroch. Ak je vymazaný register globálneho prerušenia, žiadne z prerušení nie je povolené nezávisle od nastavenia jednotlivých povolení pre prerušenie. I-bit je po prerušení prerušený hardvérom a je nastavený inštrukciou RETI na povolenie ďalších prerušení. I-bit môže byť tiež nastavený a vymazaný aplikáciou s inštrukciami SEI a CLI, ako je opísané v príručke k súboru inštrukcií.
Bit 6 - T: Úložisko bitových kópií
Pokyny na kopírovanie bitov BLD (Bit LoaD) a BST (Bit STore) používajú T-bit ako zdroj alebo cieľ ovládaného bitu. Trochu z registra v registri File je možné skopírovať do T pomocou inštrukcie BST a bit v T je možné skopírovať do bitu v registri v registri File podľa inštrukcie BLD.
Bit 5 - H: Vlajka s polovičným prenášaním
Vlajka Half Carry H označuje v niektorých aritmetických operáciách Half Carry. Polovičné prenášanie je užitočné pri aritmetike BCD. Podrobné informácie nájdete v časti „Popis sady pokynov“.
Bit 4 – S: Sign Bit, S = N ⊕ V
S-bit je vždy exkluzívny alebo medzi záporným príznakom N a dvojitým príznakom pretečenia komplementu V. Podrobné informácie nájdete v časti „Popis sady inštrukcií“.
Bit 3 - V: Dvojka príznaku pretečenia komplementu
Príznak pretečenia dvojky doplnku V podporuje aritmetiku dvojkového doplnku. Podrobné informácie nájdete v časti „Popis sady pokynov“.
Bit 2 - N: Negatívna vlajka
Negatívny príznak N označuje negatívny výsledok v aritmetickej alebo logickej operácii. Podrobné informácie nájdete v časti „Popis sady pokynov“.
Bit 1 - Z: nulová vlajka
Nulový príznak Z označuje nulový výsledok v aritmetickej alebo logickej operácii. Podrobné informácie nájdete v časti „Popis sady pokynov“.
Bit 0 - C: Nosná vlajka
Nosná vlajka C označuje prenos v aritmetickej alebo logickej operácii. Podrobné informácie nájdete v časti „Popis sady pokynov“.
Register na všeobecné účely File
Register File je optimalizovaný pre sadu inštrukcií AVR Enhanced RISC. Aby sa dosiahla požadovaná výkonnosť a flexibilita, register podporuje nasledujúce schémy vstupu/výstupu File:
Jeden 8-bitový výstupný operand a jeden 8-bitový vstup výsledku
Dva 8-bitové výstupné operandy a jeden 8-bitový vstup výsledku
Dva 8-bitové výstupné operandy a jeden 16-bitový vstup výsledku
Jeden 16-bitový výstupný operand a jeden 16-bitový vstup výsledku
Obrázok 4-2 ukazuje štruktúru 32 všeobecných pracovných registrov v CPU.
Ako je uvedené v Obrázok 4-2, každému registru je tiež priradená adresa dátovej pamäte, ktorá ich mapuje priamo do prvých 32 miest užívateľského dátového priestoru. Napriek tomu, že táto pamäťová organizácia nie je fyzicky implementovaná ako umiestnenia SRAM, poskytuje veľkú flexibilitu v prístupe k registrom, pretože registre ukazovateľov X, Y a Z je možné nastaviť na indexovanie akéhokoľvek registra v file.Väčšina pokynov fungujúcich v registri File majú priamy prístup ku všetkým registrom a väčšina z nich je pokynmi pre jeden cyklus.
Register X, register Y a register Z.
Registre R26..R31 majú k svojmu univerzálnemu použitiu niektoré pridané funkcie. Tieto registre sú 16-bitové adresové ukazovatele na nepriame adresovanie dátového priestoru. Tri registre nepriamej adresy X, Y a Z sú definované tak, ako je opísané v Obrázok 4-3.
V rôznych režimoch adresovania majú tieto registre adries funkcie ako pevné posunutie, automatické zvyšovanie a automatické znižovanie (podrobnosti nájdete v príručke k súboru inštrukcií).
Ukazovateľ zásobníka
Zásobník sa používa hlavne na ukladanie dočasných údajov, na ukladanie lokálnych premenných a na ukladanie spiatočných adries po prerušení a volaniach podprogramov. Register ukazovateľa zásobníka vždy ukazuje na hornú časť zásobníka. Pamätajte, že zásobník je implementovaný tak, že rastie z vyšších miest pamäte do nižších miest pamäte. To znamená, že príkaz Stack PUSH znižuje ukazovateľ Stack.
Ukazovateľ zásobníka ukazuje na dátovú oblasť zásobníka SRAM, kde sú umiestnené zásobníky podprogramov a prerušenia. Tento stohovací priestor v dátach SRAM musí byť programom definovaný pred vykonaním akýchkoľvek volaní podprogramov alebo pred povolením prerušenia. Ukazovateľ stohu musí byť nastavený na bod nad 0x60. Ukazovateľ zásobníka sa zníži o jeden, keď sa dáta na server natlačia pomocou inštrukcie PUSH, a zníži sa o dva, keď sa návratová adresa natlačí na zásobník s volaním alebo prerušením podprogramu. Ukazovateľ zásobníka sa zvýši o jeden, keď sa údaje zo zásobníka odošlú pomocou inštrukcie POP, a zvýši sa o dva, keď sa údaje zo zásobníka odoberú s návratom z podprogramu RET alebo návratom z prerušenia RETI.
AVR Stack Pointer je implementovaný ako dva 8-bitové registre v I / O priestore. Počet skutočne použitých bitov závisí od implementácie. Pamätajte, že dátový priestor v niektorých implementáciách architektúry AVR je taký malý, že je potrebný iba SPL. V takom prípade nebude register SPH prítomný.
SPH a SPL - register ukazovateľa zásobníka
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 | ||
Čítanie/Písanie | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Čítanie/Písanie | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Počiatočná hodnota | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | |
Počiatočná hodnota | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND |
Načasovanie vykonania pokynu
Táto časť popisuje všeobecné koncepty časovania prístupu na vykonávanie pokynov. AVR CPU je poháňaný hodinami CPU clkCPU, priamo generovanými z vybraného zdroja hodín pre čip. Nie je použité žiadne vnútorné delenie hodín.
Obrázok 4-4 ukazuje súbežné načítanie inštrukcií a vykonávanie inštrukcií povolené architektúrou Harvard a registrom rýchleho prístupu File koncept. Toto je základný koncept pipeline na získanie až 1 MIPS na MHz so zodpovedajúcimi jedinečnými výsledkami pre funkcie za cenu, funkcie za hodiny a funkcie za výkonovú jednotku.
Obrázok 4-5. Jednocyklová prevádzka ALU
Reset a prerušenie spracovania
AVR poskytuje niekoľko rôznych zdrojov prerušenia. Tieto prerušenia a samostatný resetovací vektor majú v programovom pamäťovom priestore samostatný programový vektor. Všetkým prerušeniam sú priradené jednotlivé aktivačné bity, ktoré musia byť napísané logicky spolu s bitom Global Interrupt Enable v registri stavov, aby sa prerušenie umožnilo.
Najnižšie adresy v pamäti programu sú štandardne definované ako vektory resetovania a prerušenia. Celý zoznam vektorov je uvedený v „Prerušenia“ na stránke 48. Zoznam tiež určuje úrovne priority rôznych prerušení. Čím nižšia je adresa, tým vyššia je úroveň priority. RESET má najvyššiu prioritu a ďalším je INT0 - externá požiadavka na prerušenie 0.
Keď dôjde k prerušeniu, bit I globálneho prerušenia povolenia sa vymaže a všetky prerušenia sa deaktivujú. Softvér užívateľa môže napísať logický jeden na I-bit, aby umožnil vnorené prerušenia. Všetky povolené prerušenia môžu potom prerušiť aktuálnu rutinu prerušenia. I-bit sa automaticky nastaví, keď sa vykoná inštrukcia Návrat z prerušenia - RETI.
V zásade existujú dva typy prerušenia. Prvý typ je spustený udalosťou, ktorá nastaví príznak prerušenia. Pre tieto prerušenia sa programové počítadlo vektoruje do skutočného vektora prerušenia, aby sa vykonala rutina spracovania prerušenia, a hardvér vymaže zodpovedajúci príznak prerušenia. Príznaky prerušenia možno tiež vymazať napísaním logického signálu na pozíciu (-y) vlajkového bitu, ktoré sa majú vyčistiť. Ak nastane podmienka prerušenia, kým sa zruší zodpovedajúci bit aktivácie prerušenia, nastaví sa príznak prerušenia a bude sa pamätať, kým sa prerušenie nepovolí, alebo kým sa príznak nevymaže softvérom. Podobne, ak dôjde k vymazaniu jednej alebo viacerých podmienok prerušenia, kým je bit Global Interrupt Enable vymazaný, nastaví sa zodpovedajúci príznak (y) prerušenia a bude sa pamätať, kým sa nenastaví bit Global Interrupt Enable, a potom sa vykonajú podľa priority.
Druhý typ prerušenia sa spustí, pokiaľ je splnená podmienka prerušenia. Tieto prerušenia nemusia mať nevyhnutne príznaky prerušenia. Ak podmienka prerušenia zmizne pred povolením prerušenia, prerušenie sa nespustí.
Keď AVR vystúpi z prerušenia, vždy sa vráti do hlavného programu a vykoná ešte jednu inštrukciu predtým, ako sa zobrazí čakajúce prerušenie.
Pamätajte, že stavový register sa automaticky neuloží pri zadaní rutiny prerušenia ani sa neobnoví po návrate z rutiny prerušenia. Musí to byť riešené softvérom.
Pri použití príkazu CLI na deaktiváciu prerušení budú prerušenia okamžite deaktivované. Po inštrukcii CLI sa nevykoná žiadne prerušenie, aj keď nastane súčasne s inštrukciou CLI. Nasledujúca example ukazuje, ako sa to dá použiť na zabránenie prerušeniam počas časovanej sekvencie zápisu EEPROM.
Montážny kód Example |
v r16, SREG; uložiť hodnotu SREG
cli; zakázať prerušenia počas časovanej sekvencie sbi EECR, EEMPE ; spustiť zápis do EEPROM sbi EECR, EEPE von SREG, r16; obnoviť hodnotu SREG (I-bit) |
C kód Example |
char cSREG;
cSREG = SREG; /* uložiť hodnotu SREG */ /* zakáže prerušenia počas časovanej sekvencie */ _CLI (); EECR |= (1< EECR | = (1 < SREG = cSREG; /* obnoviť hodnotu SREG (I-bit) */ |
Pri použití pokynu SEI na povolenie prerušenia sa inštrukcia nasledujúca po SEI vykoná pred akýmkoľvek čakajúcim prerušením, ako je uvedené v tomto ex.ample.
Montážny kód Example |
sei; nastavte Global Interrupt Enable
spánok; vstúpiť do spánku a čakať na prerušenie ; poznámka: prejde do režimu spánku pred čakaním ; prerušenie |
C kód Example |
_SEI(); /* nastaviť Global Interrupt Enable */
_SPÁNOK(); /* vstúpiť do režimu spánku, čakať na prerušenie */ / * poznámka: prejde do režimu spánku pred akýmkoľvek čakajúcim prerušením * / |
Čas prerušenia reakcie
Odozva na vykonanie prerušenia pre všetky povolené prerušenia AVR sú minimálne štyri cykly hodín. Po štyroch cykloch hodín sa vykoná adresa programového vektora pre skutočnú rutinu spracovania prerušenia. Počas tejto doby štyroch cyklov hodín sa programový počítadlo natlačí na zásobník. Vektorom je zvyčajne skok na rutinu prerušenia a tento skok trvá tri hodiny. Ak dôjde k prerušeniu počas vykonávania viaccyklovej inštrukcie, táto inštrukcia sa dokončí pred vykonaním prerušenia. Ak dôjde k prerušeniu, keď je MCU v režime spánku, čas odozvy na vykonanie prerušenia sa zvýši o štyri hodiny. Toto zvýšenie prichádza navyše s dobou spustenia z vybraného režimu spánku.
Návrat z rutiny spracovania prerušenia trvá štyri hodiny. Počas týchto štyroch cyklov hodín sa programový počítadlo (dva bajty) vysunie späť zo zásobníka, ukazovateľ zásobníka sa zvýši o dva a nastaví sa I-bit v SREG.
Spomienky AVR
Táto časť popisuje rôzne pamäte v ATtiny25 / 45/85. Architektúra AVR má dva hlavné pamäťové priestory, dátovú pamäť a pamäť programu. ATtiny25 / 45/85 je navyše vybavený pamäťou EEPROM na ukladanie dát. Všetky tri pamäťové priestory sú lineárne a pravidelné.
V systéme preprogramovateľná programová pamäť Flash
ATtiny25 / 45/85 obsahuje 2/4 / 8K bajtov zabudovanú systémovo preprogramovateľnú pamäť typu Flash na ukladanie programov. Pretože sú všetky pokyny AVR široké 16 alebo 32 bitov, program Flash je usporiadaný do formátu 1024/2048/4096 x 16.
Flash pamäť má výdrž minimálne 10,000 25 cyklov zápisu a vymazania. Počítadlo programov ATtiny45 / 85/10 (PC) má šírku 11/12/1024 bitov, čím adresuje pamäťové miesta programu 2048/4096/XNUMX. „Pamäťový program- ming ”na strane 147 obsahuje podrobný popis sériového sťahovania dát Flash pomocou pinov SPI.
Konštantné tabuľky je možné alokovať v rámci celého adresného priestoru pamäte programu (pozri popis pokynov v pamäti LPM - Load Programme).
Obrázok 5-1. Mapa pamäte programu
Dátová pamäť SRAM
Obrázok 5-2 ukazuje, ako je organizovaná pamäť ATtiny25 / 45/85 SRAM.
Dolné 224/352/607 umiestnenia dátovej pamäte adresujú jednak Register File, pamäť I/O a interný dátový SRAM. Register je adresovaných prvých 32 miest File, ďalších 64 umiestnení štandardnej pamäte I/O a posledných 128/256/512 miest adresuje interný dátový SRAM.
Päť rôznych režimov adresovania pre pamäť údajov: Priame, Nepriame s posunutím, Nepriame, Nepresné s predbežným znížením a Nepriame s dodatočným zvýšením. V Registri FileRegistre R26 až R31 obsahujú registre ukazovateľov nepriameho adresovania.
Priame adresovanie zasahuje do celého dátového priestoru.
Režim nepriameho posuvu dosahuje 63 adries umiestnení zo základnej adresy zadanej registrom Y alebo Z.
Keď sa používajú režimy nepriameho adresovania registra s automatickým predbežným znižovaním a zvyšovaním, registre adries X, Y a Z sa znižujú alebo zvyšujú.
Prostredníctvom všetkých týchto režimov adresovania je prístupných 32 univerzálnych pracovných registrov, 64 I/O registrov a 128/256/512 bajtov interných dát SRAM v ATtiny25/45/85. Register File je opísaný v „Gen- registrovaný účel File“Na strane 10.
Obrázok 5-2. Mapa dátovej pamäte
Prístup k dátovej pamäti Times
Táto časť popisuje všeobecné koncepcie časovania prístupu pre prístup k internej pamäti. Prístup k interným dátam SRAM sa vykonáva v dvoch cykloch clkCPU, ako je opísané v Obrázok 5-3.
Obrázok 5-3. Cykly prístupu k údajom SRAM na čipe Dátová pamäť EEPROM
ATtiny25 / 45/85 obsahuje 128/256/512 bajtov dátovej pamäte EEPROM. Je usporiadaný ako samostatný dátový priestor, v ktorom je možné čítať a zapisovať jednotlivé bajty. EEPROM má výdrž najmenej 100,000 XNUMX cyklov zápisu a vymazania. Ďalej je opísaný prístup medzi EEPROM a CPU, pričom sú špecifikované registre adries EEPROM, dátový register EEPROM a riadiaci register EEPROM. Podrobnosti pozri “Sériové sťahovanie” na strane 151.
Prístup EEPROM na čítanie a zápis
Prístupové registre EEPROM sú prístupné v I / O priestore.
Časy prístupu na zápis pre EEPROM sú uvedené v Tabuľka 5-1 na strane 21. Funkcia samočasovania však umožňuje používateľskému softvéru zistiť, kedy je možné zapísať ďalší bajt. Ak používateľský kód obsahuje pokyny, ktoré zapisujú do EEPROM, je potrebné prijať určité opatrenia. V silne filtrovaných zdrojoch napájania VCC pravdepodobne pomaly stúpa alebo klesá
Zapnutie/vypnutie. To spôsobí, že zariadenie nejaký čas pobeží na voltage nižšie, ako je špecifikované ako minimum pre použitú hodinovú frekvenciu. Pozri “Predchádzanie poškodeniu EEPROM” na strane 19 Podrobnosti o tom, ako sa vyhnúť problémom v týchto situáciách.
Aby sa zabránilo neúmyselnému zápisu do pamäte EEPROM, je potrebné dodržať konkrétny postup zápisu. Odkazujú na "Atómová." Programovanie bajtov “na strane 17 a “Programovanie rozdeleného bytu” na strane 17 pre podrobnosti o tomto.
Keď sa číta EEPROM, CPU sa zastaví na štyri hodinové cykly pred vykonaním ďalšej inštrukcie. Keď je zapísaná EEPROM, CPU sa zastaví na dva taktové cykly pred vykonaním ďalšej inštrukcie.
Atómové programovanie bajtov
Používanie programovania atómových bajtov je najjednoduchší režim. Pri zápise bajtu do EEPROM musí užívateľ zapísať adresu do registra EEAR a údaje do registra EEDR. Ak sú bity EEPMn nulové, zápis EEPE (do štyroch cyklov po zápise EEMPE) spustí operáciu mazania / zápisu. Cyklus mazania aj zápisu sa vykonáva v jednej operácii a celkový čas programovania je uvedený v Tabuľka 5-1 na strane 21. Bit EEPE zostáva nastavený, kým nie sú dokončené operácie mazania a zápisu. Pokiaľ je prístroj zaneprázdnený programovaním, nie je možné vykonávať žiadne ďalšie operácie EEPROM.
Programovanie rozdeleného bajtu
Cyklus vymazávania a zápisu je možné rozdeliť na dve rôzne operácie. To môže byť užitočné, ak systém vyžaduje krátky prístupový čas na určité obmedzené časové obdobie (zvyčajne ak napájací zdroj voltage padá). Aby ste urobili pokrok- tagPri tejto metóde sa požaduje, aby boli miesta, ktoré sa majú zapísať, vymazané pred operáciou zápisu. Pretože sú však operácie mazania a zápisu rozdelené, je možné operácie mazania vykonávať vtedy, keď systém umožňuje vykonávať časovo kritické operácie (spravidla po zapnutí).
Vymazať
Ak chcete vymazať bajt, adresa musí byť napísaná na EEAR. Ak sú bity EEPMn 0b01, zápis EEPE (do štyroch cyklov po zápise EEMPE) spustí iba operáciu mazania (čas programovania je uvedený v Tabuľka 5-1 ďalej strana 21). Bit EEPE zostáva nastavený, kým sa operácia vymazania nedokončí. Pokiaľ je zariadenie zaneprázdnené programovaním, nie je možné vykonávať žiadne ďalšie operácie EEPROM.
Napíšte
Ak chcete zapísať umiestnenie, musí používateľ napísať adresu do EEAR a údaje do EEDR. Ak sú bity EEPMn 0b10, zápis EEPE (do štyroch cyklov po zápise EEMPE) spustí iba operáciu zápisu (čas programovania je uvedený v Tabuľka 5-1 na strane 21). Bit EEPE zostáva nastavený, kým sa operácia zápisu nedokončí. Ak miesto určené na zápis nebolo pred zápisom vymazané, musia sa uložené údaje považovať za stratené. Pokiaľ je prístroj zaneprázdnený programovaním, nie je možné vykonávať žiadne ďalšie operácie EEPROM.
Kalibrovaný oscilátor sa používa na načasovanie prístupu do EEPROM. Uistite sa, že frekvencia oscilátora je v súlade s požiadavkami popísanými v “OSCCAL - Register kalibrácie oscilátora” na strane 31.
Nasledujúci kód napramples show one assembly and one C function for erase, write, or atomic write of EEPROM. Bývalýamppredpokladajme, že prerušenia sú riadené (napr. globálnym vypnutím prerušení) tak, aby počas vykonávania týchto funkcií nedochádzalo k žiadnym prerušeniam.
Montážny kód Example |
EEPROM_write:
; Počkajte na dokončenie predchádzajúceho zápisu sbic EECR,EEPE rjmp EEPROM_write ; Nastavte režim programovania ldi r16, (0<<EEPM1)|(0<<EEPM0) z EECR, r16 ; Nastavte adresu (r18: r17) v registri adries von EEARH, r18 von EEARL, r17 ; Zapíšte údaje (r19) do dátového registra von EEDR, r19 ; Napíš logický na EEMPE sbi EECR, EEMPE ; Začnite písať eeprom nastavením EEPE sbi EECR,EEPE ret |
C kód Example |
void EEPROM_write(unsigned char ucAddress, unsigned char ucData)
{ /* Počkajte na dokončenie predchádzajúceho zápisu */ while(EECR & (1< ; /* Nastaviť režim programovania */ EECR = (0 < / * Nastaviť registre adries a údajov * / EEAR = ucAddress; EEDR = ucData; /* Napíšte logickú jednotku do EEMPE */ EECR | = (1 < / * Začnite písať eeprom nastavením EEPE * / EECR | = (1 < } |
Ďalší kód naprampukazujú zostavu a C funkcie na čítanie EEPROM. Bývalýamppredpokladáme, že prerušenia sú riadené tak, aby počas vykonávania týchto funkcií nedochádzalo k žiadnym prerušeniam.
Montážny kód Example |
EEPROM_read:
; Počkajte na dokončenie predchádzajúceho zápisu sbic EECR,EEPE rjmp EEPROM_read ; Nastavte adresu (r18: r17) v registri adries von EEARH, r18 von EEARL, r17 ; Začnite čítať eeprom napísaním EERE sbi EECR,EERE ; Načítať údaje z dátového registra v r16, EEDR ret |
C kód Example |
unsigned char EEPROM_read(unsigned char ucAddress)
{ / * Počkajte na dokončenie predchádzajúceho zápisu * / while (EECR & (1 < ; / * Nastaviť register adries * / EEAR = ucAddress; /* Spustite čítanie eeprom napísaním EERE */ EECR | = (1 < / * Vrátiť údaje z dátového registra * / spiatočný EEDR; } |
Prevencia poškodenia EEPROM
Počas obdobia nízkej hodnoty VCC môžu byť dáta EEPROM poškodené, pretože napájací objemtage je príliš nízka na to, aby procesor a EEPROM správne fungovali. Tieto problémy sú rovnaké ako pre systémy na úrovni dosky používajúce EEPROM a mali by sa použiť rovnaké konštrukčné riešenia.
Poškodenie údajov EEPROM môže byť spôsobené dvoma situáciami, keď svtage je príliš nízka. Po prvé, pravidelná sekvencia zápisu do EEPROM vyžaduje minimálny objemtage fungovať správne. Za druhé, samotný procesor CPU môže nesprávne vykonávať inštrukcie, ak napájací zdroj voltage je príliš nízke.
Poškodeniu údajov v pamäti EEPROM sa dá ľahko vyhnúť dodržaním tohto návrhového odporúčania:
Udržujte AVR RESET aktívny (nízky) počas období nedostatočného napájania objtage. To sa dá dosiahnuť povolením interného detektora zhasnutia (BOD). Ak sa úroveň detekcie interného BSK nezhoduje s
potrebnú úroveň detekcie, možno použiť externý ochranný obvod resetovania nízkeho VCC. Ak dôjde k resetu počas operácie zápisu, operácia zápisu sa dokončí za predpokladu, že napájací zdroj objtage je dostačujúce.
I / O pamäť
Definícia I / O priestoru ATtiny25 / 45/85 je uvedená v „Súhrn registrácie“ na strane 200.
Všetky I / O ATtiny25 / 45/85 a periférie sú umiestnené v I / O priestore. Podľa pokynov LD / LDS / LDD a ST / STS / STD možno ku všetkým I / O umiestneniam pristupovať a prenášať údaje medzi 32 všeobecnými pracovnými registrami a I / O priestorom. I / O registre v rozsahu adries 0x00 - 0x1F sú priamo bitovo prístupné pomocou pokynov SBI a CBI. V týchto registroch je možné skontrolovať hodnotu jednotlivých bitov pomocou pokynov SBIS a SBIC. Ďalšie informácie nájdete v časti s inštrukciami. Pri použití špecifických I / O príkazov IN a OUT je potrebné použiť I / O adresy 0x00 - 0x3F. Pri adresovaní I / O registrov ako dátového priestoru pomocou pokynov LD a ST musí byť na tieto adresy pridaná hodnota 0x20.
Kvôli kompatibilite s budúcimi zariadeniami by sa rezervované bity mali pri prístupe zapisovať na nulu. Rezervované adresy I / O pamäte by nikdy nemali byť zapísané.
Niektoré zo stavových vlajok sú vymazané tak, že im napíšete logickú. Upozorňujeme, že pokyny CBI a SBI budú pracovať iba so zadaným bitom, a preto ich možno použiť v registroch obsahujúcich tieto stavové príznaky. Pokyny CBI a SBI pracujú iba s registrami 0x00 až 0x1F.
I / O a periférne riadiace registre sú vysvetlené v ďalších častiach.
Popis registrácie
EEARH - Register adries EEPROM
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1F | – | – | – | – | – | – | – | EEAR8 | VÝŠKA |
Čítanie/Písanie | R | R | R | R | R | R | R | R/W | |
Počiatočná hodnota | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X/0 |
Bity 7: 1 - Res: Rezervované bity
Tieto bity sú vyhradené pre budúce použitie a budú sa vždy čítať ako nula.
Bity 0 - EEAR8: adresa EEPROM
Toto je najvýznamnejší bit adresy EEPROM ATtiny85. V zariadeniach s menšou EEPROM, tj. ATtiny25 / ATtiny45, je tento bit vyhradený a bude vždy čítať nulu. Počiatočná hodnota adresára EEPROM (EEAR) nie je definovaná a pred prístupom do EEPROM musí byť preto napísaná správna hodnota.
EEARL - register adries 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čiatočná hodnota | X | X | X | X | X | X | X | X |
Bit 7 - EEAR7: adresa EEPROM
Toto je najvýznamnejší bit adresy EEPROM ATtiny45. V zariadeniach s menšou EEPROM, tj. ATtiny25, je tento bit vyhradený a bude vždy čítať nulu. Počiatočná hodnota EEPROM adresného registra (EEAR) nie je definovaná a pred prístupom do EEPROM musí byť preto napísaná správna hodnota.
Bity 6: 0 - EEAR [6: 0]: adresa EEPROM
Toto sú (nízke) bity registra adries EEPROM. Dátové bajty EEPROM sú adresované lineárne v rozsahu 0… (128/256 / 512-1). Počiatočná hodnota EEAR je nedefinovaná a pred prístupom do EEPROM musí byť preto napísaná správna hodnota.
EEDR - register údajov EEPROM
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1D | EEDR7 | EEDR6 | EEDR5 | EEDR4 | EEDR3 | EEDR2 | EEDR1 | EEDR0 | EEDR |
Čítanie/Písanie | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Počiatočná hodnota | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Pre operáciu zápisu na EEPROM obsahuje register EEDR údaje, ktoré sa majú zapísať do EEPROM na adresu uvedenú v registri EEAR. Pre operáciu čítania EEPROM obsahuje EEDR údaje načítané z
EEPROM na adresu uvedenú v EEAR.
5.5.4 Riadiaci register EECR - EEPROM |
|||||||||
Bit 7 6 5 | 4 | 3 | 2 | 1 | 0 | ||||
0x1C – | – | EEPM1 | EEPM0 | EERIE | EEMPE | EEPE | EERE | EHSR | |
Čítanie / zápis R R R / W | R/W | R/W | R/W | R/W | R/W | ||||
Počiatočná hodnota 0 0 X | X | 0 | 0 | X | 0 |
Bit 7 - Res: Rezervovaný bit
Tento bit je vyhradený pre budúce použitie a v ATtiny0/25/45 bude vždy čítaný ako 85. Kvôli kompatibilite s budúcimi zariadeniami AVR vždy tento bit zapisujte na nulu. Po prečítaní tento kúsok maskujte.
Bit 6 - Res: Rezervovaný bit
Tento bit je rezervovaný v ATtiny25 / 45/85 a bude sa vždy čítať ako nula.
Bity 5: 4 - EEPM [1: 0]: Bity programovacieho režimu EEPROM
Nastavenie bitov programovacieho režimu EEPROM definuje, ktorá programovacia akcia sa spustí pri zápise EEPE. Je možné programovať údaje v jednej atómovej operácii (vymazať starú hodnotu a naprogramovať novú hodnotu) alebo rozdeliť operácie Vymazať a Zápis na dve rôzne operácie. Programovacie časy pre rôzne režimy sú zobrazené v Tabuľka 5-1. Pokiaľ je nastavený EEPE, všetky zápisy do EEPMn budú ignorované. Počas resetovania sa bity EEPMn resetujú na 0b00, pokiaľ EEPROM nie je zaneprázdnená programovaním.
Tabuľka 5-1. Bity režimu EEPROM
EEPM1 | EEPM0 | Čas programovania | Prevádzka |
0 | 0 | 3.4 ms | Vymazanie a zápis v jednej operácii (atómová operácia) |
0 | 1 | 1.8 ms | Iba vymazanie |
1 | 0 | 1.8 ms | Len napíš |
1 | 1 | – | Vyhradené pre budúce použitie |
Bit 3 - EERIE: EEPROM Ready Interrupt Enable
Zápis EERIE do jednej umožní prerušenie pripravenosti EEPROM, ak je nastavený I-bit v SREG. Zápis EERIE na nulu zruší prerušenie. Keď je energeticky nezávislá pamäť pripravená na programovanie, prerušenie pripravenosti na pamäť EEPROM generuje neustále prerušenie.
Bit 2 - EEMPE: EEPROM hlavný program povolený
Bit EEMPE určuje, či zápis EEPE do jedného bude mať efekt alebo nie.
Keď je nastavený EEMPE, nastavenie EEPE do štyroch cyklov hodín naprogramuje EEPROM na vybranú adresu. Ak je EEMPE nulová, nastavenie EEPE nebude mať žiadny vplyv. Keď je EEMPE zapísaný do jedného softvérom, hardvér vymaže bit na nulu po štyroch cykloch hodín.
Bit 1 - EEPE: EEPROM Program Enable
Signál EEPROM Program Enable Signal EEPE je signál umožňujúci programovanie do EEPROM. Keď sa napíše EEPE, EEPROM sa naprogramuje podľa nastavenia bitov EEPMn. Bit EEMPE musí byť zapísaný do jednej pred zápisom logickej do EEPE, inak nedôjde k žiadnemu zápisu do EEPROM. Po uplynutí doby prístupu na zápis sa hardvérovo vymaže bit EEPE. Keď je nastavený EEPE, CPU sa zastaví na dva cykly pred vykonaním ďalšej inštrukcie.
Bit 0 - EERE: EEPROM Read Enable
Signál EEPROM Read Enable - EERE - je čítací stroboskop na EEPROM. Keď je v registri EEAR nastavená správna adresa, musí sa bit EERE zapísať do jednej, aby sa spustilo čítanie EEPROM. Prístup na čítanie EEPROM vyžaduje jednu inštrukciu a požadované údaje sú okamžite k dispozícii. Keď sa číta EEPROM, CPU sa zastaví na štyri cykly pred vykonaním ďalšej inštrukcie. Používateľ by mal pred začatím operácie čítania vyzvať bit EEPE. Ak prebieha operácia zápisu, nie je možné čítať EEPROM ani meniť register EEAR.
Systémové hodiny a možnosti hodín
Hodinové systémy a ich distribúcia
CPU hodiny
Hodiny CPU sú smerované do častí systému, ktoré sa týkajú prevádzky jadra AVR. Naprampsúbory týchto modulov sú všeobecným registrom File, stavový register a dátová pamäť držiace ukazovateľ zásobníka. Zastavenie hodín CPU bráni jadru vo vykonávaní všeobecných operácií a výpočtov.
I / O hodiny - clkI / O
Hodiny I / O používa väčšina I / O modulov, napríklad Timer / Counter. Hodiny I / O používa aj modul externého prerušenia, treba si však uvedomiť, že niektoré externé prerušenia sú detekované asynchrónnou logikou, čo umožňuje detegovať tieto prerušenia, aj keď sú hodiny I / O zastavené.
Flash hodiny - clkFLASH
Hodiny Flash riadia činnosť rozhrania Flash. Hodiny Flash sú zvyčajne aktívne súčasne s hodinami CPU.
Hodiny ADC - clkADC
ADC je vybavený vyhradenou doménou hodín. To umožňuje zastavenie hodín CPU a I / O s cieľom znížiť šum generovaný digitálnymi obvodmi. Takto získate presnejšie výsledky prevodu ADC.
Interný PLL pre rýchlu generáciu periférnych hodín - clkPCK
Interná PLL v ATtiny25 / 45/85 generuje taktovú frekvenciu, ktorá je 8x vynásobená vstupom zdroja. Štandardne PLL používa ako zdroj výstup z interného RC oscilátora 8.0 MHz. Alternatívne, ak je nastavený bit LSM PLLCSR, PLL použije výstup RC oscilátora vydelený dvoma. Teda výstup PLL, rýchly periférny takt je 64 MHz. Rýchle periférne hodiny alebo z nich prednastavené hodiny je možné zvoliť ako zdroj hodín pre časovač / počítadlo1 alebo ako systémové hodiny. Pozri Obrázok 6-2. Frekvencia rýchlych periférnych hodín sa pri nastavení LSM PLLCSR vydelí dvoma, výsledkom čoho je hodinová frekvencia 32 MHz. Všimnite si, že LSM nemožno nastaviť, ak sa PLLCLK používa ako systémové hodiny.
Obrázok 6-2. Hodinový systém PCK.
PLL je uzamknutý na RC oscilátore a nastavením RC oscilátora cez register OSCCAL sa súčasne nastavia rýchle periférne hodiny. Avšak aj keď je RC oscilátor privedený na vyššiu frekvenciu ako 8 MHz, rýchla periférna frekvencia hodín saturuje na 85 MHz (najhorší prípad) a zostáva oscilujúca na maximálnej frekvencii. Je potrebné poznamenať, že PLL v tomto prípade už nie je blokovaný hodinami RC oscilátora. Preto sa odporúča nevykonávať úpravy OSCCAL na vyššiu frekvenciu ako 8 MHz, aby sa PLL udržiaval v správnom prevádzkovom rozsahu.
Interný PLL je povolený, keď:
Nastaví sa bit PLLE v registri PLLCSR.
Poistka CKSEL je naprogramovaná na „0001“.
Poistka CKSEL je naprogramovaná na „0011“.
Bit PLLCSR PLOCK je nastavený, keď je PLL uzamknutý. Vnútorný RC oscilátor aj PLL sú vypnuté v režime vypnutia a pohotovostného režimu spánku.
Interné PLL v režime kompatibility ATtiny15
Pretože ATtiny25 / 45/85 je migračné zariadenie pre používateľov ATtiny15, existuje režim kompatibility ATtiny15 pre spätnú kompatibilitu. Režim kompatibility ATtiny15 sa vyberá programovaním poistiek CKSEL na „0011“.
V režime kompatibility ATtiny15 je frekvencia vnútorného RC oscilátora kalibrovaná až na 6.4 MHz a multiplikačný faktor PLL je nastavený na 4x. Pozri Obrázok 6-3. S týmito úpravami je taktovací systém kompatibilný s ATtiny15 a výsledné rýchle periférne hodiny majú frekvenciu 25.6 MHz (rovnaká ako v ATtiny15).
Obrázok 6-3. Hodinový systém PCK v režime kompatibility ATtiny15.
Zdroje hodín
Zariadenie má nasledujúce možnosti zdroja hodín, ktoré je možné zvoliť bitmi Flash Fuse, ako je znázornené nižšie. Hodiny zo zvoleného zdroja sa vstupujú do generátora hodín AVR a smerujú do príslušných modulov.
Tabuľka 6-1. Možnosti hodiny zariadenia Vyberte
Možnosť sledovania zariadenia | CKSEL[3:0](1) |
Vonkajšie hodiny (pozri strana 26) | 0000 |
Vysokofrekvenčné hodiny PLL (pozri strana 26) | 0001 |
Kalibrovaný interný oscilátor (pozri strana 27) | 0010(2) |
Kalibrovaný interný oscilátor (pozri strana 27) | 0011(3) |
Interný 128 kHz oscilátor (pozri strana 28) | 0100 |
Nízkofrekvenčný kryštálový oscilátor (pozri strana 29) | 0110 |
Krištáľový oscilátor / keramický rezonátor (pozri strana 29) | 1000 – 1111 |
Rezervované | 0101, 0111 |
Pre všetky poistky „1“ znamená neprogramované, zatiaľ čo „0“ znamená naprogramované.
Zariadenie sa dodáva s vybratou touto možnosťou.
Týmto sa vyberie režim kompatibility ATtiny15, kde sú systémové hodiny vydelené štyrmi, čo vedie k hodinovej frekvencii 1.6 MHz. Viac informácií nájdete na „Kalibrovaný interný oscilátor“ na strane 27.
Rôzne možnosti pre každú možnosť taktovania sú uvedené v nasledujúcich častiach. Keď sa CPU prebudí z režimu Power down, zvolený zdroj hodín sa použije na načasovanie spustenia, čím sa zabezpečí stabilná prevádzka oscilátora pred začiatkom vykonávania inštrukcie. Keď sa procesor spustí od resetu, dôjde k ďalšiemu oneskoreniu, ktoré umožní napájaniu dosiahnuť stabilnú úroveň pred začatím normálnej prevádzky. Watchdog oscilátor sa používa na načasovanie tejto časti času spustenia v reálnom čase. Počet cyklov oscilátora WDT použitých pre každý časový limit je uvedený v Tabuľka 6-2.
Tabuľka 6-2. Počet cyklov oscilátora Watchdog
Typ Časový limit | Počet cyklov |
4 ms | 512 |
64 ms | 8K (8,192) |
Vonkajšie hodiny
Ak chcete riadiť zariadenie z externého zdroja hodín, CLKI by sa malo riadiť podľa obrázka Obrázok 6-4. Aby zariadenie fungovalo na externých hodinách, musia byť poistky CKSEL naprogramované na „00“.
Obrázok 6-4. Konfigurácia externého hodinového disku
Ak je vybraný tento zdroj hodín, časy spustenia sú určené poistkami SUT, ako je to znázornené na obrázku Tabuľka 6-3.
Tabuľka 6-3. Časy spustenia pre výber externých hodín
SUT[1:0] | Čas spustenia od vypnutia | Dodatočné oneskorenie od resetu | Odporúčané použitie |
00 | 6 CK | 14CK | BOD povolené |
01 | 6 CK | 14 CK + 4 ms | Rýchlo rastúci výkon |
10 | 6 CK | 14 CK + 64 ms | Pomaly stúpajúca sila |
11 | Rezervované |
Pri použití externých hodín je potrebné zabrániť náhlym zmenám použitej frekvencie hodín, aby sa zabezpečila stabilná prevádzka MCU. Zmena frekvencie o viac ako 2% od jedného hodinového cyklu k druhému môže viesť k nepredvídateľnému správaniu. Je potrebné zabezpečiť, aby sa MCU udržiavala v resetovaní počas takýchto zmien frekvencie hodín.
Upozorňujeme, že predpredaj systémových hodín je možné použiť na implementáciu zmien za chodu internej frekvencie hodín pri súčasnom zabezpečení stabilnej prevádzky. Odkazujú na „Predvoľba systémových hodín“ na strane 31 pre podrobnosti.
Vysokofrekvenčné hodiny PLL
K dispozícii je interný PLL, ktorý poskytuje nominálnu rýchlosť 64 MHz taktu uzamknutú v RC oscilátore pre použitie periférneho časovača / počítadla1 a pre zdroj systémových hodín. Ak je vybraný ako zdroj systémových hodín, programovaním poistiek CKSEL na „0001“ je vydelený štyrmi, ako je znázornené na obrázku Tabuľka 6-4.
Tabuľka 6-4. Prevádzkové režimy vysokofrekvenčných hodín PLL
CKSEL[3:0] | Nominálna frekvencia |
0001 | 16 MHz |
Ak je vybraný tento zdroj hodín, časy spustenia sú určené poistkami SUT, ako je to znázornené na obrázku Tabuľka 6-5.
Tabuľka 6-5. Časy spustenia pre vysokofrekvenčné hodiny PLL
SUT[1:0] | Čas spustenia od vypnutia | Dodatočné oneskorenie pri resetovaní pri zapnutí (VCC = 5.0 V) | Odporúčané použitie |
00 | 14 CK + 1K (1024) CK + 4 ms | 4 ms | BOD povolené |
Tabuľka 6-5. Časy spustenia pre vysokofrekvenčné hodiny PLL
SUT[1:0] | Čas spustenia od vypnutia | Dodatočné oneskorenie pri resetovaní pri zapnutí (VCC = 5.0 V) | Odporúčané použitie |
01 | 14 CK + 16K (16384) CK + 4 ms | 4 ms | Rýchlo rastúci výkon |
10 | 14 CK + 1K (1024) CK + 64 ms | 4 ms | Pomaly stúpajúca sila |
11 | 14 CK + 16K (16384) CK + 64 ms | 4 ms | Pomaly stúpajúca sila |
Kalibrovaný interný oscilátor
Interný RC oscilátor štandardne poskytuje hodiny približne 8.0 MHz. Aj keď zvtagTieto hodiny sú v závislosti od teploty a môžu byť veľmi presne kalibrované užívateľom. Viď „Kalibrovaný interný RC oscilátor Accu- racy “na strane 164 a „Rýchlosť interného oscilátora“ na stránke 192 pre viac detailov. Zariadenie sa dodáva s naprogramovanou poistkou CKDIV8. Pozri „Predvoľba systémových hodín“ na strane 31 pre viac podrobností.
Tieto hodiny je možné zvoliť ako systémové hodiny programovaním poistiek CKSEL, ako je to znázornené na obrázku Tabuľka 6-6 na strane
27. Ak je vybraté, bude fungovať bez externých komponentov. Počas resetu hardvér načíta predprogramovanú kalibračnú hodnotu do registra OSCCAL a tým automaticky kalibruje RC oscilátor. Presnosť tejto kalibrácie sa zobrazuje ako továrenská kalibrácia v Tabuľka 21-2 na strane 164.
Zmenou registra OSCCAL zo SW pozri “OSCCAL - Register kalibrácie oscilátora” na strane 31, je možné získať vyššiu presnosť kalibrácie ako pomocou továrenskej kalibrácie. Presnosť tejto kalibrácie sa zobrazuje ako kalibrácia používateľa v Tabuľka 21-2 na strane 164.
Ak sa tento oscilátor použije ako časovač čipu, oscilátor Watchdog sa bude stále používať pre časovač Watchdog a pre resetovanie. Viac informácií o predprogramovanej kalibračnej hodnote nájdete v tejto časti „Cali- bajtové bajty “na strane 150.
Interný oscilátor môže byť tiež nastavený na poskytovanie hodín 6.4 MHz písaním poistiek CKSEL na „0011“, ako je znázornené na Tabuľka 6-6 nižšie. Toto nastavenie sa označuje ako režim kompatibility ATtiny15 a jeho účelom je poskytnúť kalibrovaný zdroj hodín na 6.4 MHz, ako v prípade ATtiny15. V režime kompatibility ATtiny15 používa PLL interný oscilátor bežiaci na 6.4 MHz na generovanie periférneho hodinového signálu 25.6 MHz pre časovač / počítadlo1 (pozri „8-bitový časovač / počítadlo Režim ATtiny15 “na strane 95). Upozorňujeme, že v tomto prevádzkovom režime je hodinový signál 6.4 MHz vždy vydelený štyrmi, čo poskytuje systémové hodiny 1.6 MHz.
Tabuľka 6-6. Prevádzkové režimy interne kalibrovaného RC oscilátora
CKSEL[3:0] | Nominálna frekvencia |
0010(1) | 8.0 MHz |
0011(2) | 6.4 MHz |
Zariadenie sa dodáva s vybratou touto možnosťou.
Týmto nastavením sa vyberie režim kompatibility ATtiny15, kde sú hodiny systému vydelené štyrmi, čo vedie k frekvencii hodín 1.6 MHz.
Keď je ako zdroj hodín zvolený kalibrovaný interný oscilátor 8 MHz, časy spustenia sú určené poistkami SUT, ako je znázornené na Tabuľka 6-7 nižšie.
Tabuľka 6-7. Časy spustenia pre interné kalibrované hodiny RC oscilátora
SUT[1:0] | Čas spustenia od vypnutia | Ďalšie oneskorenie od resetovania (VCC = 5.0 V) | Odporúčané použitie |
00 | 6 CK | 14CK(1) | BOD povolené |
01 | 6 CK | 14 CK + 4 ms | Rýchlo rastúci výkon |
10(2) | 6 CK | 14 CK + 64 ms | Pomaly stúpajúca sila |
11 | Rezervované |
1. Ak je naprogramovaná poistka RSTDISBL, táto doba rozbehu sa zvýši na 14 CK + 4 ms, aby sa zabezpečilo, že je možné vstúpiť do programovacieho režimu.
2. Zariadenie sa dodáva s vybratou touto možnosťou.
V režime kompatibility ATtiny15 sú doby nábehu určené poistkami SUT, ako je to znázornené na obrázku Tabuľka 6-8 nižšie.
Tabuľka 6-8. Časy spustenia interných kalibrovaných hodín RC oscilátora (v režime ATtiny15)
SUT[1:0] | Čas spustenia od vypnutia | Ďalšie oneskorenie od resetovania (VCC = 5.0 V) | Odporúčané použitie |
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: Ak je naprogramovaná poistka RSTDISBL, tento čas spustenia sa zvýši na 14CK + 4 ms, aby bolo možné vstúpiť do programovacieho režimu.
Stručne povedané, ďalšie informácie o režime kompatibility ATtiny15 nájdete v sekciách „Port B (PB5: PB0)“ na strana 2, „Interný PLL v režime kompatibility ATtiny15“ na stránke 24, „8-bitový časovač / počítadlo1 v režime ATtiny15“ zapnutý strana 95, „Obmedzenia ladeniaWIRE“ na stránke 140, „Kalibračné bajty“ na strane 150 a v tabuľke "Prescaler hodín." Vyberte ”na strane 33.
Interný 128 kHz oscilátor
Interný 128 kHz oscilátor je oscilátor s nízkym výkonom, ktorý poskytuje hodiny 128 kHz. Frekvencia je nominálna pri 3V a 25°C. Tieto hodiny je možné zvoliť ako systémové hodiny naprogramovaním poistiek CKSEL na „0100“.
Ak je vybraný tento zdroj hodín, časy spustenia sú určené poistkami SUT, ako je to znázornené na obrázku Tabuľka 6-9.
Tabuľka 6-9. Časy spustenia interného oscilátora 128 kHz
SUT[1:0] | Čas spustenia od vypnutia | Dodatočné oneskorenie od resetu | Odporúčané použitie |
00 | 6 CK | 14CK(1) | BOD povolené |
01 | 6 CK | 14 CK + 4 ms | Rýchlo rastúci výkon |
10 | 6 CK | 14 CK + 64 ms | Pomaly stúpajúca sila |
11 | Rezervované |
Poznámka: Ak je naprogramovaná poistka RSTDISBL, tento čas spustenia sa zvýši na 14CK + 4 ms, aby bolo možné vstúpiť do programovacieho režimu.
Nízkofrekvenčný kryštálový oscilátor
Ak chcete použiť hodinový kryštál 32.768 kHz ako zdroj hodín pre zariadenie, je potrebné zvoliť nízkofrekvenčný kryštálový oscilátor nastavením poistiek CKSEL na hodnotu „0110“. Kryštál by mal byť spojený tak, ako je to znázornené na obrázku Obrázok 6-5. Informácie o vhodnej záťažovej kapacite pre kryštalický signál 32.768 kHz nájdete v údajovom liste výrobcu.
Ak je vybraný tento oscilátor, časy rozbehu sú určené poistkami SUT, ako je to znázornené na obrázku Tabuľka 6-10.
Tabuľka 6-10. Časy spustenia pre výber hodín nízkofrekvenčného kryštálového oscilátora
SUT[1:0] | Čas spustenia od vypnutia | Ďalšie oneskorenie od resetovania (VCC = 5.0 V) | Odporúčané použitie |
00 | 1K (1024) CK(1) | 4 ms | Rýchlo rastúci výkon alebo BOD povolené |
01 | 1K (1024) CK(1) | 64 ms | Pomaly stúpajúca sila |
10 | 32K (32768) CK | 64 ms | Stabilná frekvencia pri štarte |
11 | Rezervované |
Poznámka: Tieto možnosti by sa mali používať iba vtedy, ak stabilita frekvencie pri spustení nie je dôležitá.
Nízkofrekvenčný kryštálový oscilátor poskytuje internú záťažovú kapacitu, viď Tabuľka 6-11 na každom kolíku TOSC.
Tabuľka 6-11. Kapacita nízkofrekvenčného kryštálového oscilátora
Zariadenie | 32 kHz Osc. Typ | Šiltovka (Xtal1 / Tosc1) | Šiltovka (Xtal2 / Tosc2) |
ATtiny25 / 45/85 | Systém Osc. | 16 pF | 6 pF |
Krištáľový oscilátor / keramický rezonátor
XTAL1 a XTAL2 sú vstup a výstup invertujúceho systému amplifier, ktorý je možné nakonfigurovať na použitie ako oscilátor na čipe, ako je znázornené na obrázku Obrázok 6-5. Môže sa použiť buď kremenný kryštál, alebo keramický rezonátor.
C1 a C2 by mali byť vždy rovnaké pre kryštály aj rezonátory. Optimálna hodnota kondenzátorov závisí od použitého kryštálu alebo rezonátora, veľkosti rozptylovej kapacity a elektromagnetického šumu prostredia. Niektoré počiatočné pokyny pre výber kondenzátorov na použitie s kryštálmi sú uvedené v Tabuľka 6-12 nižšie. Pre keramické rezonátory by sa mali použiť hodnoty kondenzátora uvedené výrobcom.
Tabuľka 6-12. Prevádzkové režimy kryštálového oscilátora
CKSEL[3:1] | Frekvenčný rozsah (MHz) | Odporúčaný rozsah pre kondenzátory C1 a C2 pre použitie s kryštálmi (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: Táto možnosť by sa nemala používať s kryštálmi, ale iba s keramickými rezonátormi.
Oscilátor môže pracovať v troch rôznych režimoch, z ktorých každý je optimalizovaný pre konkrétny frekvenčný rozsah. Prevádzkový režim je vybraný poistkami CKSEL [3: 1], ako je znázornené na Tabuľka 6-12.
Poistka CKSEL0 spolu s poistkami SUT [1: 0] vyberajú doby nábehu, ako je to znázornené v Tabuľka 6-13.
Tabuľka 6-13. Časy spustenia pre výber hodín kryštálového oscilátora
CKSEL0 | SUT[1:0] | Čas spustenia od vypnutia | Dodatočné oneskorenie od resetu | Odporúčané použitie |
0 | 00 | 258 CK(1) | 14 CK + 4 ms | Keramický rezonátor, rýchlo rastúci výkon |
0 | 01 | 258 CK(1) | 14 CK + 64 ms | Keramický rezonátor, pomaly stúpajúci výkon |
0 | 10 | 1K (1024) CK(2) | 14CK | Keramický rezonátor, povolený BOD |
0 | 11 | 1K (1024) CK(2) | 14 CK + 4 ms | Keramický rezonátor, rýchlo rastúci výkon |
1 | 00 | 1K (1024) CK(2) | 14 CK + 64 ms | Keramický rezonátor, pomaly stúpajúci výkon |
1 | 01 | 16K (16384) CK | 14CK | Krištáľový oscilátor, povolený BOD |
1 | 10 | 16K (16384) CK | 14 CK + 4 ms | Krištáľový oscilátor, rýchlo rastúci výkon |
1 | 11 | 16K (16384) CK | 14 CK + 64 ms | Krištáľový oscilátor, pomaly stúpajúci výkon |
Poznámky
Tieto možnosti by sa mali používať, iba ak nepracujú na maximálnej frekvencii zariadenia, a iba ak stabilita frekvencie pri spustení nie je pre aplikáciu dôležitá. Tieto možnosti nie sú vhodné pre kryštály.
Tieto možnosti sú určené na použitie s keramickými rezonátormi a zabezpečia frekvenčnú stabilitu pri spustení. Môžu byť tiež použité s kryštálmi, ak nepracujú na maximálnej frekvencii prístroja a ak pre aplikáciu nie je dôležitá frekvenčná stabilita pri štarte.
Predvolený zdroj hodín
Zariadenie je dodávané s naprogramovanými CKSEL = „0010“, SUT = „10“ a CKDIV8. Predvolené nastavenie zdroja hodín je preto interný RC oscilátor pracujúci na frekvencii 8 MHz s najdlhším časom spustenia a počiatočným prednastavením systémových hodín na 8, čo má za následok systémové hodiny 1.0 MHz. Toto predvolené nastavenie zaisťuje, že všetci používatelia môžu vykonávať požadované nastavenia zdroja hodín pomocou systému alebo vysokého napätiatage Programátor.
Prescaler systémových hodín
Systémové hodiny ATtiny25 / 45/85 možno rozdeliť nastavením hodnoty “CLKPR - Register Prescale Clock” na strane 32. Túto funkciu možno použiť na zníženie spotreby energie, keď je požiadavka na výkon spracovania nízka. Toto možno použiť so všetkými možnosťami zdroja hodín a ovplyvní to frekvenciu hodín CPU a všetkých synchrónnych periférií. clkI/O, clkADC, clkCPU a clkFLASH sú rozdelené faktorom, ako je znázornené na Tabuľka 6-15 na strane 33.
Čas prepínania
Pri prepínaní medzi nastaveniami predvoľby času zaisťuje systémový predvoľba hodín, aby v systéme hodín nedochádzalo k poruchám a aby žiadna medzifrekvencia nebola vyššia ako ani frekvencia hodín zodpovedajúca predchádzajúcemu nastaveniu, ani frekvencia hodín zodpovedajúca novému nastaveniu.
Počítadlo zvlnenia, ktoré implementuje predradený prevodník, beží na frekvencii nerozdelených hodín, ktorá môže byť rýchlejšia ako frekvencia hodín procesora. Preto nie je možné určiť stav predradiča - ani keby bol čitateľný, a nemožno presne predpovedať presný čas potrebný na prechod z jednej hodiny na druhú.
Od zapísania hodnôt CLKPS trvá medzi novými časovými hodinami medzi T1 + T2 a T1 + 2 * T2. V tomto intervale sú vyrobené 2 aktívne hrany hodín. Tu je T1 predchádzajúca perióda hodín a T2 je perióda zodpovedajúca novému nastaveniu predradiča.
Vyrovnávacia pamäť hodín
Zariadenie môže vysielať systémové hodiny na pin CLKO (ak sa nepoužíva ako pin XTAL2). Pre umožnenie výstupu musí byť naprogramovaná poistka CKOUT. Tento režim je vhodný, keď sa čipové hodiny používajú na napájanie ostatných obvodov v systéme. Pamätajte, že hodiny nebudú vynulované počas resetu a že normálna prevádzka I / O pinu bude potlačená, keď bude naprogramovaná poistka. Keď sú hodiny na výstupe CLKO, je možné zvoliť interný RC oscilátor, WDT oscilátor, PLL a externé hodiny (CLKI). Krištáľové oscilátory (XTAL1, XTAL2) nie je možné použiť na výstup hodín na CLKO. Ak sa použije systémový predvoľba systémových hodín, sú na výstupe rozdelené systémové hodiny.
Popis registrácie
OSCCAL - register kalibrácie oscilátora
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x31 | CAL7 | CAL6 | CAL5 | CAL4 | CAL3 | CAL2 | CAL1 | CAL0 | OSCCAL |
Čítanie/Písanie | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Bity 7: 0 - CAL [7: 0]: hodnota kalibrácie oscilátora
Register kalibrácie oscilátora sa používa na orezanie kalibrovaného interného RC oscilátora na odstránenie procesných variácií z frekvencie oscilátora. Počas resetu čipu sa do tohto registra automaticky zapisuje predprogramovaná kalibračná hodnota, čím sa získa výrobcom kalibrovaná frekvencia uvedená v Tabuľka 21-2 na strane 164. Aplikačný softvér môže tento register zapísať a zmeniť tak frekvenciu oscilátora. Oscilátor je možné kalibrovať na frekvencie, ako je uvedené v Tabuľka 21-2 na strane 164. Kalibrácia mimo tohto rozsahu nie je zaručená.
Tento oscilátor sa používa na načasovanie prístupov na zápis do EEPROM a Flash a tieto časy zápisu budú zodpovedajúcim spôsobom ovplyvnené. Ak sú zapísané EEPROM alebo Flash, nekalibrujte na viac ako 8.8 MHz. V opačnom prípade môže dôjsť k zlyhaniu zápisu na EEPROM alebo Flash.
Bit CAL7 určuje rozsah činnosti oscilátora. Nastavením tohto bitu na 0 poskytnete najnižší frekvenčný rozsah, nastavením tohto bitu na 1 poskytnete najvyšší frekvenčný rozsah. Dva frekvenčné rozsahy sa prekrývajú, inými slovami, nastavenie OSCCAL = 0x7F dáva vyššiu frekvenciu ako OSCCAL = 0x80.
Bity CAL [6: 0] sa používajú na vyladenie frekvencie vo zvolenom rozsahu. Nastavenie 0x00 poskytuje najnižšiu frekvenciu v tomto rozsahu a nastavenie 0x7F najvyššiu frekvenciu v rozsahu.
Aby bola zaistená stabilná prevádzka MCU, mala by sa kalibračná hodnota meniť v malom. Zmeny frekvencie viac ako 2% z jedného cyklu do druhého môžu viesť k nepredvídateľnému správaniu. Zmeny v OSCCAL by nemali prekročiť 0x20 pre každú kalibráciu. Je potrebné zabezpečiť, aby sa MCU udržiavala v resetovaní počas takýchto zmien frekvencie hodín
Tabuľka 6-14. Frekvenčný rozsah interného RC oscilátora
Hodnota OSCCAL | Typická najnižšia frekvencia s ohľadom na menovitú frekvenciu | Typická najvyššia frekvencia s ohľadom na menovitú frekvenciu |
0x00 | 50% | 100% |
0x3F | 75% | 150% |
0x7F | 100% | 200% |
CLKPR - Register Prescale hodín
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x26 | CLKPCE | – | – | – | CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | CLKPR |
Čítanie/Písanie | R/W | R | R | R | R/W | R/W | R/W | R/W |
Počiatočná hodnota 0 0 0 0 Pozri popis bitov
Bit 7 - CLKPCE: Zmena predvoľby hodín povolená
Bit CLKPCE musí byť zapísaný do logického režimu, aby sa umožnila zmena bitov CLKPS. Bit CLKPCE sa aktualizuje, až keď sa ostatné bity v CLKPR súčasne zapíšu na nulu. CLKPCE sa hardvérom vymaže štyri cykly po zápise alebo po zápise bitov CLKPS. Prepísaním bitu CLKPCE v rámci tohto časového limitu sa nerozšíri časový interval ani nevymaže bit CLKPCE.
Bity 6: 4 - Res: Rezervované bity
Tieto bity sú rezervované bity v ATtiny25 / 45/85 a budú sa vždy čítať ako nula.
Bity 3: 0 - CLKPS [3: 0]: Clock Prescaler Vyberte bity 3 - 0
Tieto bity definujú faktor rozdelenia medzi vybraným zdrojom hodín a hodinami interného systému. Tieto bity je možné zapisovať za chodu, aby sa zmenila frekvencia hodín tak, aby vyhovovali požiadavkám aplikácie. Pretože rozdeľovač rozdeľuje vstup hlavných hodín na MCU, rýchlosť všetkých synchrónnych periférií sa zníži, keď sa použije faktor rozdelenia. Faktory delenia sú uvedené v Tabuľka 6-15.
Aby sa zabránilo neúmyselným zmenám frekvencie hodín, je potrebné pri zmene bitov CLKPS dodržať špeciálny postup zápisu:
Napíšte bit CLKPCE (Clock Prescaler Change Enable) na jeden a všetky ostatné bity v CLKPR na nulu.
Do štyroch cyklov napíšte požadovanú hodnotu do CLKPS, zatiaľ čo do CLKPCE napíšte nulu.
Pri zmene nastavenia predvoľby musí byť prerušenie vypnuté, aby sa zabezpečilo, že nie je prerušený postup zápisu.
Poistka CKDIV8 určuje počiatočnú hodnotu bitov CLKPS. Ak nie je CKDIV8 naprogramovaný, bity CLKPS sa nastavia na „0000“. Ak je naprogramovaný CKDIV8, bity CLKPS sa nastavia na „0011“, čím pri spustení vznikne deliaci faktor osem. Táto funkcia by sa mala použiť, ak má vybraný zdroj hodín vyššiu frekvenciu, než je maximálna frekvencia zariadenia pri súčasných prevádzkových podmienkach. Upozorňujeme, že do bitov CLKPS je možné zapísať akúkoľvek hodnotu bez ohľadu na nastavenie poistky CKDIV8. Aplikačný softvér musí zabezpečiť dostatočný faktor delenia
zvolí sa, ak zvolený zdroj hodín má vyššiu frekvenciu ako je maximálna frekvencia zariadenia za súčasných prevádzkových podmienok. Zariadenie sa dodáva s naprogramovanou poistkou CKDIV8.
Tabuľka 6-15. Vyberte preddeličku hodín
CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | Faktor rozdelenia hodín |
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 | Rezervované |
1 | 0 | 1 | 0 | Rezervované |
1 | 0 | 1 | 1 | Rezervované |
1 | 1 | 0 | 0 | Rezervované |
1 | 1 | 0 | 1 | Rezervované |
1 | 1 | 1 | 0 | Rezervované |
1 | 1 | 1 | 1 | Rezervované |
Poznámka: Preddelička je v režime kompatibility ATtiny15 vypnutá a zápis do CLKPR ani programovanie poistky CKDIV8 nemá žiadny vplyv na systémové hodiny (ktoré budú vždy 1.6 MHz).
Správa napájania a režimy spánku
Vysoký výkon a špičková efektivita kódu robia z mikrokontrolérov AVR ideálnu voľbu pre aplikácie s nízkou spotrebou. Režimy spánku navyše umožňujú aplikácii vypnúť nepoužívané moduly v MCU, čím šetria energiu. AVR poskytuje rôzne režimy spánku, ktoré umožňujú používateľovi prispôsobiť spotrebu energie požiadavkám aplikácie.
Režimy spánku
Obrázok 6-1 na strane 23 predstavuje rôzne hodiny systémy a ich distribúciu v ATtiny25 / 45/85. Obrázok pomáha pri výbere vhodného režimu spánku. Tabuľka 7-1 zobrazuje rôzne režimy spánku a zdroje ich prebudenia.
Tabuľka 7-1. Aktívne hodinové domény a zdroje budenia v rôznych režimoch spánku
Aktívne domény hodín | Oscilátory | Zdroje prebudenia | ||||||||||
Režim spánku | clkCPU | clkFLASH | clkIO | clkADC | clkPCK | Hlavný zdroj hodín povolený | INT0 a zmena PINu | SPM / EEPROM
Pripravený |
Podmienka spustenia USI |
ADC | Iné I/O | Strážny pes Prerušiť |
Nečinný | X | X | X | X | X | X | X | X | X | X | ||
Redukcia šumu ADC | X | X | X(1) | X | X | X | X | |||||
Vypnut | X(1) | X | X |
Poznámka: Pre INT0 iba prerušenie úrovne.
Pre vstup do niektorého z troch režimov spánku musí byť bit SE v MCUCR zapísaný do logického jedného a musí byť vykonaná inštrukcia SLEEP. Bity SM [1: 0] v registri MCUCR vyberajú, ktorý režim spánku (nečinný, redukcia šumu ADC alebo vypnutie) bude aktivovaný inštrukciou SLEEP. Pozri Tabuľka 7-2 pre zhrnutie.
Ak dôjde k povolenému prerušeniu, keď je MCU v režime spánku, MCU sa prebudí. MCU sa potom zastaví na štyri cykly okrem času spustenia, vykoná rutinu prerušenia a pokračuje v vykonávaní podľa inštrukcií po SLEEP. Obsah registra File a SRAM zostanú nezmenené, keď sa zariadenie prebudí zo spánku. Ak počas režimu spánku dôjde k resetovaniu, MCU sa prebudí a spustí sa z vektora resetovania.
Poznámka: ak sa na prebudenie použije prerušenie spustené úrovňou, zmenená úroveň sa musí nejaký čas podržať, aby sa MCU prebudil (a aby MCU vstúpil do rutiny služby prerušenia). Pozri „Externé prerušenia“ na stránke 49 pre podrobnosti.
Režim nečinnosti
Keď sú bity SM[1:0] zapísané na 00, inštrukcia SLEEP spôsobí, že MCU prejde do režimu nečinnosti, pričom zastaví CPU, ale umožní analógovému komparátoru, ADC, USI, časovaču/počítadlu, Watchdogu a systému prerušenia pokračovať v činnosti. stravovanie. Tento režim spánku v podstate zastaví clkCPU a clkFLASH, zatiaľ čo ostatné hodiny bežia.
Pohotovostný režim umožňuje MCU prebudiť sa z externých spustených prerušení aj z interných, ako je napríklad Timer Overflow. Ak nie je potrebné prebudenie z prerušenia analógového komparátora, je možné analógový komparátor vypnúť nastavením bitu ACD na „ACSR - riadenie analógového komparátora a stavový register“ na strane 120. Zníži sa tým spotreba energie v základnom režime. Ak je povolený ADC, prevod sa spustí automaticky po zadaní tohto režimu.
Režim redukcie šumu ADC
Keď sú bity SM[1:0] zapísané na 01, inštrukcia SLEEP spôsobí, že MCU prejde do režimu redukcie šumu ADC, zastaví CPU, ale umožní ADC, externým prerušeniam a Watchdogu pokračovať v činnosti (ak je povolená). Tento režim spánku zastaví clkI/O, clkCPU a clkFLASH, pričom umožní bežať ostatné hodiny.
To zlepšuje šumové prostredie pre ADC a umožňuje meranie s vyšším rozlíšením. Ak je povolený ADC, prevod sa spustí automaticky, keď vstúpite do tohto režimu. Okrem prerušenia ADC Conversion Complete môže MCU prebudiť iba externý reset, Watchdog reset, Brown-out reset, prerušenie pripravené na SPM / EEPROM, prerušenie externej úrovne na INT0 alebo prerušenie výmeny pinov režim.
Režim vypnutia
Keď sú bity SM [1: 0] zapísané na 10, inštrukcia SLEEP prepne MCU do režimu vypnutia. V tomto režime je oscilátor zastavený, zatiaľ čo vonkajšie prerušenia, detekcia stavu spustenia USI a Watchdog pokračujú v činnosti (ak je povolený). MCU môže prebudiť iba externý reset, Watchdog reset, Brown-out reset, prerušenie štartovacej podmienky USI, prerušenie externej úrovne na INT0 alebo prerušenie výmeny pinov. Tento režim spánku zastaví všetky generované hodiny a umožní prevádzku iba asynchrónnych modulov.
Softvér BOD zakázať
Keď je detektor Brown-out (BOD) aktivovaný poistkami BODLEVEL (pozri Tabuľka 20-4 na strane 148), BSK aktívne monitoruje objem dodávkytage počas obdobia spánku. V niektorých zariadeniach je možné ušetriť energiu vypnutím BSK softvérom v režime spánku. Spotreba energie v režime spánku bude potom na takej úrovni, ako keď je BSK globálne deaktivovaná poistkami.
Ak je BOD softvérovo zakázaný, funkcia BOD sa vypne ihneď po prechode do režimu spánku. Po prebudení zo spánku sa BOD opäť automaticky aktivuje. To zaisťuje bezpečnú prevádzku v prípade, že úroveň VCC klesne počas obdobia spánku.
Keď je BOD deaktivovaný, čas prebudenia z režimu spánku bude rovnaký ako čas prebudenia z RESETU. Užívateľ musí manuálne nakonfigurovať časy prebudenia tak, aby mala referencia bandgap čas začať a BOD pracuje správne skôr, ako bude MCU pokračovať vo vykonávaní kódu. Pozri poistkové bity SUT [1: 0] a CKSEL [3: 0] v tabuľke „Nízka poistka“ na strane 149
Zakázanie BOD je riadené bitom BODS (BOD Sleep) riadiaceho registra MCU, pozri „MCUCR - kontrola MCU Registrovať sa ”na strane 37. Zápis tohto bitu do jednej vypne BOD pri vypínaní, zatiaľ čo zápis nuly udržuje BOD aktívny. Predvolené nastavenie je nula, tj BOD aktívny.
Zápis do bitu BODS je riadený časovanou postupnosťou a povolovacím bitom, viď „MCUCR - regulácia regulácie MCU- ter “na strane 37.
Obmedzenia
Funkcia deaktivácie BOD bola implementovaná iba v nasledujúcich zariadeniach:
ATtiny25, revízia E a novšie
ATtiny45, revízia D a novšie
ATtiny85, revízia C a novšie
Revízie sú označené na balení zariadenia a môžu byť umiestnené nasledovne:
Spodná strana balíkov 8P3 a 8S2
Horná strana balenia 20M1
Register zníženia výkonu
Register zníženia výkonu (PRR), pozri “PRR - Register zníženia výkonu” na strane 38, poskytuje metódu na zníženie spotreby energie zastavením hodín na jednotlivých perifériách. Aktuálny stav periférie je zmrazený a I / O registre nemožno čítať ani zapisovať. Zdroje, ktoré periférne zariadenie použije pri zastavení hodín, zostanú obsadené, a preto by malo byť periférne zariadenie pred zastavením hodín vo väčšine prípadov deaktivované. Prebudenie modulu, ktoré sa vykoná vyčistením bitu v PRR, uvedie modul do rovnakého stavu ako pred vypnutím.
Vypnutie modulu je možné použiť v základnom režime a v aktívnom režime na výrazné zníženie celkovej spotreby energie. Vo všetkých ostatných režimoch spánku sú hodiny už zastavené. Pozri “Napájací prúd I / O modulov” na strane 177 napramples.
Minimalizácia spotreby energie
Pri pokuse o minimalizáciu spotreby energie v systéme riadenom AVR je potrebné vziať do úvahy niekoľko problémov. Vo všeobecnosti by sa mali režimy spánku využívať čo najviac a režim spánku by sa mal zvoliť tak, aby fungovalo čo najmenej funkcií zariadenia. Všetky potrebné funkcie by mali byť deaktivované. Najmä nasledujúce moduly môžu vyžadovať osobitnú pozornosť, keď sa snažia dosiahnuť čo najmenšiu spotrebu energie.
Analógovo-digitálny prevodník
Ak je povolené, ADC bude povolené vo všetkých režimoch spánku. Z dôvodu úspory energie by mal byť ADC pred prechodom do režimu spánku vypnutý. Keď je ADC vypnutý a znovu zapnutý, ďalšia konverzia bude rozšírená konverzia. Odkazujú na „Analógový na digitálny prevodník“ na stránke 122 pre podrobnosti o prevádzke ADC.
Analógový komparátor
Pri vstupe do základného režimu by mal byť analógový komparátor deaktivovaný, ak sa nepoužíva. Pri vstupe do režimu redukcie šumu ADC by mal byť analógový komparátor vypnutý. V ostatných režimoch spánku je analógový komparátor automaticky deaktivovaný. Ak je však analógový komparátor nastavený na používanie interného zvtage Ako referenčný vstup by mal byť analógový komparátor deaktivovaný vo všetkých režimoch spánku. V opačnom prípade bude interný zvtage Referencia bude povolená, nezávisle od režimu spánku. Odkazujú na „Analógový komparátor“ na strane 119 Podrobnosti o konfigurácii analógového komparátora.
Brown-out detektor
Pokiaľ v aplikácii nie je potrebný Brown-out detektor, mal by byť tento modul vypnutý. Ak je detektor zhasnutia zapnutý poistkami BODLEVEL, bude zapnutý vo všetkých režimoch spánku, a preto bude vždy spotrebovávať energiu. V režimoch hlbšieho spánku to významne prispeje k celkovej spotrebe prúdu. Pozri „Brown-out Detec- “na strane 41 a „Softvér BOD Disable“ na stránke 35 Podrobnosti o konfigurácii detektora zhasnutia.
Interný zvtage Referencia
Interný zvtage Referencia bude v prípade potreby povolená detekciou zhasnutia, analógovým komparátorom alebo ADC. Ak sú tieto moduly deaktivované, ako je popísané v častiach vyššie, interný objtagReferencia bude deaktivovaná a nebude spotrebovávať energiu. Po opätovnom zapnutí musí používateľ povoliť spustenie referencie pred použitím výstupu. Ak je referencia zapnutá v režime spánku, výstup je možné ihneď použiť. Odkazujú na „Interný zvtage Referencia “na strane 42 Podrobnosti o čase spustenia.
Watchdog Timer
Ak v aplikácii nie je potrebný časovač Watchdog, mal by sa tento modul vypnúť. Ak je povolený časovač Watchdog, bude povolený vo všetkých režimoch spánku, a preto bude vždy spotrebovávať energiu. V režimoch hlbšieho spánku to významne prispeje k celkovej spotrebe prúdu. Odkazujú na „Časovač strážneho psa“ na strane 42 Podrobnosti o konfigurácii časovača Watchdog.
Prípojné kolíky
Pri prechode do režimu spánku by mali byť všetky kolíky portu nakonfigurované tak, aby využívali minimálny výkon. Najdôležitejšie je potom zabezpečiť, aby žiadne kolíky nepoháňali odporovú záťaž. V režimoch spánku, kde sú zastavené I/O hodiny (clkI/O) aj ADC hodiny (clkADC), budú vstupné vyrovnávacie pamäte zariadenia deaktivované. To zaisťuje, že nedochádza k spotrebe energie
logikou vstupu, keď to nie je potrebné. V niektorých prípadoch je vstupná logika potrebná na zistenie podmienok prebudenia a
potom sa povolí. Prečítajte si časť „Režimy digitálneho vstupu a režimy spánku“ na stránke 57 podrobnosti o tom, ktoré piny sú povolené. Ak je aktivovaná vstupná vyrovnávacia pamäť a vstupný signál zostáva pohyblivý alebo má úroveň analógového signálu blízku VCC/2, vstupná vyrovnávacia pamäť bude spotrebovať nadmernú energiu.
Pre analógové vstupné kolíky by mala byť digitálna vstupná vyrovnávacia pamäť vždy vypnutá. Úroveň analógového signálu blízka VCC/2 na vstupnom kolíku môže spôsobiť značný prúd aj v aktívnom režime. Digitálne vstupné vyrovnávacie pamäte možno deaktivovať zápisom do registra DIDR0 (Digital Input Disable Register). Odkazujú na “DIDR0 - Digitálny vstup zakázať register 0” na strane 121 pre podrobnosti.
Popis registrácie
MCUCR - riadiaci register MCU
Riadiaci register MCU obsahuje riadiace bity pre správu napájania.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | TELO | ISC01 | ISC00 | MCUCR |
Čítanie/Písanie | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Počiatočná hodnota | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 7 - BODY: BOD Spánok
Funkcia deaktivácie BOD je k dispozícii iba na niektorých zariadeniach. Pozri “Obmedzenia” na strane 36.
Aby bolo možné zakázať BOD počas spánku (pozri Tabuľka 7-1 na strane 34) bit BODS musí byť napísaný na logický. Toto je riadené časovanou sekvenciou a aktivačným bitom, BODSE v MCUCR. Najskôr musia byť BODS aj BODSE nastavené na jednu. Po druhé, do štyroch cyklov hodín musí byť BODS nastavený na jeden a BODSE musí byť nastavený na nulu. Bit BODS je aktívny tri hodiny po jeho nastavení. Pokým je BODS aktívny, musí sa vykonať inštrukcia spánku, aby sa BOD vypol pre skutočný režim spánku. Bit BODS sa automaticky vymaže po troch cykloch hodín.
V zariadeniach, kde nebol implementovaný režim spánku BOD, je tento bit nepoužitý a bude vždy čítať nulu.
Bit 5 - SE: Režim spánku povolený
Bit SE musí byť zapísaný do logickej jednotky, aby sa MCU dostal do režimu spánku, keď sa vykoná inštrukcia SLEEP. Aby sa zabránilo prechodu MCU do režimu spánku, pokiaľ to nie je účelom programátora, odporúča sa zapísať bit Sleep Enable (SE) na jednotku tesne pred vykonaním inštrukcie SLEEP a vymazať ho ihneď po prebudení.
Bity 4: 3 - SM [1: 0]: Režim spánku Vyberte bity 1 a 0
Tieto bity vyberajú z troch dostupných režimov spánku, ako je znázornené na obrázku Tabuľka 7-2.
Tabuľka 7-2. Výber režimu spánku
SM1 | SM0 | Režim spánku |
0 | 0 | Nečinný |
0 | 1 | Redukcia šumu ADC |
1 | 0 | Vypnut |
1 | 1 | Rezervované |
Bit 2 - BODSE: BOD Sleep Enable
Funkcia deaktivácie BOD je k dispozícii iba na niektorých zariadeniach. Pozri “Obmedzenia” na strane 36.
Bit BODSE umožňuje nastavenie riadiaceho bitu BODS, ako je vysvetlené v popise bitu BODS. Blokovanie BOD je riadené časovanou sekvenciou.
Tento bit sa nepoužíva v zariadeniach, kde nebolo implementované vypnutie softvéru BOD, a v týchto zariadeniach sa bude čítať ako nula.
PRR - Register zníženia výkonu
Register zníženia výkonu poskytuje metódu na zníženie spotreby energie povolením deaktivácie signálov periférnych hodín.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x20 | – | – | – | – | PRIM1 | PRIM0 | PRUSI | PRADC | PRR |
Čítanie/Písanie | R | R | R | R | R/W | R/W | R/W | R/W | |
Počiatočná hodnota | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bity 7: 4 - Res: Rezervované bity
Tieto bity sú rezervované bity v ATtiny25 / 45/85 a budú sa vždy čítať ako nula.
Bit 3 - PRTIM1: Časovač / počítadlo zníženia výkonu1
Zápis logickej jednotky na tento bit vypne modul Timer / Counter1. Keď je povolený časovač / počítadlo1, prevádzka bude pokračovať ako pred vypnutím.
Bit 2 - PRTIM0: Časovač / počítadlo zníženia výkonu0
Zápis logickej jednotky na tento bit vypne modul Timer / Counter0. Keď je povolený časovač / počítadlo0, prevádzka bude pokračovať ako pred vypnutím.
Bit 1 - PRUSI: Redukcia napájania USI
Zápis logickej jednotky na tento bit zastaví činnosť USI zastavením hodín do modulu. Pri ďalšom prebudení USI by sa mal USI znovu inicializovať, aby sa zabezpečila správna funkcia.
Bit 0 - PRADC: ADC na zníženie výkonu
Zapísaním logického jedného do tohto bitu sa vypne ADC. Pred vypnutím musí byť ADC deaktivovaný. Upozorňujeme, že hodiny ADC používajú aj niektoré časti analógového komparátora, čo znamená, že analógový komparátor nemožno použiť, ak je tento bit vysoký.
Ovládanie a resetovanie systému
Resetovanie AVR
Počas resetu sú všetky I / O registre nastavené na počiatočné hodnoty a program začne vykonávanie z resetovacieho procesora. Inštrukcia umiestnená na Vektor resetu musí byť inštrukcia RJMP - Relative Jump - k rutine manipulácie s resetom. Ak program nikdy nepovolí zdroj prerušenia, vektory prerušenia sa nepoužívajú a na tieto miesta je možné umiestniť bežný programový kód. Schéma zapojenia v Obrázok 8-1 ukazuje logiku resetovania. Elektrické parametre resetovacích obvodov sú uvedené v „Charakteristiky systému a resetovania“ na stránke 165.
Obrázok 8-1 Resetovať logiku
I / O porty AVR sa okamžite resetujú do pôvodného stavu, keď sa aktivuje zdroj resetovania. To nevyžaduje spustenie žiadneho zdroja hodín.
Po deaktivácii všetkých zdrojov resetovania sa vyvolá počítadlo oneskorenia, ktoré natiahne interný reset. To umožňuje napájaniu dosiahnuť stabilnú úroveň pred začatím normálnej prevádzky. Časový limit počítadla oneskorenia je definovaný používateľom pomocou poistiek SUT a CKSEL. Rôzne výbery pre obdobie oneskorenia sú uvedené v "Hodiny." Zdroje “na strane 25.
Obnoviť zdroje
ATtiny25 / 45/85 má štyri zdroje resetovania:
Resetovanie pri zapnutí. MCU sa resetuje, keď je napájací voltage je pod prahom Power-on Reset (VPOT).
Externý reset. MCU sa resetuje, keď je na kolíku RESET nízka úroveň dlhšia ako minimálna dĺžka impulzu.
Strážny pes Reset. MCU sa resetuje, keď vyprší časovač Watchdog Timer a Watchdog je povolený.
Reset zhasnutia. MCU sa resetuje, keď je napájací voltage VCC je pod prahom resetovania hnedého zhasnutia (VBOT) a detektor zhnednutia je aktivovaný.
Reset pri zapnutí
Pulz resetovania pri zapnutí (POR) je generovaný obvodom detekcie na čipu. Úroveň detekcie je definovaná v „Sys- a resetovať charakteristiky “na strane 165. POR sa aktivuje vždy, keď je VCC pod úrovňou detekcie. Obvod POR je možné použiť na spustenie Start-up Reset, ako aj na detekciu poruchy napájacieho objtage.
Obvod POR (Power-on Reset) zaisťuje, že sa zariadenie resetuje po zapnutí. Dosiahnutie prahu resetovania pri zapnutí objtage vyvolá počítadlo oneskorenia, ktoré určuje, ako dlho zostane zariadenie v režime RESET po náraste VCC. Signál RESET sa znova aktivuje bez oneskorenia, keď VCC klesne pod úroveň detekcie.
Obrázok 8-2. Spustenie MCU, RESET Naviazané na VCC
VNÚTORNÝ RESET
Obrázok 8-3. Spustenie MCU, RESET rozšírený externe
Externý reset
Externý reset je generovaný nízkou úrovňou na kolíku RESET, ak je povolený. Resetujte impulzy dlhšie ako je minimálna šírka impulzu (pozri „Charakteristiky systému a resetovania“ na stránke 165) vygeneruje reset, aj keď hodiny nefungujú. Nie je zaručené, že kratšie impulzy vygenerujú reset. Akonáhle aplikovaný signál dosiahne hodnotu Reset Threshold Voltage – VRST – na kladnej hrane počítadlo oneskorenia spustí MCU po uplynutí doby Time-out.
Obrázok 8-4. Externý reset počas prevádzky
Detekcia zhnednutia
ATtiny25/45/85 má obvod detekcie brown-out na čipe (BOD) na monitorovanie úrovne VCC počas prevádzky porovnaním s pevnou úrovňou spúšťania. Spúšťaciu úroveň pre BOD je možné zvoliť pomocou poistiek BODLEVEL. Spúšťacia úroveň má hysterézu, aby sa zabezpečila detekcia Brown-out bez špičiek. Hysterézia na úrovni detekcie by mala byť interpretovaná ako VBOT+ = VBOT + VHYST/2 a VBOT- = VBOT – VHYST/2.
Keď je povolená BSK a VCC sa zníži na hodnotu pod spúšťaciu úroveň (VBOT-in Obrázok 8-5), okamžite sa aktivuje Brown-out Reset. Keď sa VCC zvýši nad úroveň spúšťania (VBOT+ in Obrázok 8-5), počítadlo oneskorenia spustí MCU po uplynutí časového limitu tTOUT.
Obvod BSK zaznamená pokles VCC len vtedy, ak je objtage zostáva pod spúšťacou úrovňou dlhšie ako tBOD „Charakteristiky systému a resetovania“ na stránke 165.
Strážny pes Reset
Po uplynutí časového limitu Watchdog vygeneruje krátky resetovací impulz v trvaní jedného cyklu CK. Na zostupnej hrane tohto impulzu začne časovač oneskorenia odpočítavať časový limit tTOUT. Odkazujú na „Časovač strážneho psa“ na strane 42 pre podrobnosti o fungovaní časovača Watchdog.
Voltage Referencia Povoliť signály a čas spustenia
ZvtagReferenčný čas spustenia môže ovplyvniť spôsob, akým by sa mal používať. Čas spustenia je uvedený v „Charakteristiky systému a resetovania“ na stránke 165. Z dôvodu úspory energie nie je referencia vždy zapnutá. Odkaz je zapnutý v nasledujúcich situáciách:
Keď je BOD povolený (programovaním poistkových bitov BODLEVEL [2: 0]).
Keď je odkaz na bandgap pripojený k analógovému komparátoru (nastavením bitu ACBG v ACSR).
Keď je povolený ADC.
Keď teda nie je povolený BOD, po nastavení bitu ACBG alebo povolení ADC musí užívateľ vždy umožniť spustenie referencie skôr, ako sa použije výstup z analógového komparátora alebo ADC. Aby sa znížila spotreba energie v režime vypnutia, môže sa používateľ vyhnúť trom vyššie uvedeným podmienkam, aby sa zabezpečil, že sa referencia pred vstupom do režimu vypnutia vypne.
Watchdog Timer
Časovač Watchdog je taktovaný z On-chip oscilátora, ktorý beží na 128 kHz. Ovládaním predvoľby časovača Watchdog Timer je možné upraviť interval resetovania Watchdog, ako je znázornené na Tabuľka 8-3 na strane 46. Inštrukcia WDR - Watchdog Reset - resetuje časovač Watchdog. Časovač Watchdog sa tiež resetuje, keď je vypnutý a dôjde k resetovaniu čipu. Na určenie doby resetovania je možné zvoliť desať rôznych periód hodinového cyklu. Ak doba resetovania vyprší bez ďalšieho Resetovania Watchdog, ATtiny25 / 45/85 sa resetuje a vykoná z resetovacieho vektora. Podrobné informácie o načasovaní nastavenia Watchdog Reset nájdete na Tabuľka 8-3 na strane 46.
Časovač Watchdog Timer môže byť tiež nakonfigurovaný tak, aby namiesto resetovania generoval prerušenie. To môže byť veľmi užitočné pri používaní Watchdogu na prebudenie z napájania.
Aby sa zabránilo neúmyselnému vypnutiu strážneho psa alebo neúmyselnej zmene časového limitu, poistka WDTON zvolí dve rôzne úrovne bezpečnosti, ako je znázornené na Tabuľka 8-1 Pozri „Časované sekvencie pre zmenu kon- konfigurácia časovača Watchdog ”na strane 43 pre podrobnosti.
Tabuľka 8-1. Konfigurácia WDT ako funkcia nastavení poistiek WDTON
WDTON | Úroveň bezpečnosti | Počiatočný stav WDT | Ako zakázať WDT | Ako zmeniť časový limit |
Neprogramované | 1 | Zakázané | Časovaná sekvencia | Žiadne obmedzenia |
Naprogramované | 2 | Povolené | Vždy povolené | Časovaná sekvencia |
Obrázok 8-7. Watchdog Timer
Časované sekvencie pre zmenu konfigurácie časovača Watchdog
Postupnosť zmeny konfigurácie sa medzi týmito dvoma úrovňami bezpečnosti mierne líši. Pre každú úroveň sú opísané samostatné postupy.
Úroveň bezpečnosti 1: V tomto režime je časovač Watchdog na začiatku zakázaný, ale možno ho povoliť zápisom bitu WDE na jednotku bez akéhokoľvek obmedzenia. Pri deaktivácii aktivovaného časovača Watchdog je potrebná časovaná sekvencia. Ak chcete zakázať aktivovaný časovač Watchdog, musíte dodržať nasledujúci postup:
V rovnakej operácii napíšte logický na WDCE a WDE. Logický musí byť zapísaný do WDE bez ohľadu na predchádzajúcu hodnotu bitu WDE.
V priebehu nasledujúcich štyroch hodinových cyklov v rámci tej istej operácie napíšte bity WDE a WDP podľa želania, ale s bitom WDCE vymazaným.
Úroveň bezpečnosti 2: V tomto režime je časovač Watchdog vždy povolený a bit WDE sa bude vždy čítať ako jeden. Pri zmene časového limitu Watchdog je potrebná časovaná sekvencia. Ak chcete zmeniť časový limit Watchdog, musíte dodržať nasledujúci postup:
V rovnakej operácii napíšte logický do WDCE a WDE. Aj keď je WDE vždy nastavené, WDE musí byť zapísané do jedného, aby sa spustila časovaná sekvencia.
V priebehu nasledujúcich štyroch taktovacích cyklov, v rámci tej istej operácie, napíšte bity WDP podľa želania, ale s vymazaným bitom WDCE. Hodnota zapísaná do bitu WDE je irelevantná.
Kód Example
Nasledujúci kód naprample ukazuje jednu zostavu a jednu funkciu C na vypnutie WDT. Bývalýample predpokladá, že prerušenia sú riadené (napr. globálnym vypnutím prerušení), takže počas vykonávania týchto funkcií nedôjde k žiadnym prerušeniam.
Montážny kód Example(1) |
WDT_off:
wdr ; Vymazať WDRF v MCUSR ldi r16, (0< z MCUSR, r16 ; Napíš logický na WDCE a WDE ; Ponechajte staré nastavenie predvoľby, aby ste zabránili neúmyselnému vynulovaniu Watchdog v r16, WDTCR ori r16, (1< z WDTCR, r16 ; Vypnite WDT ldi r16, (0< z WDTCR, r16 ret |
C kód Example(1) |
void WDT_off(void)
{ _WDR (); /* Vymazať WDRF v MCUSR */ MCUSR = 0x00 /* Zápis logickej jednotky do WDCE a WDE */ WDTCR |= (1< / * Vypnúť WDT * / WDTCR = 0x00; } |
Poznámka: 1. Pozri „Kód Pramples “na strane 6.
Popis registrácie
MCUSR - Register stavu MCU
Register stavu MCU poskytuje informácie o tom, ktorý zdroj resetovania spôsobil reset MCU.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x34 | – | – | – | – | WDRF | BORF | EXTRF | PORF | MCUSR |
Čítanie/Písanie | R | R | R | R | R/W | R/W | R/W | R/W |
Počiatočná hodnota 0 0 0 0 Pozri popis bitov
Bity 7: 4 - Res: Rezervované bity
Tieto bity sú rezervované bity v ATtiny25 / 45/85 a budú sa vždy čítať ako nula.
Bit 3 - WDRF: Značka resetovania strážneho psa
Tento bit je nastavený, ak dôjde k resetovaniu Watchdog. Bit sa vynuluje resetom pri zapnutí alebo zapísaním logickej nuly do vlajky.
Bit 2 - BORF: Príznak vynulovaného vynulovania
Tento bit sa nastaví, ak dôjde k Brown-out resetu. Bit sa vynuluje resetom pri zapnutí alebo zapísaním logickej nuly do vlajky.
Bit 1 - EXTRF: Externý resetovací príznak
Tento bit sa nastaví, ak dôjde k externému resetu. Bit sa vynuluje resetom pri zapnutí alebo zapísaním logickej nuly do vlajky.
Bit 0 - PORF: Príznak resetovania po zapnutí
Tento bit sa nastaví, ak dôjde k resetovaniu pri zapnutí. Bit sa vynuluje iba zapísaním logickej nuly do vlajky.
Ak chcete na identifikáciu stavu resetovania použiť príznaky resetovania, užívateľ by si mal čo najskôr prečítať a potom resetovať MCUSR v programe. Ak je register vymazaný skôr, ako dôjde k ďalšiemu resetu, zdroj resetovania možno nájsť preskúmaním príznakov resetovania.
WDTCR - Watchdog Timer Control Register
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x21 | WDIF | WDIE | WDP3 | WDCE | WDE | WDP2 | WDP1 | WDP0 | WDTCR |
Čítanie/Písanie | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Počiatočná hodnota | 0 | 0 | 0 | 0 | X | 0 | 0 | 0 |
Bit 7 - WDIF: príznak prerušenia časového limitu strážneho psa
Tento bit sa nastaví, keď v časovači Watchdog nastane časový limit a časovač Watchdog je nakonfigurovaný na prerušenie. Pri vykonávaní zodpovedajúceho vektora spracovania prerušenia je hardvér WDIF vymazaný. Alternatívne sa WDIF zúčtuje tak, že sa na príznak napíše logický. Keď sú nastavené I-bit v SREG a WDIE, vykoná sa prerušenie časového limitu Watchdog.
Bit 6 - WDIE: Watchdog Timeout Interrupt Enable
Keď je tento bit zapísaný do jednej, WDE sa vymaže a I-bit v stavovom registri je nastavený, je povolené Watchdog Time-Out Interrupt. V tomto režime sa namiesto resetovania vykoná príslušné prerušenie, ak dôjde k časovému limitu v časovači Watchdog.
Ak je nastavené WDE, WDIE sa automaticky vymaže hardvérom, keď dôjde k vypršaniu časového limitu. To je užitočné pre udržanie bezpečnosti Watchdog Reset počas používania prerušenia. Po vyčistení bitu WDIE vygeneruje nasledujúci časový limit reset. Aby ste sa vyhli vynulovaniu Watchdog Reset, musí byť WDIE nastavené po každom prerušení.
Tabuľka 8-2. Konfigurácia časovača Watchdog
WDE | WDIE | Stav časovača strážneho psa | Akcia na vypršanie časového limitu |
0 | 0 | Zastavené | žiadne |
0 | 1 | Beh | Prerušiť |
1 | 0 | Beh | Resetovať |
1 | 1 | Beh | Prerušiť |
Bit 4 - WDCE: Watchdog Change Enable
Tento bit sa musí nastaviť, keď sa bit WDE zapisuje na logickú nulu. V opačnom prípade nebude Watchdog deaktivovaný. Po zápise do jedného hardvér vymaže tento bit po štyroch taktovacích cykloch. Postup deaktivácie Watchdogu nájdete v popise bitu WDE. Tento bit musí byť nastavený aj pri zmene bitov predvoľby. Pozri "Časované sekvencie." pre zmenu konfigurácie časovača Watchdog ”na strane 43.
Bit 3 - WDE: Watchdog Enable
Keď je WDE zapísaný na logický, časovač Watchdog je povolený a ak je WDE zapísaný na logickú nulu, funkcia Watchdog Timer je zakázaná. WDE je možné vymazať, iba ak má bit WDCE logickú úroveň jedna. Ak chcete zakázať povolený časovač Watchdog, musíte postupovať podľa týchto pokynov:
V rovnakej operácii napíšte logický na WDCE a WDE. Logický musí byť zapísaný do WDE, aj keď je nastavený na jeden pred spustením operácie deaktivácie.
V priebehu nasledujúcich štyroch hodinových cyklov napíšte logickú 0 na WDE. Toto deaktivuje Watchdog.
Na bezpečnostnej úrovni 2 nie je možné deaktivovať časovač Watchdog Timer, a to ani pri vyššie popísanom algoritme. Pozri „Časované sekvencie pre zmenu konfigurácie časovača Watchdog“ na stránke 43.
Na bezpečnostnej úrovni 1 je WDE v MCUSR prepísané WDRF. Pozri “MCUSR - Register stavu MCU” na strane 44 pre popis WDRF. To znamená, že WDE je nastavené vždy, keď je nastavené WDRF. Ak chcete vymazať WDE, pred deaktiváciou Watchdogu podľa postupu popísaného vyššie musí byť vymazaný WDRF. Táto vlastnosť zaisťuje viacnásobné vynulovanie počas podmienok spôsobujúcich zlyhanie a bezpečné spustenie po zlyhaní.
Poznámka: Ak sa časovač watchdog nebude používať v aplikácii, je dôležité pri inicializácii zariadenia prejsť procedúrou vypnutia strážneho psa. Ak je Watchdog náhodne aktivovaný, naprampAk dôjde k úteku ukazovateľa alebo zhasnutiu zariadenia, zariadenie sa resetuje, čo následne povedie k novému vynulovaniu strážneho psa. Aby sa tejto situácii vyhlo, mal by aplikačný softvér v inicializačnej rutine vždy vymazať príznak WDRF a riadiaci bit WDE.
Bity 5, 2: 0 - WDP [3: 0]: Watchdog Timer Prescaler 3, 2, 1 a 0
Bity WDP [3: 0] určujú prednastavenie časovača Watchdog Timer, keď je povolený časovač Watchdog. Rôzne hodnoty prednastavenia a zodpovedajúce časové limity sú zobrazené v Tabuľka 8-3.
Tabuľka 8-3. Watchdog Timer Prescale Select
WDP3 | WDP2 | WDP1 | WDP0 | Počet cyklov oscilátora WDT | Typický časový limit pri VCC = 5.0 V |
0 | 0 | 0 | 0 | 2K (2048) cyklov | 16 ms |
0 | 0 | 0 | 1 | 4K (4096) cyklov | 32 ms |
0 | 0 | 1 | 0 | 8K (8192) cyklov | 64 ms |
0 | 0 | 1 | 1 | 16K (16384) cyklov | 0.125 s |
0 | 1 | 0 | 0 | 32K (32764) cyklov | 0.25 s |
0 | 1 | 0 | 1 | 64K (65536) cyklov | 0.5 s |
0 | 1 | 1 | 0 | 128K (131072) cyklov | 1.0 s |
0 | 1 | 1 | 1 | 256K (262144) cyklov | 2.0 s |
1 | 0 | 0 | 0 | 512K (524288) cyklov | 4.0 s |
1 | 0 | 0 | 1 | 1024K (1048576) cyklov | 8.0 s |
Tabuľka 8-3. Watchdog Timer Prescale Select (Pokračovanie)
WDP3 | WDP2 | WDP1 | WDP0 | Počet cyklov oscilátora WDT | Typický časový limit pri VCC = 5.0 V |
1 | 0 | 1 | 0 | Rezervované(1) | |
1 | 0 | 1 | 1 | ||
1 | 1 | 0 | 0 | ||
1 | 1 | 0 | 1 | ||
1 | 1 | 1 | 0 | ||
1 | 1 | 1 | 1 |
Poznámka: 1. Ak je vybraté, použije sa jedno z platných nastavení pod 0b1010.
prerušenie
Táto časť popisuje špecifiká spracovania prerušenia, ako sa vykonáva v ATtiny25 / 45/85. Všeobecné vysvetlenie zaobchádzania s prerušením AVR nájdete v časti “Reset a prerušenie spracovania” na strane 12.
Prerušiť vektory v ATtiny25 / 45/85
Vektory prerušenia ATtiny25 / 45/85 sú opísané v Tabuľka 9-1nižšie.
Tabuľka 9-1. Resetovať a prerušiť vektory
Vektor č. | Programová adresa | Zdroj | Definícia prerušenia |
1 | 0x0000 | RESETOVAŤ | Externý kolík, reset pri zapnutí, reset pri zhasnutí, reset strážneho psa |
2 | 0x0001 | INT0 | Externá požiadavka na prerušenie 0 |
3 | 0x0002 | PCINT0 | Žiadosť o prerušenie zmeny PIN 0 |
4 | 0x0003 | TIMER1_COMPA | Časovač / Počítadlo1 Porovnajte zhodu A |
5 | 0x0004 | TIMER1_OVF | Preplnenie časovača / počítadla1 |
6 | 0x0005 | TIMER0_OVF | Preplnenie časovača / počítadla0 |
7 | 0x0006 | EE_RDY | Pripravená EEPROM |
8 | 0x0007 | ANA_COMP | Analógový komparátor |
9 | 0x0008 | ADC | Konverzia ADC je dokončená |
10 | 0x0009 | TIMER1_COMPB | Časovač / Počítadlo1 Porovnajte zhodu B |
11 | 0x000A | TIMER0_COMPA | Časovač / Počítadlo0 Porovnajte zhodu A |
12 | 0x000B | TIMER0_COMPB | Časovač / Počítadlo0 Porovnajte zhodu B |
13 | 0x000C | WDT | Časový limit strážneho psa |
14 | 0x000D | USI_START | USI ŠTART |
15 | 0x000E | USI_OVF | Prepad USI |
Ak program nikdy nepovolí zdroj prerušenia, vektory prerušenia sa nepoužívajú a na tieto miesta je možné umiestniť bežný programový kód.
Typické a všeobecné nastavenie pre adresy vektorov prerušenia v ATtiny25/45/85 je ukázané v programe example nižšie.
Montážny kód Example | ||
.org 0x0000 | ; Nastaviť adresu nasledujúceho | vyhlásenie |
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 | |
RESETOVAŤ: | ; Začiatok hlavného programu | |
; Adresa 0x000F | ||
… |
Poznámka: Pozri „Kód Pramples “na strane 6.
Vonkajšie prerušenia
Externé prerušenia sú spúšťané pinom INT0 alebo ktorýmkoľvek z pinov PCINT [5: 0]. Upozorňujeme, že ak je to povolené, prerušenia sa aktivujú, aj keď sú piny INT0 alebo PCINT [5: 0] nakonfigurované ako výstupy. Táto funkcia poskytuje spôsob generovania softvérového prerušenia. Prerušenie výmeny pinov sa spustí, ak sa prepne akýkoľvek povolený pin PCINT [5: 0]. Register PCMSK riadi, ktoré piny prispievajú k prerušeniu výmeny pinov. Prerušenia výmeny pinov na PCINT [5: 0] sú detekované asynchrónne. To znamená, že tieto prerušenia sa dajú použiť na prebudenie súčasti aj z iných režimov spánku ako nečinný.
Prerušenia INT0 môžu byť spustené klesajúcou alebo stúpajúcou hranou alebo nízkou úrovňou. Toto je nastavené tak, ako je uvedené v špecifikácii pre MCU Control Register - MCUCR. Keď je prerušenie INT0 povolené a je nakonfigurované ako spúšťané na úrovni, prerušenie sa spustí, pokiaľ je pin nízky. Pamätajte, že rozpoznanie prerušenia klesajúcej alebo stúpajúcej hrany na INT0 vyžaduje prítomnosť I / O hodín, popísaných v „Hodinové systémy a ich distribúcia“ dňa strana 23.
Prerušenie na nízkej úrovni
Prerušenie nízkej úrovne na INT0 je detekované asynchrónne. To znamená, že toto prerušenie je možné použiť na prebudenie súčasti aj z iných režimov spánku ako nečinný. Hodiny I / O sú zastavené vo všetkých režimoch spánku okrem základného režimu.
Všimnite si, že ak sa na prebudenie z vypnutia použije prerušenie spustené úrovňou, požadovaná úroveň musí byť podržaná dostatočne dlho na to, aby MCU dokončila prebudenie a spustila prerušenie úrovne. Ak hladina zmizne pred koncom Času spustenia, MCU sa stále prebudí, ale nevygeneruje sa žiadne prerušenie. Čas spustenia je definovaný poistkami SUT a CKSEL, ako je popísané v „Možnosti systémových hodín a hodín“ na stránke 23.
Ak je nízka úroveň na kolíku prerušenia odstránená skôr, ako sa zariadenie prebudí, vykonanie programu nebude presmerované do rutiny servisnej prerušenia, ale bude pokračovať od pokynu nasledujúceho po príkaze SLEEP.
Pripnúť načasovanie prerušenia zmeny
BývalýampLe načasovania prerušenia zmeny kolíka je zobrazené na obrázku Obrázok 9-1.
Popis registrácie
MCUCR - riadiaci register MCU
Register riadenia externého prerušenia A obsahuje riadiace bity pre riadenie snímania prerušenia.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | TELO | ISC01 | ISC00 | MCUCR |
Čítanie/Písanie | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Počiatočná hodnota | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bity 1: 0 - ISC0 [1: 0]: Riadenie prerušenia snímania 0 Bit 1 a Bit 0
Externé prerušenie 0 sa aktivuje externým pinom INT0, ak je nastavený príznak SREG I a zodpovedajúca maska prerušenia. Úroveň a hrany na externom kolíku INT0, ktoré aktivujú prerušenie, sú definované v Tabuľka 9-2. Hodnota na pine INT0 je samppred detekciou hrán. Ak je zvolené prerušenie na hrane alebo na prepínanie, generujú prerušenie impulzy, ktoré trvajú dlhšie ako jedna hodinová perióda. Kratšie impulzy nemusia zaručene generovať prerušenie. Ak je zvolené prerušenie na nízkej úrovni, nízka úroveň musí byť držaná až do dokončenia aktuálne vykonávanej inštrukcie na generovanie prerušenia.
Tabuľka 9-2. Prerušiť 0 Ovládanie zmyslov
ISC01 | ISC00 | Popis |
0 | 0 | Nízka úroveň INT0 generuje požiadavku na prerušenie. |
0 | 1 | Akákoľvek logická zmena na INT0 generuje požiadavku na prerušenie. |
1 | 0 | Klesajúca hrana INT0 generuje požiadavku na prerušenie. |
1 | 1 | Nárastná hrana INT0 generuje požiadavku na prerušenie. |
GIMSK - Register všeobecných masiek prerušenia
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3B | – | INT0 | PCIe | – | – | – | – | – | GIMSK |
Čítanie/Písanie | R | R/W | R/W | R | R | R | R | R | |
Počiatočná hodnota | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bity 7, 4: 0 - Res: Rezervované bity
Tieto bity sú rezervované bity v ATtiny25 / 45/85 a budú sa vždy čítať ako nula.
Bit 6 - INT0: Externá požiadavka na prerušenie 0 povolená
Keď je nastavený bit INT0 (jeden) a I-bit v stavovom registri (SREG) je nastavený (jeden), je povolené prerušenie externého kolíka. Bity riadenia prerušenia 0 bitov 1/0 (ISC01 a ISC00) v riadiacom registri MCU (MCUCR) definujú, či sa externé prerušenie aktivuje na stúpajúcej a / alebo klesajúcej hrane kolíka INT0 alebo na snímanej úrovni. Aktivita na kolíku spôsobí požiadavku na prerušenie, aj keď je INT0 nakonfigurovaný ako výstup. Príslušné prerušenie požiadavky na externé prerušenie 0 sa vykoná z vektora prerušenia INT0.
Bit 5 - PCIE: Pin Change Interrupt Enable
Keď je bit PCIE nastavený (jeden) a I-bit v stavovom registri (SREG) je nastavený (jeden), je povolené prerušenie výmeny pinov. Akákoľvek zmena na ktoromkoľvek povolenom kolíku PCINT [5: 0] spôsobí prerušenie. Zodpovedajúce prerušenie požiadavky na prerušenie výmeny PIN sa vykoná z vektora prerušenia PCI. Kolíky PCINT [5: 0] sú jednotlivo povolené registrom PCMSK0.
GIFR - všeobecný register príznakov prerušenia
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3A | – | INTF0 | PCIF | – | – | – | – | – | DARČEK |
Čítanie/Písanie | R | R/W | R/W | R | R | R | R | R | |
Počiatočná hodnota | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bity 7, 4: 0 - Res: Rezervované bity
Tieto bity sú rezervované bity v ATtiny25 / 45/85 a budú sa vždy čítať ako nula.
Bit 6 - INTF0: Externý príznak prerušenia 0
Keď hrana alebo logická zmena na kolíku INT0 spustí požiadavku na prerušenie, INTF0 sa nastaví (jedna). Ak sú nastavené I-bit v SREG a INT0 bit v GIMSK (jeden), MCU skočí na zodpovedajúci Interrupt Vector. Príznak je vymazaný, keď je vykonaná rutina prerušenia. Prípadne je možné príznak vymazať napísaním logického znaku. Tento príznak je vždy vymazaný, keď je INT0 nakonfigurovaný ako prerušenie úrovne.
Bit 5 - PCIF: Pin Change Interrupt Flag
Keď logická zmena na ľubovoľnom kolíku PCINT [5: 0] spustí požiadavku na prerušenie, nastaví sa PCIF (jeden). Ak sú nastavené I-bit v SREG a PCIE bit v GIMSK (jeden), MCU skočí na zodpovedajúci Interrupt Vector. Príznak je vymazaný, keď je vykonaná rutina prerušenia. Prípadne je možné príznak vymazať napísaním logického znaku.
PCMSK - Register zmeny masky kolíka
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x15 | – | – | PCINT5 | PCINT4 | PCINT3 | PCINT2 | PCINT1 | PCINT0 | PCMSK |
Čítanie/Písanie | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Počiatočná hodnota | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bity 7: 6 - Res: Rezervované bity
Tieto bity sú rezervované bity v ATtiny25 / 45/85 a budú sa vždy čítať ako nula.
Bity 5: 0 - PCINT [5: 0]: Pin Change Enable Mask 5: 0
Každý bit PCINT [5: 0] vyberá, či je na príslušnom I / O kolíku povolené prerušenie výmeny kolíka. Ak je nastavený PCINT [5: 0] a je nastavený bit PCIE v GIMSKu, je na príslušnom I / O kolíku povolené prerušenie výmeny pinov. Ak je PCINT [5: 0] vymazaný, prerušenie výmeny pinov na príslušnom I / O kolíku je deaktivované.
I/O porty
Úvod
Všetky porty AVR majú skutočnú funkciu čítania, úpravy a zápisu, ak sa používajú ako všeobecné digitálne I/O porty. To znamená, že smer jedného kolíka portu je možné zmeniť bez toho, aby ste neúmyselne zmenili smer akéhokoľvek iného kolíka pomocou pokynov SBI a CBI. To isté platí pri zmene hodnoty pohonu (ak je konfigurovaný ako výstup) alebo pri povolení/deaktivácii pull-up rezistorov (ak je nakonfigurovaný ako vstup). Každá výstupná vyrovnávacia pamäť má symetrické charakteristiky pohonu s možnosťou vysokého prepadu aj zdroja. Kolíkový ovládač je dostatočne silný na to, aby priamo poháňal LED displeje. Všetky kolíky portov majú individuálne voliteľné zdvíhacie odpory s napätím napájaniatage invariantný odpor. Všetky I/O kolíky majú ochranné diódy pre VCC aj uzemnenie, ako je uvedené v Obrázok 10-1. Pozri „Elektrické charakteristiky“ na stránke 161 pre úplný zoznam parametrov.
Obrázok 10-1. Schéma ekvivalentného I/O pinu
Všetky registre a bitové odkazy v tejto časti sú zapísané vo všeobecnej forme. Malé písmeno „x“ predstavuje číslovacie písmeno portu a malé „n“ predstavuje číslo bitu. Pri použití registra alebo bitu definovaného v programe však musí byť použitý presný tvar. Za example, PORTB3 pre bit č. 3 v prístave B, tu je dokumentovaný spravidla ako PORTxn. Fyzické I/O registre a bitové umiestnenia sú uvedené v zozname „Register Description“ na strana 64.
Pre každý port sú pridelené tri umiestnenia adresy pamäte I / O, po jednom pre dátový register - PORTx, register smeru údajov - DDRx a vstupné kolíky portu - PINx. Umiestnenie I / O pinov vstupných pinov portu je iba na čítanie, zatiaľ čo dátový register a register dátových smerov sú na čítanie a zápis. Avšak zápis logického čísla na jeden bit v registri PINx bude mať za následok prepnutie zodpovedajúceho bitu v dátovom registri. Bit Pull-up Disable - PUD v MCUCR navyše po nastavení zakáže funkciu pull-up pre všetky piny vo všetkých portoch.
Používanie I / O portu ako General Digital I / O je popísané v „Porty ako všeobecné digitálne I / O“ na strane 53. Väčšina pinov portov je multiplexovaná s alternatívnymi funkciami pre periférne funkcie v zariadení. Ako každá alternatívna funkcia interferuje s kolíkom portu, je popísané v „Alternatívne funkcie portov“ na stránke 57. Podrobný popis alternatívnych funkcií nájdete v jednotlivých častiach modulu.
Upozorňujeme, že povolenie alternatívnej funkcie niektorých pinov portu nemá vplyv na použitie ostatných pinov v porte ako všeobecného digitálneho I / O.
Porty ako všeobecné digitálne I / O
Porty sú obojsmerné I / O porty s voliteľnými internými prípojkami. Obrázok 10-2 zobrazuje funkčný popis jedného kolíka I / O-portu, ktorý sa tu všeobecne nazýva Pxn.
Obrázok 10-2. Všeobecné digitálne I/O(1)
Konfigurácia špendlíka
Každý pin portu sa skladá z troch bitov registra: DDxn, PORTxn a PINxn. Ako je uvedené v „Register Description“ na strana 64, k bitom DDxn sa pristupuje na I / O adrese DDRx, k bitom PORTxn na I / O adrese PORTx a k bitom PINxn na I / O adrese PINx.
Bit DDxn v registri DDRx určuje smer tohto kolíka. Pokiaľ je DDxn napísaný logický, je Pxn nakonfigurovaný ako výstupný pin. Pokiaľ je DDxn zapísaná logická nula, Pxn je nakonfigurovaný ako vstupný pin.
Ak je PORTxn napísaný logicky, keď je pin nakonfigurovaný ako vstupný pin, aktivuje sa pull-up rezistor. Pre vypnutie pull-up rezistoru musí byť PORTxn napísaná logická nula alebo pin musí byť nakonfigurovaný ako výstupný pin. Kolíky portu sú tri uvedené, keď je aktívna podmienka resetovania, aj keď nie sú spustené žiadne hodiny.
Ak je PORTxn napísaný logicky, keď je pin nakonfigurovaný ako výstupný pin, pin portu je napájaný vysoko (jeden). Ak je PORTxn zapísaná logická nula, keď je pin nakonfigurovaný ako výstupný pin, pin portu je napájaný nízko (nula).
Prepínanie špendlíka
Logický zápis do PINxn prepne hodnotu PORTxn nezávisle od hodnoty DDRxn. Upozorňujeme, že inštrukciu SBI je možné použiť na prepínanie jedného bitu v porte.
Prepínanie medzi vstupom a výstupom
Pri prepínaní medzi trojstavovým stavom ({DDxn, PORTxn} = 0b00) a vysokým výstupom ({DDxn, PORTxn} = 0b11), stredným stavom s aktivovaným ťahaním {DDxn, PORTxn} = 0b01) alebo nízkym výstupom ({DDxn, PORTxn} = 0b10). Normálne je stav aktivácie ťahu plne prijateľný, pretože prostredie s vysokou impedanciou si nevšimne rozdiel medzi silným vysokým driverom a pull-upom. Ak tomu tak nie je, bit PUD v registri MCUCR je možné nastaviť tak, aby deaktivoval všetky ťahy na všetkých portoch.
Rovnaký problém spôsobuje prepínanie medzi vstupom so zdvihom a nízkym výstupom. Používateľ musí ako medzikrok použiť buď trojstupňový stav ({DDxn, PORTxn} = 0b00), alebo výstupný vysoký stav ({DDxn, PORTxn} = 0b10).
Tabuľka 10-1 sumarizuje riadiace signály pre hodnotu kolíka.
Tabuľka 10-1. Konfigurácie pinov portu
DDxn | PORTxn | PUD
(v MCUCR) |
I/O | Vytiahnutie | Komentujte |
0 | 0 | X | Vstup | Nie | Tri stavy (Hi-Z) |
0 | 1 | 0 | Vstup | áno | Pxn bude zdrojovať prúd, ak je ext. stiahnutý nízko. |
0 | 1 | 1 | Vstup | Nie | Tri stavy (Hi-Z) |
1 | 0 | X | Výstup | Nie | Nízky výstup (umývadlo) |
1 | 1 | X | Výstup | Nie | Vysoký výstup (zdroj) |
Čítanie hodnoty PIN
Nezávisle na nastavení bitu Data Direction DDxn je možné pin portu prečítať prostredníctvom bitu PINxn Register. Ako je uvedené v Obrázok 10-2bit PINxn Register a predchádzajúca západka tvoria synchronizátor. To je potrebné, aby sa zabránilo metastabilite, ak fyzický pin zmení hodnotu blízko okraja vnútorných hodín, ale tiež to spôsobí oneskorenie. Obrázok 10-3 ukazuje časový diagram synchronizácie pri čítaní externe aplikovanej hodnoty kolíka. Maximálne a minimálne oneskorenie šírenia sú označené tpd,max a tpd,min.
Zvážte časové obdobie začínajúce krátko po prvej klesajúcej hrane systémových hodín. Západka je zatvorená, keď sú hodiny nízke, a priehľadná, keď sú hodiny vysoké, ako to naznačuje tieňovaná oblasť signálu „SYNC LATCH“. Hodnota signálu je zablokovaná, keď hodiny systému klesnú. Je zaznamenaný do registra PINxn na nasledujúcej kladnej hrane hodín. Ako je naznačené dvoma šípkami tpd, max a tpd, min, prechod jedného signálu na kolíku sa oneskorí medzi ½ a 1½ systémovým časovým obdobím v závislosti od času tvrdenia.
Pri spätnom načítaní softvérovo priradenej hodnoty kolíka je potrebné vložiť príkaz nop, ako je uvedené v Obrázok 10-4. Inštrukcia out nastaví signál „SYNC LATCH“ na kladnú hranu hodín. V tomto prípade je oneskorenie tpd synchronizátorom jedna perióda systémových hodín.
Nasledujúci kód naprample ukazuje, ako nastaviť kolíky 0 a 1 portu B na vysokú, 2 a 3 nízku úroveň a definovať kolíky portu od 4 do 5 ako vstup s pull-up priradeným k portu 4. Výsledné hodnoty kolíkov sa znova načítajú, ale ako už bolo diskutované, je zahrnutá inštrukcia nop, aby bolo možné spätne prečítať hodnotu nedávno priradenú niektorým kolíkom.
Montážny kód Example(1) |
…
; Definujte ťahy a vysoko nastavte výstupy ; Definujte smery pre kolíky portu ldi r16,(1<<PB4)|(1<<PB1)|(1<<PB0) ldi r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0) von PORTB,r16 von DDRB,r17 ; Vložte nop pre synchronizáciu nie ; Prečítajte si piny portu v r16, PINB … |
Poznámka: Pre program montáže sa používajú dva dočasné registre, aby sa minimalizoval čas od ťahov, sú nastavené na kolíkoch 0, 1 a 4, kým nie sú správne nastavené smerové bity, definujú bity 2 a 3 ako nízke a predefinujú bity 0 a 1 ako silné vysoké vodiče.
C kód Example |
unsigned char i;
… /* Definujte ťahy a vysoko nastavte výstupy */ /* Definovanie smeru pre kolíky portu */ PORTB = (1< DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0); /* Vložiť nop pre synchronizáciu*/ _NOP (); /* Čítanie pinov portov */ i = PINB; … |
Režimy digitálneho vstupu a režimy spánku
Ako je uvedené v Obrázok 10-2, digitálny vstupný signál môže byť clamped k zemi na vstupe schmittovej spúšte. Signál označený na obrázku SLEEP je nastavený ovládačom spánku MCU v režime vypnutia, aby sa predišlo vysokej spotrebe energie, ak niektoré vstupné signály zostávajú pohyblivé alebo majú úroveň analógového signálu blízku VCC/2.
Funkcia SLEEP je prepísaná pre piny portu povolené ako piny externého prerušenia. Ak externá požiadavka na prerušenie nie je povolená, SLEEP je aktívny aj pre tieto piny. SLEEP je tiež potlačený rôznymi inými alternatívnymi funkciami, ako je popísané v „Alternatívne funkcie portov“ na stránke 57.
Ak sa na asynchrónnom externom kolíku prerušenia nakonfigurovanom ako "Prerušenie na vzostupnej hrane, klesajúcej hrane alebo akákoľvek logická zmena na kolíku" nachádza vysoká logická úroveň („jedna“), pričom externé prerušenie nie je povolené, zobrazí sa príslušný príznak externého prerušenia. nastaviť pri návrate z vyššie uvedeného režimu spánku, pretože klampv týchto režimoch spánku spôsobuje požadovanú logickú zmenu.
Nepripojené piny
Ak niektoré piny nepoužívate, odporúča sa zabezpečiť, aby mali tieto piny definovanú úroveň. Aj keď je väčšina digitálnych vstupov deaktivovaná v režimoch hlbokého spánku, ako je opísané vyššie, je potrebné vyhnúť sa pohyblivým vstupom, aby sa znížila spotreba prúdu vo všetkých ostatných režimoch, kde sú digitálne vstupy povolené (reset, aktívny režim a nečinný režim).
Najjednoduchším spôsobom, ako zabezpečiť definovanú úroveň nepoužitého kolíka, je umožniť vnútorné vytiahnutie. V tomto prípade bude vytiahnutie počas resetovania deaktivované. Ak je dôležitá nízka spotreba energie počas resetovania, odporúča sa použiť externé vytiahnutie alebo roztiahnutie. Pripojenie nepoužívaných kolíkov priamo k VCC alebo GND sa neodporúča, pretože to môže spôsobiť nadmerné prúdy, ak je kolík náhodne nakonfigurovaný ako výstup.
Alternatívne funkcie portu
Väčšina pinov portov má okrem bežných digitálnych I / O aj alternatívne funkcie. Obrázok 10-5 ukazuje, ako riadiace signály portu pin zo zjednodušeného Obrázok 10-2 môžu byť nahradené alternatívnymi funkciami. Potlačujúce signály nemusia byť prítomné vo všetkých kolíkoch portov, ale obrázok slúži ako všeobecný popis použiteľný pre všetky kolíky portov v rodine mikrokontrolérov AVR.
Tabuľka 10-2. Všeobecný popis nadradených signálov pre alternatívne funkcie
Názov signálu | Celé meno | Popis |
PUOE | Zapnutie potlačenia vytiahnutia | Pokiaľ je tento signál nastavený, povoľovanie rozťahovania je riadené signálom PUOV. Ak je tento signál vymazaný, pull-up je povolený, keď
{DDxn, PORTxn, PUD} = 0b010. |
PUOV | Hodnota prepísania Pull-up | Ak je nastavený PUOE, pull-up je povolený / zakázaný, keď je PUOV nastavený / vymazaný, bez ohľadu na nastavenie bitov DDxn, PORTxn a PUD Register. |
DDOE | Prepísanie smeru údajov je povolené | Ak je tento signál nastavený, aktivácia ovládača výstupu je riadená signálom DDOV. Ak je tento signál vymazaný, výstupný ovládač je povolený bitom DDxn Register. |
DDOV | Hodnota prepísania smeru údajov | Ak je nastavený DDOE, výstupný ovládač je povolený / zakázaný, keď je DDOV nastavený / vymazaný, bez ohľadu na nastavenie bitu DDxn Register. |
PVOE | Prepísanie hodnoty portu povolené | Ak je tento signál nastavený a výstupný ovládač je povolený, hodnota portu je riadená signálom PVOV. Ak je PVOE vymazaný a výstupný ovládač je povolený, hodnota portu je riadená bitom registra PORTxn. |
PVOV | Hodnota prepísania hodnoty portu | Ak je nastavený PVOE, hodnota portu je nastavená na PVOV, bez ohľadu na nastavenie bitu PORTxn Register. |
PTOE | Povoliť prepísanie prepínania portov | Ak je nastavený PTOE, bit PORTxn Register je invertovaný. |
DIEOE | Digitálny vstup Povoliť Prepísať Povoliť | Ak je tento bit nastavený, aktivácia digitálneho vstupu je riadená signálom DIEOV. Ak je tento signál vymazaný, aktivácia digitálneho vstupu je určená stavom MCU (normálny režim, režim spánku). |
DIEOV | Hodnota digitálneho vstupu umožňuje prepísať hodnotu | Ak je nastavený DIEOE, digitálny vstup je povolený / zakázaný, keď je DIEOV nastavený / vymazaný, bez ohľadu na stav MCU (normálny režim, režim spánku). |
DI | Digitálny vstup | Toto je digitálny vstup na striedanie funkcií. Na obrázku je signál pripojený k výstupu schmittovho spúšťača, ale pred synchronizátorom. Pokiaľ digitálny vstup nie je používaný ako zdroj hodín, modul s alternatívnou funkciou použije vlastný synchronizátor. |
AIO | Analógový vstup / výstup | Toto je analógový vstup / výstup z / do alternatívnych funkcií. Signál je pripojený priamo k doske a môže byť použitý obojsmerne. |
Nasledujúce podkapitoly stručne popisujú alternatívne funkcie pre každý port a súvisia s prvoradými signálmi s alternatívnou funkciou. Ďalšie podrobnosti nájdete v opise alternatívnej funkcie.
Alternatívne funkcie prístavu B.
Kolíky portu B s alternatívnou funkciou sú zobrazené v Tabuľka 10-3.
Tabuľka 10-3. Piny portu B Alternatívne funkcie
Port Pin | Alternatívna funkcia |
PB5 | ![]() RESET: Resetovať PIN dW: debugWIRE I / O ADC0: Vstupný kanál ADC 0 PCINT5: Prerušenie výmeny pinov, zdroj 5 |
PB4 | XTAL2: Výstup kryštálového oscilátora CLKO: Výstup systémových hodín ADC2: Vstupný kanál ADC 2
OC1B: Časovač / Počítadlo1 Porovnanie výstupu zhody B PCINT4: Prerušenie výmeny pinov 0, Zdroj 4 |
PB3 | XTAL1: Vstup kryštálového oscilátora CLKI: Vstup externých hodín ADC3: Vstupný kanál ADC 3
OC1B: Doplnkový časovač / počítadlo1 Porovnanie výstupu zhody B PCINT3: Prerušenie výmeny kolíka 0, zdroj 3 |
PB2 | SCK: Vstup pre sériové hodiny ADC1: Vstupný kanál ADC 1
T0: Časovač / Počítadlo0 Zdroj hodín USCK: Hodiny USI (režim troch vodičov) SCL: Hodiny USI (Režim dvoch vodičov) INT0: Externé prerušenie 0 Vstup PCINT2: Prerušenie zmeny PIN 0, Zdroj 2 |
PB1 | MISO: SPI vstup hlavných údajov / výstup podriadených údajov AIN1: analógový komparátor, záporný vstup OC0B: časovač / počítadlo0 porovnanie výstupu zhody B OC1A: časovač / počítadlo1 porovnanie zhody výstupu A DO: výstup údajov USI (režim troch vodičov) PCINT1: prerušenie výmeny pinov 0, zdroj 1 |
PB0 | MOSI :: SPI Výstup kmeňových dát / Vstup slave dát AIN0: Analógový komparátor, pozitívny vstup
OC0A: Timer/Counter0 Porovnanie výstupu Match A OC1A: Doplnkový časovač / počítadlo1 Porovnanie Zhoda výstupu A DI: Vstup údajov USI (režim troch vodičov) SDA: Vstup údajov USI (režim dvoch vodičov) AREF: Externá analógová referencia PCINT0: Prerušenie výmeny pinov 0, Zdroj 0 |
Port B, bit 5 - RESET / dW / ADC0 / PCINT5
RESET: Vstup externého resetovania je aktívny nízky a je povolený neprogramovaním poistky RSTDISBL („1“). Ak sa pin použije ako pin RESET, aktivuje sa pullup a výstupný ovládač a digitálny vstup sa deaktivujú.
dW: Keď je naprogramovaná poistka debugWIRE Enable (DWEN) a zámkové bity nie sú naprogramované, aktivuje sa systém debugWIRE v cieľovom zariadení. Pin portu RESET je nakonfigurovaný ako obojsmerný I / O pin drôt-A (otvorený-odtok) s povoleným pull-up a stáva sa komunikačnou bránou medzi cieľom a emulátorom.
ADC0: Analógovo-digitálny prevodník, kanál 0.
PCINT5: Zdroj prerušenia výmeny pinov 5.
Port B, bit 4 - XTAL2 / CLKO / ADC2 / OC1B / PCINT4
XTAL2: Pin 2. Oscilátor hodín čipu. Používa sa ako hodinový pin pre všetky zdroje hodín hodín čipu okrem interného kalibrovaného RC oscilátora a externých hodín. Keď sa použije ako hodinový pin, tento pin sa nedá použiť ako I / O pin. Pri použití interného kalibrovateľného RC oscilátora alebo externých hodín ako zdroja hodinových čipov slúži PB4 ako obyčajný I / O pin.
CLKO: Rozdelené systémové hodiny môžu byť výstupné na kolíku PB4. Ak sú naprogramované poistky CKOUT, budú na výstupe rozdelené systémové hodiny, bez ohľadu na nastavenia PORTB4 a DDB4. Bude tiež vydaný počas resetu.
ADC2: Analógovo-digitálny prevodník, kanál 2.
OC1B: Výstup porovnania zhody výstupu: Pin PB4 môže slúžiť ako externý výstup pre porovnanie zhody Timer / Counter1 Match B, keď je nakonfigurovaný ako výstup (sada DDB4). Pin OC1B je tiež výstupným pinom pre funkciu časovača v režime PWM.
PCINT4: Zdroj prerušenia výmeny pinov 4.
Port B, bit 3 - XTAL1 / CLKI / ADC3 / OC1B / PCINT3
XTAL1: Pin 1. Oscilátor čipových hodín. Používa sa pre všetky zdroje hodinových hodín čipu okrem interného kalibrovaného RC oscilátora. Keď sa použije ako hodinový pin, tento pin sa nedá použiť ako I / O pin.
CLKI: Vstup hodín z externého zdroja hodín, pozri „Externé hodiny“ na stránke 26.
ADC3: Analógovo-digitálny prevodník, kanál 3.
OC1B: Porovnanie porovnania výstupu s porovnaním výstupu: Pin PB3 môže slúžiť ako externý výstup pre porovnanie zápasu B s časovačom / počítadlom 1, ak je nakonfigurovaný ako výstup (sada DDB3). Pin OC1B je tiež invertovaný výstupný pin pre funkciu časovača režimu PWM.
PCINT3: Zdroj prerušenia výmeny pinov 3.
Port B, bit 2 - SCK / ADC1 / T0 / USCK / SCL / INT0 / PCINT2
SCK: výstup Master Clock, vstupný pin Slave Clock pre kanál SPI. Keď je SPI povolený ako Slave, tento pin je nakonfigurovaný ako vstup bez ohľadu na nastavenie DDB2. Keď je SPI povolený ako hlavný, smer údajov tohto kolíka je riadený pomocou DDPB2. Keď je pin vynútený SPI ako vstup, pull-up je možné stále ovládať bitom PORTB2.
ADC1: Analógovo-digitálny prevodník, kanál 1.
T0: Zdroj časovača / počítadla0.
USCK: Trojvodičový režim Hodiny univerzálneho sériového rozhrania.
SCL: Dvojvodičový režim Sériové hodiny pre dvojvodičový režim USI.
INT0: Externý zdroj prerušenia 0.
PCINT2: Zdroj prerušenia výmeny pinov 2.
Port B, bit 1 - MISO / AIN1 / OC0B / OC1A / DO / PCINT1
MISO: vstup hlavných údajov, výstupný kolík vedľajších údajov pre kanál SPI. Keď je SPI povolený ako Master, tento pin je nakonfigurovaný ako vstup bez ohľadu na nastavenie DDB1. Keď je SPI povolený ako Slave, smer dát tohto kolíka je riadený pomocou DDB1. Keď je pin vynútený SPI ako vstup, pull-up je možné stále ovládať bitom PORTB1.
AIN1: Negatívny vstup analógového komparátora. Nakonfigurujte pin portu ako vstup s vypnutým interným pull-upom, aby nedošlo k narušeniu funkcie digitálneho portu s funkciou analógového komparátora.
OC0B: Output Compare Match output. Pin PB1 môže slúžiť ako externý výstup pre porovnanie zápasu Timer / Counter0 B. Pin PB1 musí byť nakonfigurovaný ako výstup (sada DDB1 (jedna)), aby slúžil tejto funkcii. Pin OC0B je tiež výstupným pinom pre funkciu časovača v režime PWM.
OC1A: Výstup porovnania zhody výstupu: Pin PB1 môže slúžiť ako externý výstup pre porovnanie zhody Timer / Counter1 Match B, keď je nakonfigurovaný ako výstup (sada DDB1). Pin OC1A je tiež výstupným pinom pre funkciu časovača v režime PWM.
DO: Trojvodičový režim Dátový výstup univerzálneho sériového rozhrania. Trojvodičový režim Dátový výstup prepíše hodnotu PORTB1 a do portu sa prenesie, keď je nastavený bit smeru údajov DDB1 (jeden). PORTB1 stále umožňuje pull-up, ak je zadaný smer a je nastavený PORTB1 (jeden).
PCINT1: Zdroj prerušenia výmeny pinov 1.
Port B, bit 0 - MOSI / AIN0 / OC0A / OC1A / DI / SDA / AREF / PCINT0
MOSI: Výstup hlavných údajov SPI, vstup vedľajších údajov pre kanál SPI. Keď je SPI povolený ako Slave, tento pin je nakonfigurovaný ako vstup bez ohľadu na nastavenie DDB0. Keď je SPI povolený ako Master, smer dát tohto kolíka je riadený pomocou DDB0. Keď je pin vynútený SPI ako vstup, pull-up je možné stále ovládať bitom PORTB0.
AIN0: Pozitívny vstup analógového komparátora. Nakonfigurujte pin portu ako vstup s vypnutým interným pull-upom, aby nedošlo k narušeniu funkcie digitálneho portu s funkciou analógového komparátora.
OC0A: Output Compare Match output. Pin PB0 môže slúžiť ako externý výstup pre porovnanie zápasu Timer / Counter0 Match A, keď je nakonfigurovaný ako výstup (sada DDB0 (jedna)). Pin OC0A je tiež výstupným pinom pre funkciu časovača v režime PWM.
OC1A: Porovnanie výstupu s porovnaním výstupu: Pin PB0 môže slúžiť ako externý výstup pre porovnanie zápasu B s časovačom / počítadlom 1, ak je nakonfigurovaný ako výstup (sada DDB0). Pin OC1A je tiež invertovaný výstupný pin pre funkciu časovača režimu PWM.
SDA: Údaje sériového rozhrania v dvojvodičovom režime.
AREF: Externá analógová referencia pre ADC. Pullup a výstupný ovládač sú na PB0 deaktivované, ak je pin použitý ako externá referencia alebo interný voltage Referencia s externým kondenzátorom na pine AREF.
DI: Vstup dát v USI trojvodičovom režime. USI Trojvodičový režim neprepíše bežné funkcie portu, takže pin musí byť nakonfigurovaný ako vstup pre funkciu DI.
PCINT0: Zdroj prerušenia výmeny pinov 0.
Tabuľka 10-4 a Tabuľka 10-5 súvisia alternatívne funkcie portu B s prvoradými signálmi zobrazenými v Obrázok 10-5 zapnutý strana 58.
Tabuľka 10-4. Prepisujúce signály pre alternatívne funkcie v PB[5:3]
Názov 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 | prenos debugWire | 0 | 0 |
PVOE | 0 | OC1B povoliť | ![]() OC1B povoliť |
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: keď je poistka „0“ (naprogramovaná).
Tabuľka 10-5. Prepisujúce signály pre alternatívne funkcie v PB[2:0]
Názov 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 | Povoliť OC0B + Povoliť OC1A + USI_THREE_WIRE | ![]() OC0A povoliť + OC1A povoliť + (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 | DI / SDA / PCINT0 vstup |
AIO | Vstup ADC1 | Negatívny vstup analógového komparátora | Pozitívny vstup analógového komparátora |
Popis registrácie
MCUCR - riadiaci register MCU
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | TELO | ISC01 | ISC00 | MCUCR |
Čítanie/Písanie | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Počiatočná hodnota | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 6 - PUD: Pull-up Disable
Keď je tento bit zapísaný do jedného, príkazy v I / O portoch sú zakázané, aj keď sú registre DDxn a PORTxn nakonfigurované tak, aby povoľovali príklady ({DDxn, PORTxn} = 0b01). Pozri „Konfigurácia kolíka“ na stránke 54 pre viac informácií o tejto funkcii.
PORTB - register údajov portu B.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x18 | – | – | PORTB5 | PORTB4 | PORTB3 | PORTB2 | PORTB1 | PORTB0 | PORTB |
Čítanie/Písanie | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Počiatočná hodnota | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Register smeru údajov DDRB - Port B.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x17 | – | – | DDB5 | DDB4 | DDB3 | DDB2 | DDB1 | DDB0 | DDRB |
Čítanie/Písanie | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Počiatočná hodnota | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
PINB - adresa vstupných pinov portu B.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x16 | – | – | PINB5 | PINB4 | PINB3 | PINB2 | PINB1 | PINB0 | PINB |
Čítanie/Písanie | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Počiatočná hodnota | 0 | 0 | N/A | N/A | N/A | N/A | N/A | N/A |
8-bitový časovač / počítadlo0 s PWM
Vlastnosti
Dve nezávislé jednotky na porovnanie výstupu
Registre na porovnanie výstupu s dvojitým medzipamäťom
Vymazať časovač pri porovnaní zhody (automatické načítanie)
Bezproblémový, fázovo správny modulátor šírky impulzu (PWM)
Variabilné obdobie PWM
Generátor frekvencie
Tri nezávislé zdroje prerušenia (TOV0, OCF0A a OCF0B)
Koniecview
Timer / Counter0 je univerzálny 8-bitový modul Timer / Counter s dvoma nezávislými jednotkami na porovnávanie výstupu a s podporou PWM. Umožňuje presné načasovanie vykonania programu (správa udalostí) a generovanie vĺn.
Zjednodušená bloková schéma 8-bitového časovača / počítadla je zobrazená v Obrázok 11-1. Skutočné umiestnenie I / O pinov nájdete na „Pinout ATtiny25 / 45/85“ na strane 2. CPU prístupné I / O registre, vrátane I / O bitov a I / O pinov, sú zobrazené tučne. Špecifický I / O register a bitové umiestnenia sú uvedené v zozname “Popis registrácie” na strane 77.
Registre časovača/počítadla (TCNT0) a výstupného porovnávacieho registra (OCR0A a OCR0B) sú 8-bitové registre. Signály žiadosti o prerušenie (na obrázku skrátene Int.Req.) sú všetky viditeľné v registri príznakov prerušenia časovača (TIFR). Všetky prerušenia sú individuálne maskované pomocou registra masky prerušenia časovača (TIMSK). TIFR a TIMSK nie sú na obrázku znázornené.
Časovač/počítadlo môže byť taktovaný interne, cez preddeličku alebo externým zdrojom hodín na kolíku T0. Logický blok Clock Select riadi, ktorý zdroj a hranu hodín používa časovač/počítadlo na zvýšenie (alebo zníženie) svojej hodnoty. Časovač/počítadlo je neaktívne, keď nie je zvolený žiadny zdroj hodín. Výstup z logiky Clock Select sa označuje ako hodiny časovača (clkT0).
Registre porovnania výstupu s dvojitým medzipamäťom (OCR0A a OCR0B) sa vždy porovnávajú s hodnotou časovača / počítadla. Výsledok porovnania môže byť použitý generátorom kriviek na generovanie PWM alebo výstupu premennej frekvencie na kolíkoch výstupu porovnania (OC0A a OC0B). Pozrite si „Jednotka na porovnanie výstupu“ na stránke 69. pre podrobnosti. Udalosť Porovnať zhodu tiež nastaví príznak porovnania (OCF0A alebo OCF0B), ktorý je možné použiť na vygenerovanie žiadosti o prerušenie porovnávania výstupu.
Definície
Mnoho registrov a bitových odkazov v tejto časti je napísaných všeobecne. Malé písmeno „n“ nahrádza číslo časovača / počítadla, v tomto prípade 0. Malé písmeno „x“ nahrádza jednotku na porovnanie výstupu, v tomto prípade porovnávacia jednotka A alebo porovnávacia jednotka B. Avšak pri použití registra alebo bitu je definované v programe musí byť použitá presná forma, tj. TCNT0 pre prístup k hodnote počítadla Timer / Counter0 a podobne.
Definície v Tabuľka 11-1 sa tiež rozsiahlo používajú v celom dokumente.
Tabuľka 11-1. Definície
Neustále | Popis |
DNO | Počítadlo dosiahne NADOLO, keď sa stane 0x00 |
MAX | Počítadlo dosiahne maximum, keď sa stane 0xFF (desatinné miesto 255) |
TOP | Počítadlo dosiahne vrchol, keď sa rovná najvyššej hodnote v postupnosti počítania. TOP hodnote je možné priradiť pevnú hodnotu 0xFF (MAX) alebo hodnotu uloženú v registri OCR0A. Priradenie závisí od prevádzkového režimu |
Časovač / Counter Prescaler a zdroje hodín
Časovač / počítadlo je možné taktovať pomocou interného alebo externého zdroja hodín. Zdroj hodín je vybraný logikou Clock Select, ktorá je riadená bitmi Clock Select (c) umiestnenými v riadiacom registri Timer / Counter0 (TCCR0B).
Vnútorný zdroj hodín s funkciou Prescaler
Časovač/Počítadlo0 môže byť taktovaný priamo systémovými hodinami (nastavením CS0[2:0] = 1). To poskytuje najrýchlejšiu prevádzku s maximálnou frekvenciou časovača/počítadla, ktorá sa rovná frekvencii systémových hodín (fCLK_I/O). Alternatívne možno ako zdroj hodín použiť jeden zo štyroch kohútikov z preddeličky. Predškálované hodiny majú frekvenciu buď
Prednastavený reset
Predbežný merač beží voľne, tj. Funguje nezávisle od logiky výberu hodín časovača/počítadla0. Pretože predvoľba nie je ovplyvnená výberom hodín časovača/počítadla, stav predzosilňovača bude mať dôsledky pre situácie, kde sa používajú prednastavené hodiny. Jeden exampLektúra artefaktu predkalkulovania je vtedy, keď je časovač/počítadlo povolený a taktovaný prescalerom (6> CS0 [2: 0]> 1). Počet cyklov systémových hodín od aktivácie časovača do prvého počtu odpočtov môže byť od 1 do N+1 cyklov systémových hodín, kde N sa rovná deliteľu predzosilňovača (8, 64, 256 alebo 1024).
Na synchronizáciu časovača / počítadla s vykonaním programu je možné použiť Reset predkaplera.
Externý zdroj hodín
Externý zdroj hodín aplikovaný na kolík T0 možno použiť ako hodiny časovača/počítadla (clkT0). Pin T0 je sampviedla raz za každý cyklus systémových hodín logikou synchronizácie pinov. Synchronizované (sampLED)
cez detektor hrany. Obrázok 11-2 znázorňuje funkčný ekvivalentný blokový diagram synchronizácie T0 a logiky detektora hrán. Registre sú taktované na kladnej hrane vnútorných systémových hodín (clkI/O). Západka je priehľadná počas vysokej periódy vnútorných systémových hodín.
Detektor hrán generuje jeden impulz clkT0 pre každú pozitívnu (CS0[2:0] = 7) alebo negatívnu (CS0[2:0] = 6) hranu, ktorú zaznamená.
Registre OCR0x majú dvojitú medzipamäť, keď používajú niektorý z režimov pulznej šírkovej modulácie (PWM). Pre normálne prevádzkové režimy a režim Clear Timer on Compare (CTC) je dvojité ukladanie do vyrovnávacej pamäte zakázané. Dvojité ukladanie do vyrovnávacej pamäte synchronizuje aktualizáciu porovnávacích registrov OCR0x buď na hornú, alebo dolnú časť počítacej sekvencie. Synchronizácia zabráni výskytu nepárnych dĺžok nesymetrických PWM impulzov, čím sa výstup stane bez závad.
Prístup do registra OCR0x sa môže zdať zložitý, ale nie je to tak. Keď je povolené dvojité ukladanie do vyrovnávacej pamäte, CPU má prístup k OCR0x vyrovnávaciemu registru a ak je dvojité ukladanie do vyrovnávacej pamäte zakázané, CPU bude pristupovať k OCR0x priamo.
Porovnanie silového výkonu
V režimoch generovania kriviek iných ako PWM možno vynútiť zhodný výstup komparátora zápisom jedného do bitu Force Output Compare (FOC0x). Vynútenie funkcie Porovnanie zhody nenastaví príznak OCF0x ani opätovné načítanie / vymazanie časovača, ale pin OC0x sa aktualizuje, akoby došlo ku skutočnej komparácii zhody (nastavenie bitov COM0x [1: 0] definuje, či je pin OC0x nastavený, vymazaný alebo prepínané).
Porovnajte blokovanie zhody pomocou zápisu TCNT0
Všetky operácie zápisu CPU do registra TCNT0 zablokujú akúkoľvek porovnávaciu zhodu, ktorá sa vyskytne v nasledujúcom časovom cykle časovača, aj keď je časovač zastavený. Táto funkcia umožňuje inicializáciu OCR0x na rovnakú hodnotu ako TCNT0 bez spustenia prerušenia, keď sú zapnuté hodiny časovača / počítadla.
Pomocou jednotky na porovnanie výstupu
Pretože zápis TCNT0 v akomkoľvek prevádzkovom režime zablokuje všetky porovnávacie zhody pre jeden časový cyklus časovača, pri zmene TCNT0 pri použití jednotky na porovnanie výstupu existujú riziká, nezávisle od toho, či je časovač / počítadlo v prevádzke alebo nie. Ak sa hodnota zapísaná do TCNT0 rovná hodnote OCR0x, bude porovnávacia zhoda chýbať, čo bude mať za následok nesprávne generovanie krivky. Podobne nepíšte hodnotu TCNT0 rovnajúcu sa BOTTOM, keď počítadlo počíta dole.
Nastavenie OC0x by sa malo vykonať pred nastavením dátového smerového registra pre výstup kolíka portu. Najjednoduchší spôsob nastavenia hodnoty OC0x je použitie strobovacích bitov Force Output Compare (FOC0x) v normálnom režime. Registre OC0x si zachovávajú svoje hodnoty aj pri zmene medzi režimami generovania kriviek.
Uvedomte si, že bity COM0x [1: 0] nie sú dvojito ukladané do vyrovnávacej pamäte spolu s porovnávacou hodnotou. Zmena bitov COM0x [1: 0] sa prejaví okamžite.
Porovnajte výstupnú jednotku zhody
Bity režimu porovnania výstupu (COM0x [1: 0]) majú dve funkcie. Generátor kriviek používa bity COM0x [1: 0] na definovanie stavu porovnania výstupu (OC0x) pri nasledujúcej porovnávacej zhode. Bity COM0x [1: 0] tiež riadia výstupný zdroj kolíkov OC0x. Obrázok 11-6 ukazuje zjednodušenú schému logiky ovplyvnenej nastavením bitu COM0x [1: 0]. I / O registre, I / O bity a I / O piny na obrázku sú zobrazené tučne. Zobrazené sú iba časti všeobecných registrov riadenia portov I / O (DDR a PORT), ktoré sú ovplyvnené bitmi COM0x [1: 0]. Keď sa odkazuje na stav OC0x, ide o referenciu pre interný register OC0x, nie pre pin OC0x. Ak dôjde k resetu systému, register OC0x sa vynuluje na „0“.
Keď je OC0A / OC0B pripojený k I / O kolíku, závisí funkcia bitov COM0A [1: 0] / COM0B [1: 0] od nastavenia bitu WGM0 [2: 0]. Tabuľka 11-2 ukazuje bitovú funkčnosť COM0x [1: 0], keď sú bity WGM0 [2: 0] nastavené na normálny alebo CTC režim (non-PWM).
Tabuľka 11-2. Porovnať režim výstupu s režimom bez PWM
COM0A1 COM0B1 | COM0A0 COM0B0 | Popis |
0 | 0 | Normálna prevádzka portu, OC0A / OC0B odpojený. |
0 | 1 | Prepnúť OC0A / OC0B pri porovnávaní zhody |
1 | 0 | Vymazať OC0A / OC0B pri porovnaní zhody |
1 | 1 | Nastavte OC0A / OC0B na funkciu Porovnať zhodu |
Tabuľka 11-3 ukazuje bitovú funkčnosť COM0x [1: 0], keď sú bity WGM0 [2: 0] nastavené na rýchly režim PWM.
Tabuľka 11-3. Porovnajte režim výstupu a režim rýchleho PWM(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Popis |
0 | 0 | Normálna prevádzka portu, OC0A / OC0B odpojený. |
0 | 1 | Rezervované |
1 | 0 | Vymazať OC0A / OC0B pri porovnaní zhody, nastaviť OC0A / OC0B na DOLE (neinvertujúci režim) |
1 | 1 | Nastaviť OC0A / OC0B na funkciu Porovnanie zhody, vymazať OC0A / OC0B v spodnej časti (režim obrátenia) |
Poznámka: Špeciálny prípad nastane, keď sa OCR0A alebo OCR0B rovná TOP a je nastavené COM0A1/COM0B1. V tomto prípade sa porovnávacia zhoda ignoruje, ale nastavenie alebo vymazanie sa vykoná na BOTTOM. Pozri „Rýchly režim PWM“ na stránke 73 pre viac podrobností.
Tabuľka 11-4 ukazuje bitovú funkčnosť COM0x [1: 0], keď sú bity WGM0 [2: 0] nastavené na fázovo správny režim PWM.
Tabuľka 11-4. Porovnať výstupný režim, fázovo správny režim PWM(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Popis |
0 | 0 | Normálna prevádzka portu, OC0A / OC0B odpojený. |
0 | 1 | Rezervované |
1 | 0 | Vyčistite OC0A / OC0B pri porovnávaní zhody pri zvyšovaní počtu. Pri odpočítavaní nastavte OC0A / OC0B na funkciu Porovnať zhodu. |
1 | 1 | Pri počítaní hore nastavte OC0A / OC0B na funkciu Porovnať zhodu. Pri odpočítavaní vynulujte OC0A / OC0B pri porovnaní zhody. |
Poznámka: 1. Špeciálny prípad nastane, keď sa OCR0A alebo OCR0B rovná TOP a je nastavené COM0A1/COM0B1. V tomto prípade sa porovnávacia zhoda ignoruje, ale nastavenie alebo vymazanie sa vykoná na TOP. Pozri „Fázovo správny režim PWM“ na strane 74 pre viac podrobností.
Bity 3: 2 - Res: Rezervované bity
Tieto bity sú rezervované bity v ATtiny25 / 45/85 a budú sa vždy čítať ako nula.
Bity 1: 0 - WGM0 [1: 0]: Režim generovania krivky
V kombinácii s bitom WGM02 nachádzajúcim sa v registri TCCR0B tieto bity riadia postupnosť počítania počítadla, zdroj maximálnej hodnoty (TOP) počítadla a aký typ generovania krivky sa má použiť, pozri Tabuľka 11-5. Prevádzkové režimy podporované jednotkou časovača / počítadla sú: normálny režim (počítadlo), režim Clear Timer v režime porovnania zhody (CTC) a dva typy režimov pulznej šírkovej modulácie (PWM) (pozri „Prevádzkové režimy“ na strane 71).
Tabuľka 11-5. Popis bitu režimu generovania tvaru vlny
Režim | WGM 02 | WGM 01 | WGM 00 | Prevádzkový režim časovača / počítadla | TOP | Aktualizácia OCRx o | Nastavená vlajka TOV |
0 | 0 | 0 | 0 | Normálne | 0xFF | Okamžité | MAX(1) |
1 | 0 | 0 | 1 | PWM, správna fáza | 0xFF | TOP | DNO(2) |
2 | 0 | 1 | 0 | CTC | OCRA | Okamžité | MAX(1) |
3 | 0 | 1 | 1 | Rýchle PWM | 0xFF | DNO(2) | MAX(1) |
4 | 1 | 0 | 0 | Rezervované | – | – | – |
5 | 1 | 0 | 1 | PWM, správna fáza | OCRA | TOP | DNO(2) |
6 | 1 | 1 | 0 | Rezervované | – | – | – |
7 | 1 | 1 | 1 | Rýchle PWM | OCRA | DNO(2) | TOP |
Bit 7 - FOC0A: Porovnanie výstupu sily A
Bit FOC0A je aktívny iba vtedy, keď bity WGM určujú režim, ktorý nie je PWM.
Aby sa však zaistila kompatibilita s budúcimi zariadeniami, musí sa tento bit nastaviť na nulu, keď sa pri práci v režime PWM zapisuje TCCR0B. Pri zápise logického do bitu FOC0A sa vynúti okamžité porovnanie zhody na jednotku generovania kriviek. Výstup OC0A sa mení podľa nastavenia jeho bitov COM0A [1: 0]. Všimnite si, že bit FOC0A je implementovaný ako stroboskop. Preto je to hodnota prítomná v bitoch COM0A [1: 0], ktorá určuje účinok vynúteného porovnania.
Stroboskop FOC0A nebude generovať žiadne prerušenie, ani nevymaže časovač v režime CTC pomocou OCR0A ako TOP. Bit FOC0A sa vždy číta ako nula.
Bit 6 - FOC0B: Porovnanie výstupu sily B
Bit FOC0B je aktívny iba vtedy, keď bity WGM určujú režim, ktorý nie je PWM.
Aby sa však zaistila kompatibilita s budúcimi zariadeniami, musí sa tento bit nastaviť na nulu, keď sa pri práci v režime PWM zapisuje TCCR0B. Pri zápise logického do bitu FOC0B sa na jednotku generovania vln vynúti okamžité porovnanie zhody. Výstup OC0B sa mení podľa nastavenia jeho bitov COM0B [1: 0]. Všimnite si, že bit FOC0B je implementovaný ako stroboskop. Preto je to hodnota prítomná v bitoch COM0B [1: 0], ktorá určuje účinok vynúteného porovnania.
Stroboskop FOC0B nebude generovať žiadne prerušenie, ani nevymaže časovač v režime CTC pomocou OCR0B ako TOP.
Bit FOC0B sa vždy číta ako nula.
Bity 5: 4 - Res: Rezervované bity
Tieto bity sú rezervované bity v ATtiny25 / 45/85 a budú sa vždy čítať ako nula.
Bit 3 - WGM02: Režim generovania kriviek
Popis nájdete v „TCCR0A - Register riadenia časovača / počítadla A“ na strane 77.
Bity 2: 0 - CS0 [2: 0]: výber hodín
Tri bity Clock Select vyberajú zdroj hodín, ktorý má použiť časovač / počítadlo.
Tabuľka 11-6. Hodiny Vyberte popis bitu
CS02 | CS01 | CS00 | Popis |
0 | 0 | 0 | Žiadny zdroj hodín (časovač / počítadlo zastavené) |
0 | 0 | 1 | clkI/O/(žiadne predškálovanie) |
0 | 1 | 0 | clkI/O/8 (z preddeličky) |
0 | 1 | 1 | clkI/O/64 (z preddeličky) |
1 | 0 | 0 | clkI/O/256 (z preddeličky) |
1 | 0 | 1 | clkI/O/1024 (z preddeličky) |
1 | 1 | 0 | Externý zdroj hodín na kolíku T0. Hodiny na klesajúcej hrane. |
1 | 1 | 1 | Externý zdroj hodín na kolíku T0. Hodiny na stúpajúcej hrane. |
Ak sa pre Timer / Counter0 použijú režimy externého kolíka, prechody na kolíku T0 budú taktovať počítadlo, aj keď je kolík nakonfigurovaný ako výstup. Táto vlastnosť umožňuje softvérovú kontrolu počítania.
Počítadlo a porovnanie jednotiek
Všeobecná prevádzka Timer / Counter1 je popísaná v asynchrónnom režime a prevádzka v synchronizovanom režime je uvedená, iba ak existujú rozdiely medzi týmito dvoma režimami. Obrázok 12-2 zobrazuje blokový diagram synchronizačného registra časovača / počítadla 1 a oneskorenia synchronizácie medzi registrami. Upozorňujeme, že na obrázku nie sú zobrazené všetky podrobnosti o vrátení hodín. Hodnoty registra Timer / Counter1 prechádzajú internými synchronizačnými registrami, ktoré spôsobujú oneskorenie synchronizácie vstupu, pred ovplyvnením činnosti počítadla. Registre TCCR1, GTCCR, OCR1A, OCR1B a OCR1C je možné čítať späť hneď po zápise do registra. Hodnoty spätného čítania sú oneskorené pre register a indikátory Timer / Counter1 (TCNT1) (OCF1A, OCF1B a TOV1) kvôli synchronizácii vstupu a výstupu.
Časovač / Počítadlo1 sa vyznačuje vysokým rozlíšením a vysokou presnosťou pri nižších možnostiach prednastavenia. Môže tiež podporovať dva presné, vysokorýchlostné 8-bitové modulátory šírky impulzu, ktoré používajú hodiny až do 64 MHz (alebo 32 MHz v režime nízkej rýchlosti). V tomto režime Timer / Counter1 a výstupné porovnávacie registre slúžia ako duálne samostatné PWM s neprekrývajúcimi sa neinvertovanými a invertovanými výstupmi. Odkazujú na strana 86 podrobný popis tejto funkcie. Podobne, vďaka možnosti veľkého predimenzovania je táto jednotka užitočná pre funkcie s nižšou rýchlosťou alebo pre funkcie s presným načasovaním s občasnými činnosťami.
Obrázok 12-2. Bloková schéma synchronizačného registra časovača/počítadla 1.
Timer / Counter1 a predradník umožňujú spustenie CPU z ľubovoľného zdroja hodín, zatiaľ čo predradník pracuje na rýchlych hodinách PCK na frekvencii 64 MHz (alebo 32 MHz v režime nízkej rýchlosti) v asynchrónnom režime.
Pamätajte, že systémová frekvencia hodín musí byť nižšia ako jedna tretina frekvencie PCK. Ak sú systémové hodiny vysoké, synchronizačný mechanizmus asynchrónneho časovača / počítadla1 vyžaduje najmenej dve hrany PCK. Ak je frekvencia systémových hodín príliš vysoká, existuje riziko straty údajov alebo riadiacich hodnôt.
Nasledujúce Obrázok 12-3 zobrazuje blokový diagram časovača / počítadla1.
Tabuľka 12-1. Režim porovnávania Vyberte v režime PWM
COM1x1 | COM1x0 | Vplyv na kolíky porovnania výstupu |
0 | 0 | OC1x nie je pripojený. OC1x nie je pripojený. |
0 | 1 | OC1x vymazaný pri porovnávaní zápasu. Nastaviť, keďTCNT1 = $ 00. OC1x nastavený na porovnanie zhody. Vymazané, keď TCNT1 = 00 USD. |
1 | 0 | OC1x vymazaný pri porovnávaní zápasu. Nastavené, keď TCNT1 = $ 00. OC1x nie je pripojený. |
1 | 1 | OC1x Nastavený na porovnanie zhody. Vymazané, keď TCNT1 = 00 USD. OC1x nie je pripojený. |
Charakteristiky ADC
Tabuľka 21-8. Charakteristika ADC, jednostranné kanály. TA = -40 °C až +85 °C
Symbol | Parameter | Podmienka | Min | Typ | Max | Jednotky |
Rozlíšenie | 10 | Bity | ||||
Absolútna presnosť (vrátane chýb INL, DNL a kvantovania, zisku a posunu) | VREF = 4 V, VCC = 4 V,
Hodiny ADC = 200 kHz |
2 | LSB | |||
VREF = 4 V, VCC = 4 V,
Takt ADC = 1 MHz |
3 | LSB | ||||
VREF = 4 V, VCC = 4 V,
Hodiny ADC = 200 kHz Režim redukcie šumu |
1.5 | LSB | ||||
VREF = 4 V, VCC = 4 V,
Takt ADC = 1 MHz Režim redukcie šumu |
2.5 | LSB | ||||
Integrovaná nelinearita (INL) (presnosť po kalibrácii offsetu a zosilnenia) | VREF = 4 V, VCC = 4 V,
Hodiny ADC = 200 kHz |
1 | LSB | |||
Diferenciálna nelinearita (DNL) | VREF = 4 V, VCC = 4 V,
Hodiny ADC = 200 kHz |
0.5 | LSB | |||
Chyba zisku | VREF = 4 V, VCC = 4 V,
Hodiny ADC = 200 kHz |
2.5 | LSB | |||
Chyba ofsetu | VREF = 4 V, VCC = 4 V,
Hodiny ADC = 200 kHz |
1.5 | LSB | |||
Čas konverzie | Bezplatná prevádzka | 14 | 280 | us | ||
Frekvencia hodín | 50 | 1000 | kHz | |||
VIN | Vstupné objtage | GND | VREF | V | ||
Vstupná šírka pásma | 38.4 | kHz | ||||
AREF | Externý referenčný zväzoktage | 2.0 | VCC | V | ||
VINT | Interný zvtage Referencia | 1.0 | 1.1 | 1.2 | V | |
Interná referencia 2.56V (1) | VCC > 3.0 V | 2.3 | 2.56 | 2.8 | V | |
RREF | 32 | kΩ | ||||
RAIN | Odpor analógového vstupu | 100 | MΩ | |||
Výstup ADC | 0 | 1023 | LSB |
Poznámka: 1. Hodnoty sú len orientačné.
Tabuľka 21-9. Charakteristika ADC, diferenciálne kanály (Unipolárny režim). TA = -40 °C až +85 °C
Symbol | Parameter | Podmienka | Min | Typ | Max | Jednotky |
Rozlíšenie | Zisk = 1x | 10 | Bity | |||
Zisk = 20x | 10 | Bity | ||||
Absolútna presnosť (vrátane INL, DNL a
Chyby kvantovania, zosilnenia a posunutia) |
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á nelineárnosť (INL) (presnosť po vyrovnaní a kalibrácii zosilnenia) | 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 ofsetu | 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 konverzie | Bezplatná prevádzka | 70 | 280 | us | ||
Frekvencia hodín | 50 | 200 | kHz | |||
VIN | Vstupné objtage | GND | VCC | V | ||
VDIFF | Vstupný diferenciálny objemtage | VREF/Zisk | V | |||
Vstupná šírka pásma | 4 | kHz | ||||
AREF | Externý referenčný zväzoktage | 2.0 | VCC – 1.0 | V | ||
VINT | Interný zvtage Referencia | 1.0 | 1.1 | 1.2 | V | |
Interná referencia 2.56V (1) | VCC > 3.0 V | 2.3 | 2.56 | 2.8 | V | |
RREF | Referenčný vstupný odpor | 32 | kΩ | |||
RAIN | Odpor analógového vstupu | 100 | MΩ | |||
Výstup prevodu ADC | 0 | 1023 | LSB |
Poznámka: Hodnoty sú len orientačné.
Tabuľka 21-10. Charakteristika ADC, diferenciálne kanály (bipolárny režim). TA = -40 °C až +85 °C
Symbol | Parameter | Podmienka | Min | Typ | Max | Jednotky |
Rozlíšenie | Zisk = 1x | 10 | Bity | |||
Zisk = 20x | 10 | Bity | ||||
Absolútna presnosť (vrátane INL, DNL a
Chyby kvantovania, zosilnenia a posunutia) |
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á nelineárnosť (INL) (presnosť po vyrovnaní a kalibrácii zosilnenia) | 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 ofsetu | 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 konverzie | Bezplatná prevádzka | 70 | 280 | us | ||
Frekvencia hodín | 50 | 200 | kHz | |||
VIN | Vstupné objtage | GND | VCC | V | ||
VDIFF | Vstupný diferenciálny objemtage | VREF/Zisk | V | |||
Vstupná šírka pásma | 4 | kHz | ||||
AREF | Externý referenčný zväzoktage | 2.0 | VCC – 1.0 | V | ||
VINT | Interný zvtage Referencia | 1.0 | 1.1 | 1.2 | V | |
Interná referencia 2.56V (1) | VCC > 3.0 V | 2.3 | 2.56 | 2.8 | V | |
RREF | Referenčný vstupný odpor | 32 | kΩ | |||
RAIN | Odpor analógového vstupu | 100 | MΩ | |||
Výstup prevodu ADC | -512 | 511 | LSB |
Súhrn inštrukčnej sady
Mnemotechnické pomôcky | operandmi | Popis | Prevádzka | Vlajky | #Hodiny |
ARITMETICKÉ A LOGICKÉ POKYNY | |||||
PRIDAŤ | Rd, Rr | Pridajte dva registre | Rd ← Rd + Rr | Z, C, N, V, H | 1 |
ADC | Rd, Rr | Pridajte a vykonajte dva registre | Rd ← Rd + Rr + C | Z, C, N, V, H | 1 |
ADIW | Rdl, K | Pridajte okamžité slovo | Rdh:Rdl ← Rdh:Rdl + K | Z, C, N, V, S | 2 |
SUB | Rd, Rr | Odčítajte dva registre | Rd ← Rd – Rr | Z, C, N, V, H | 1 |
IŠLA SOM HORE | Rd, K. | Odpočítajte konštantu od registra | Rd ← Rd – K | Z, C, N, V, H | 1 |
SBC | Rd, Rr | Odčítajte a vykonajte dva registre | Rd ← Rd – Rr – C | Z, C, N, V, H | 1 |
SBCI | Rd, K. | Odčítajte s Carry Constant od reg. | Rd ← Rd – K – C | Z, C, N, V, H | 1 |
SBIW | Rdl, K | Odčítať okamžité od slova | Rdh:Rdl ← Rdh:Rdl – K | Z, C, N, V, S | 2 |
A | Rd, Rr | Logické A registre | Rd ← Rd ∙ Rr | Z, N, V | 1 |
ANDI | Rd, K. | Logický AND register a konštantný | Rd ← Rd ∙ K | Z, N, V | 1 |
OR | Rd, Rr | Logické ALEBO registre | Rd ← Rd v Rr | Z, N, V | 1 |
ORI | Rd, K. | Logický OR register a konštantný | Rd ← Rd v K | Z, N, V | 1 |
EOR | Rd, Rr | Výhradné registre ALEBO | Rd ← Rd ⊕ Rr | Z, N, V | 1 |
COM | Rd | Jeden je doplnok | Rd ← 0xFF − Rd | Z, C, N, V | 1 |
NEG | Rd | Dvojkový doplnok | Rd ← 0x00 − Rd | Z, C, N, V, H | 1 |
SBR | Rd, K. | Nastavte bity v registri | Rd ← Rd v K | Z, N, V | 1 |
CBR | Rd, K. | Vymazanie bitov v registri | Rd ← Rd ∙ (0xFF – K) | Z, N, V | 1 |
INC | Rd | Prírastok | Rd ← Rd + 1 | Z, N, V | 1 |
DEC | Rd | odpočítať | Rd ← Rd − 1 | Z, N, V | 1 |
TST | Rd | Test na nulu alebo mínus | Rd ← Rd ∙ Rd | Z, N, V | 1 |
CLR | Rd | Vymazať registráciu | Rd ← Rd ⊕ Rd | Z, N, V | 1 |
SER | Rd | Nastaviť register | Rd ← 0xFF | žiadne | 1 |
POKYNY K POBOČKÁM | |||||
RJMP | k | Relatívny skok | PC ← PC + k + 1 | žiadne | 2 |
IJMP | Nepriamy skok na (Z) | PC ← Z | žiadne | 2 | |
VYVOLAŤ | k | Relatívne volanie podprogramu | PC ← PC + k + 1 | žiadne | 3 |
ZAVOLAŤ | Nepriame volanie na (Z) | PC ← Z | žiadne | 3 | |
RET | Návrat podprogramu | PC ← STACK | žiadne | 4 | |
RETI | Prerušiť návrat | PC ← STACK | I | 4 | |
CPSE | Rd, Rr | Porovnať, preskočiť, ak sú rovnaké | ak (Rd = Rr) PC ← PC + 2 alebo 3 | žiadne | 1. 2. 3 |
CP | Rd, Rr | Porovnaj | Rd − Rr | Z, N, V, C, H | 1 |
CZK | Rd, Rr | Porovnajte s Carry | Rd − Rr − C | Z, N, V, C, H | 1 |
CPI | Rd, K. | Porovnajte Registrovať s Okamžitým | Rd - K | Z, N, V, C, H | 1 |
SBRC | Rr, nar | Ak je bit v registri vymazaný, preskočte | ak (Rr(b)=0) PC ← PC + 2 alebo 3 | žiadne | 1. 2. 3 |
SBRS | Rr, nar | Ak je bit v registri nastavený, preskočte | ak (Rr(b)=1) PC ← PC + 2 alebo 3 | žiadne | 1. 2. 3 |
SBIC | P, nar | Ak je bit v I / O registri vymazaný, preskočte | ak (P(b)=0) PC ← PC + 2 alebo 3 | žiadne | 1. 2. 3 |
SBIS | P, nar | Preskočiť, ak je nastavený bit v I / O registri | ak (P(b)=1) PC ← PC + 2 alebo 3 | žiadne | 1. 2. 3 |
BRBS | s, k | Pobočka, ak je nastavený príznak stavu | ak (SREG(s) = 1), potom PC←PC+k + 1 | žiadne | 1/2 |
BRBC | s, k | Pobočka, ak je príznak stavu vymazaný | ak (SREG(s) = 0), potom PC←PC+k + 1 | žiadne | 1/2 |
BREQ | k | Vetva, ak sa rovná | ak (Z = 1), potom PC ← PC + k + 1 | žiadne | 1/2 |
BRNE | k | Vetva, ak sa nerovná | ak (Z = 0), potom PC ← PC + k + 1 | žiadne | 1/2 |
BRCS | k | Vetva, ak má sadu | ak (C = 1), potom PC ← PC + k + 1 | žiadne | 1/2 |
BRCC | k | Pobočka, ak je prenášaná vyčistená | ak (C = 0), potom PC ← PC + k + 1 | žiadne | 1/2 |
BRSH | k | Pobočka, ak je rovnaká alebo vyššia | ak (C = 0), potom PC ← PC + k + 1 | žiadne | 1/2 |
BRLO | k | Vetva, ak je nižšia | ak (C = 1), potom PC ← PC + k + 1 | žiadne | 1/2 |
BRMI | k | Pobočka, ak je mínus | ak (N = 1), potom PC ← PC + k + 1 | žiadne | 1/2 |
BRPL | k | Pobočka, ak Plus | ak (N = 0), potom PC ← PC + k + 1 | žiadne | 1/2 |
BRGE | k | Pobočka, ak je väčšia alebo rovnaká, podpísaná | ak (N ⊕ V= 0), potom PC ← PC + k + 1 | žiadne | 1/2 |
BRLT | k | Pobočka, ak je menšia ako nula, podpísaná | ak (N ⊕ V= 1), potom PC ← PC + k + 1 | žiadne | 1/2 |
BRHS | k | Vetva, ak je nastavená vlajka s polovičným prenosom | ak (H = 1), potom PC ← PC + k + 1 | žiadne | 1/2 |
BRHC | k | Vetva, ak je vlajka s polovičným prenosom vymazaná | ak (H = 0), potom PC ← PC + k + 1 | žiadne | 1/2 |
BRTS | k | Vetva, ak je nastavený príznak T | ak (T = 1), potom PC ← PC + k + 1 | žiadne | 1/2 |
BRTC | k | Vetva, ak je príznak T vymazaný | ak (T = 0), potom PC ← PC + k + 1 | žiadne | 1/2 |
BRVS | k | Vetva, ak je nastavený príznak pretečenia | ak (V = 1), potom PC ← PC + k + 1 | žiadne | 1/2 |
BRVC | k | Vetva, ak je príznak pretečenia vymazaný | ak (V = 0), potom PC ← PC + k + 1 | žiadne | 1/2 |
BRIE | k | Pobočka, ak je povolené prerušenie | ak ( I = 1), potom PC ← PC + k + 1 | žiadne | 1/2 |
BRID | k | Pobočka, ak je prerušenie zakázané | ak ( I = 0), potom PC ← PC + k + 1 | žiadne | 1/2 |
POKYNY NA TESTOVANIE BITOV A BITOV | |||||
SBI | P, nar | Nastaviť bit v I / O registri | I/O(P,b) ← 1 | žiadne | 2 |
CBI | P, nar | Vymazať bit v I / O registri | I/O(P,b) ← 0 | žiadne | 2 |
LSL | Rd | Logický posun doľava | 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 |
ÚLOHA | Rd | Otočte doľava cez Carry | Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) | Z, C, N, V | 1 |
ROR | Rd | Otočte sa priamo cez 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 | operandmi | Popis | Prevádzka | Vlajky | #Hodiny |
SWAP | Rd | Zamieňajte Nibbles | Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) | žiadne | 1 |
BSET | s | Nastavená vlajka | SREG(s) ← 1 | SREG | 1 |
BCLR | s | Vlajka je čistá | SREG(s) ← 0 | SREG | 1 |
BST | Rr, nar | Obchod s bitmi z registrácie do T | T ← Rr(b) | T | 1 |
BLD | Rd, nar | Bitové načítanie z T do registra | Rd(b) ← T | žiadne | 1 |
SEC | Nastaviť prenášanie | C ← 1 | C | 1 | |
CLC | Vymazať | C ← 0 | C | 1 | |
SEN | Nastaviť zápornú vlajku | N ← 1 | N | 1 | |
CLN | Vymazať negatívnu vlajku | N ← 0 | N | 1 | |
SEZ | Nastaviť nulovú vlajku | Z ← 1 | Z | 1 | |
CLZ | Vymazať nulovú vlajku | Z ← 0 | Z | 1 | |
SEI | Povoliť globálne prerušenie | Ja ← 1 | I | 1 | |
CLI | Globálne prerušenie je zakázané | Ja ← 0 | I | 1 | |
SES | Nastaviť podpísanú testovaciu vlajku | S ← 1 | S | 1 | |
CLS | Vymazať podpísanú testovaciu vlajku | S ← 0 | S | 1 | |
SEV | Nastavte pretečenie doplnku dvojky. | V ← 1 | V | 1 | |
CLV | Vyčistite pretečenie doplnku dvojky | V ← 0 | V | 1 | |
SET | Nastavte T v SREG | T ← 1 | T | 1 | |
CLT | Jasné T v SREG | T ← 0 | T | 1 | |
SEH | Nastaviť vlajku s polovičným prenášaním v SREG | H ← 1 | H | 1 | |
CLH | Vymazať vlajku s polovičným prenášaním v SREG | H ← 0 | H | 1 | |
POKYNY NA PRENOS DÁT | |||||
MOV | Rd, Rr | Presun medzi registrami | Rd ← Rr | žiadne | 1 |
MOVW | Rd, Rr | Kopírovať Registrovať slovo | Rd+1:Rd ← Rr+1:Rr | žiadne | 1 |
LDI | Rd, K. | Načítať okamžite | Rd ← K | žiadne | 1 |
LD | Rd, X | Načítať nepriamo | Rd ← (X) | žiadne | 2 |
LD | Rd, X + | Načítať nepriame a po zavedení | Rd ← (X), X ← X + 1 | žiadne | 2 |
LD | Rd, - X | Načítať nepriamo a predbežne. | X ← X – 1, Rd ← (X) | žiadne | 2 |
LD | Rd, Y | Načítať nepriamo | Rd ← (Y) | žiadne | 2 |
LD | Rd, Y + | Načítať nepriame a po zavedení | Rd ← (Y), Y ← Y + 1 | žiadne | 2 |
LD | Rd, - Y | Načítať nepriamo a predbežne. | Y ← Y – 1, Rd ← (Y) | žiadne | 2 |
LDD | Rd, Y + q | Načítať nepriamo s výtlakom | Rd ← (Y + q) | žiadne | 2 |
LD | Rd, Z | Načítať nepriamo | Rd ← (Z) | žiadne | 2 |
LD | Rd, Z + | Načítať nepriame a po zavedení | Rd ← (Z), Z ← Z+1 | žiadne | 2 |
LD | Rd, -Z | Načítať nepriamo a predbežne. | Z ← Z – 1, Rd ← (Z) | žiadne | 2 |
LDD | Rd, Z + q | Načítať nepriamo s výtlakom | Rd ← (Z + q) | žiadne | 2 |
LDS | Rd, k | Načítajte priamo zo SRAM | Rd ← (k) | žiadne | 2 |
ST | X, Rr | Uložiť nepriamo | (X) ← Rr | žiadne | 2 |
ST | X +, Rr | Store Indirect a Post-Inc. | (X) ← Rr, X ← X + 1 | žiadne | 2 |
ST | - X, Rr | Skladujte nepriamo a predbežne. | X ← X – 1, (X) ← Rr | žiadne | 2 |
ST | Y, Rr | Uložiť nepriamo | (Y) ← Rr | žiadne | 2 |
ST | Y +, Rr | Store Indirect a Post-Inc. | (Y) ← Rr, Y ← Y + 1 | žiadne | 2 |
ST | - Y, Rr | Skladujte nepriamo a predbežne. | Y ← Y – 1, (Y) ← Rr | žiadne | 2 |
STD | Y + q, RR | Skladujte nepriamo s výtlakom | (Y + q) ← Rr | žiadne | 2 |
ST | Z, Rr | Uložiť nepriamo | (Z) ← Rr | žiadne | 2 |
ST | Z +, Rr | Store Indirect a Post-Inc. | (Z) ← Rr, Z ← Z + 1 | žiadne | 2 |
ST | -Z, Rr | Skladujte nepriamo a predbežne. | Z ← Z – 1, (Z) ← Rr | žiadne | 2 |
STD | Z + q, RR | Skladujte nepriamo s výtlakom | (Z + q) ← Rr | žiadne | 2 |
STS | k, Rr | Ukladajte priamo do SRAM | (k) ← Rr | žiadne | 2 |
LPM | Načítajte programovú pamäť | R0 ← (Z) | žiadne | 3 | |
LPM | Rd, Z | Načítajte programovú pamäť | Rd ← (Z) | žiadne | 3 |
LPM | Rd, Z + | Načítajte programovú pamäť a Post-Inc | Rd ← (Z), Z ← Z+1 | žiadne | 3 |
SPM | Uložte programovú pamäť | (z) ← R1:R0 | žiadne | ||
IN | Rd, P | V prístave | Rd ← P | žiadne | 1 |
OUT | P, Rr | Out Port | P ← Rr | žiadne | 1 |
TAM | Rr | Stlačte Register na zásobníku | STACK ← Rr | žiadne | 2 |
POP | Rd | Pop Zaregistrujte sa zo Stacku | Rd ← STACK | žiadne | 2 |
NÁVOD NA KONTROLU MCU | |||||
NOP | Žiadna operácia | žiadne | 1 | ||
SPAŤ | Spánok | (pozri špecifický popis funkcie spánku) | žiadne | 1 | |
WDR | Strážny pes Reset | (pozri konkrétny popis pre WDR / časovač) | žiadne | 1 | |
BREAK | Prestávka |
Rýchlosť (MHz) (1) | Dodávka Voltage (V) | Rozsah teplôt | Balíček (2) | Objednávací kód (3) |
10 | 1.8 – 5.5 | Priemyselná
(-40 ° C až +85 ° C) (4) |
8P3 | ATtiny45V-10PU |
8S2 | ATtiny45V-10SU ATtiny45V-10SUR ATtiny45V-10SH ATtiny45V-10SHR | |||
8X | ATtiny45V-10XU ATtiny45V-10XUR | |||
20M1 | ATtiny45V-10MU ATtiny45V-10MUR | |||
20 | 2.7 – 5.5 | Priemyselná
(-40 ° C až +85 ° C) (4) |
8P3 | ATtiny45-20PU |
8S2 | ATtiny45-20SU ATtiny45-20SUR
ATtiny45-20SH ATtiny45-20SHR |
|||
8X | ATtiny45-20XU ATtiny45-20XUR | |||
20M1 | ATtiny45-20MU ATtiny45-20MUR |
Poznámky: 1. Pre rýchlosť vs. napájací objemtage, pozri časť 21.3 „Rýchlosť“ na stránke 163.
Všetky balenia sú bez obsahu Pb, bez halogenidov a sú úplne zelené a zodpovedajú európskej smernici o obmedzení nebezpečných látok (RoHS).
Indikátory kódu
H: Povrchová úprava olova NiPdAu
U: matný plech
R: páska a kotúč
Tieto zariadenia môžu byť dodávané aj vo forme oblátok. Podrobné informácie o objednávaní a minimálne množstvá získate od miestnej predajnej kancelárie Atmel.
errata
Errata ATtiny25
Revízny list v tejto časti sa týka revízie zariadenia ATtiny25.
Rev D - F
Žiadna známa errata.
Rev B - C
Čítanie EEPROM môže zlyhať pri nízkom napájacom objtage / nízka hodinová frekvencia
Čítanie EEPROM môže zlyhať pri nízkom napájacom objtage / nízka hodinová frekvencia
Pokúša sa čítať EEPROM pri nízkych hodinových frekvenciách a/alebo nízkom napájacom objtage môže mať za následok neplatné údaje.
Oprava problému / Riešenie
Nepoužívajte EEPROM, ak je taktovacia frekvencia nižšia ako 1 MHz a napájacie napätietage je pod 2V. Ak nie je možné zvýšiť prevádzkovú frekvenciu nad 1 MHz, napájací zdrojtage by malo byť viac ako 2V. Podobne, ak je dodávka objtage nemôže byť zvýšený nad 2 V, potom by pracovná frekvencia mala byť viac ako 1 MHz.
Je známe, že táto vlastnosť závisí od teploty, ale nebola charakterizovaná. Pokyny sú uvedené iba pre izbovú teplotu.
Rev A.
Nie sampviedol.
Errata ATtiny45
Revízny list v tejto časti sa týka revízie zariadenia ATtiny45.
Rev F - G
Žiadna známa errata
Rev D - E
Čítanie EEPROM môže zlyhať pri nízkom napájacom objtage / nízka hodinová frekvencia
Čítanie EEPROM môže zlyhať pri nízkom napájacom objtage / nízka hodinová frekvencia
Pokúša sa čítať EEPROM pri nízkych hodinových frekvenciách a/alebo nízkom napájacom objtage môže mať za následok neplatné údaje.
Oprava problému / Riešenie
Nepoužívajte EEPROM, ak je taktovacia frekvencia nižšia ako 1 MHz a napájacie napätietage je pod 2V. Ak nie je možné zvýšiť prevádzkovú frekvenciu nad 1 MHz, napájací zdrojtage by malo byť viac ako 2V. Podobne, ak je dodávka objtage nemôže byť zvýšený nad 2 V, potom by pracovná frekvencia mala byť viac ako 1 MHz.
Je známe, že táto vlastnosť závisí od teploty, ale nebola charakterizovaná. Pokyny sú uvedené iba pre izbovú teplotu.
Rev B - C
PLL sa nezablokuje
Čítanie EEPROM z kódu aplikácie nefunguje v režime uzamknutia bitov 3
Čítanie EEPROM môže zlyhať pri nízkom napájacom objtage / nízka hodinová frekvencia
Generovanie výstupu časovača 1 PWM na OC1B-XOC1B nefunguje správne
PLL sa nezablokuje
Pri frekvenciách pod 6.0 MHz sa PLL nezablokuje
Oprava problému / Riešenie
Pri použití PLL bežte na frekvencii 6.0 MHz alebo vyššej.
Čítanie EEPROM z kódu aplikácie nefunguje v režime uzamknutia bitov 3
Keď sú bity uzamknutia pamäte LB2 a LB1 naprogramované na režim 3, načítanie EEPROM nefunguje z kódu aplikácie.
Oprava problému / Riešenie problému
Nenastavujte režim uzamknutia bitovej ochrany 3, keď je potrebné načítať kód aplikácie z EEPROM.
Čítanie EEPROM môže zlyhať pri nízkom napájacom objtage / nízka hodinová frekvencia
Pokúša sa čítať EEPROM pri nízkych hodinových frekvenciách a/alebo nízkom napájacom objtage môže mať za následok neplatné údaje.
Oprava problému / Riešenie
Nepoužívajte EEPROM, ak je taktovacia frekvencia nižšia ako 1 MHz a napájacie napätietage je pod 2V. Ak nie je možné zvýšiť prevádzkovú frekvenciu nad 1 MHz, napájací zdrojtage by malo byť viac ako 2V. Podobne, ak je dodávka objtage nemôže byť zvýšený nad 2 V, potom by pracovná frekvencia mala byť viac ako 1 MHz.
Je známe, že táto vlastnosť závisí od teploty, ale nebola charakterizovaná. Pokyny sú uvedené iba pre izbovú teplotu.
Generovanie výstupu časovača 1 PWM na OC1B - XOC1B nefunguje správne
Časovač Counter1 Výstup PWM OC1B-XOC1B nefunguje správne. Iba v prípade, keď sú riadiace bity COM1B1 a COM1B0 v rovnakom režime ako COM1A1 a COM1A0, výstup OC1B-XOC1B funguje správne.
Oprava problému / Riešenie problému
Jediným riešením je použiť rovnaké nastavenie riadenia na riadiacich bitoch COM1A [1: 0] a COM1B [1: 0], pozri tabuľku 14-4 v údajovom liste. Problém bol opravený pre Tiny45 rev D.
Rev A.
Príliš vysoká spotreba energie
DebugWIRE stratí komunikáciu, keď vstúpi do prerušenia
PLL sa nezablokuje
Čítanie EEPROM z kódu aplikácie nefunguje v režime uzamknutia bitov 3
Čítanie EEPROM môže zlyhať pri nízkom napájacom objtage / nízka hodinová frekvencia
Príliš vysoká spotreba energie
Tri situácie povedú k príliš vysokej spotrebe energie. Sú to:
Externé hodiny sú vybrané poistkami, ale I / O PORT je stále povolený ako výstup.
EEPROM sa načíta pred vypnutím.
VCC je 4.5 voltu alebo vyšší.
Zrieknutie sa zodpovednosti: Informácie v tomto dokumente sú poskytované v súvislosti s produktmi Atmel. Týmto dokumentom ani v súvislosti s predajom produktov Atmel nie je udelená žiadna licencia, výslovná alebo implicitná, na základe prekážok alebo inak, na akékoľvek právo duševného vlastníctva. OKREM PODMIENOK PREDAJA UVEDENÝCH V PODMIENKACH PREDAJA ATMEL, KTORÉ SA NACHÁDZA ATMEL WEBSTRÁNKA, ATMEL NEPREBERÁ ŽIADNU ZODPOVEDNOSŤ A ZRIEKA SA AKEJKOĽVEK VÝSLOVNEJ, IMPLICITNEJ ALEBO ZÁKONNEJ ZÁRUKY TÝKAJÚCE SA JEJ PRODUKTOV, VRÁTANE, ALE NIE VÝHRADNE, IMPLICITNEJ ZÁRUKY OBCHODOVANIA, VHODNOSTI PLATNOSTI PARTNERSTVA. ATMEL V ŽIADNOM PRÍPADE NIE JE ZODPOVEDNÝ ZA ŽIADNE PRIAMY, NEPRIAME, NÁSLEDNÉ, TRESTNÉ, ZVLÁŠTNE ALEBO NÁHODNÉ ŠKODY (VRÁTANE, BEZ OBMEDZENIA, ŠKODY ZA STRATU A ZISKY, PRERUŠENIE PODNIKANIA ALEBO STRATU STRATY INFORMÁCIÍ) TENTO DOKUMENT, AJ KEĎ BOL ATMEL UPOZORNENÝ NA MOŽNOSŤ TAKÝCHTO ŠKOD.
Atmel neposkytuje žiadne vyhlásenia ani záruky týkajúce sa presnosti alebo úplnosti obsahu tohto dokumentu a vyhradzuje si právo kedykoľvek bez upozornenia zmeniť špecifikácie a popisy produktov. Atmel sa nezaväzuje aktualizovať informácie obsiahnuté v tomto dokumente. Pokiaľ nie je výslovne uvedené inak, produkty Atmel nie sú vhodné a nesmú sa v nich používať. Produkty Atmel nie sú určené, autorizované ani zaručené na použitie ako komponenty v aplikáciách určených na podporu alebo udržanie životnosti.