Atmel 8 bites AVR mikrokontroller 2/4/8K bájt rendszeren belüli programozható vakuval
Jellemzők
- Nagy teljesítményű, alacsony fogyasztású AVR® 8 bites mikrokontroller
- Haladó RISC architektúra
- 120 nagy teljesítményű utasítás - a legtöbb egyetlen óra ciklus végrehajtása
- 32 x 8 általános felhasználású munka-nyilvántartás
- Teljesen statikus működés
- Nem felejtő program- és adatmemóriák
- 2/4 / 8K bájt a rendszeren belül programozható programmemóriával
- Kitartás: 10,000 XNUMX írási/törlési ciklus
- 128/256/512 bájt rendszeren belül programozható EEPROM
- Kitartás: 100,000 XNUMX írási/törlési ciklus
- 128/256/512 bájt belső SRAM
- Programozási zár az önprogramozó Flash programhoz és az EEPROM adatbiztonsághoz
Perifériás jellemzők
- 8 bites időzítő / számláló prescalerrel és két PWM csatornával
- 8 bites nagysebességű időzítő / számláló külön előmérővel
- 2 nagyfrekvenciás PWM kimenet külön kimeneti összehasonlító regiszterekkel
- Programozható Dead Time Generator
- USI - univerzális soros interfész indítási állapot érzékelővel
- 10 bites ADC
4 egyvégű csatorna
2 differenciál ADC csatorna pár programozható erősítéssel (1x, 20x)
Hőmérséklet mérés
Programozható Watchdog időzítő külön chip-os oszcillátorral
On-chip analóg összehasonlító
Speciális mikrokontroller jellemzők
debugWIRE On-chip hibakeresési rendszer
A rendszeren belül programozható az SPI porton keresztül
Külső és belső megszakítási források
Alacsony fogyasztású üresjárati, ADC zajcsökkentő és kikapcsolási módok
Továbbfejlesztett bekapcsolási visszaállítási áramkör
Programozható Brown-out érzékelő áramkör
Belső kalibrált oszcillátor
I / O és csomagok
Hat programozható I / O vonal
8-tűs PDIP, 8-tűs SOIC, 20-pad QFN / MLF és 8-tűs TSSOP (csak ATtiny45 / V)
Operation Voltage
- 1.8 - 5.5 V ATtiny25V / 45V / 85V esetén
- 2.7 - 5.5 V ATtiny25 / 45/85 esetén
Sebesség fokozat
- ATtiny25V / 45V / 85V: 0 - 4 MHz @ 1.8 - 5.5 V, 0 - 10 MHz @ 2.7 - 5.5 V
- ATtiny25 / 45/85: 0 - 10 MHz @ 2.7 - 5.5 V, 0 - 20 MHz @ 4.5 - 5.5 V
Ipari hőmérsékleti tartomány
Alacsony energiafogyasztás
Aktív mód:
1 MHz, 1.8 V: 300 µA
Kikapcsolási mód:
Pin konfigurációk
ATtiny25 / 45/85 csapszeg
Pin Leírások
VCC: Supply voltage.
GND: Föld.
B port (PB5:PB0): A B port egy 6 bites kétirányú I/O port belső felhúzó ellenállásokkal (minden bithez kiválasztva). A B port kimeneti pufferei szimmetrikus meghajtókarakterisztikával rendelkeznek, magas nyelő- és forrásképességgel. Bemenetként a kívülről alacsonyra húzott B port érintkezői áramot fognak szolgáltatni, ha a felhúzó ellenállások aktiválva vannak. A B port érintkezői háromállapotúak, amikor a visszaállítási állapot aktívvá válik, még akkor is, ha az óra nem fut.
A B kikötő az ATtiny25 / 45/85 felsorolt különféle funkcióinak funkcióit is szolgálja
Az ATtiny25 készüléken a programozható PB3 és PB4 I / O portokat (2. és 3. érintkezõ) kicserélik ATtiny15 kompatibilitási módban az ATtiny15-sel való visszamenõ kompatibilitás támogatása érdekében.
RESET: Reset bemenet. A minimális impulzushossznál hosszabb ideig tartó alacsony szint ezen a tűn alaphelyzetbe állítást generál, még akkor is, ha az óra nem jár, és feltéve, hogy a visszaállító érintkező nincs letiltva. A minimális impulzushosszt adják meg 21-4. táblázat a 165. oldalon. A rövidebb impulzusok nem garantálják a visszaállítást.
A visszaállító tüske (gyenge) I / O tűként is használható.
Felettview
Az ATtiny25 / 45/85 egy alacsony fogyasztású, 8 bites CMOS mikrokontroller, amely az AVR továbbfejlesztett RISC architektúráján alapul. Nagy teljesítményű utasítások egyetlen órajel-cikluson keresztül történő végrehajtásával az ATtiny25 / 45/85 elérheti az 1 MIPS / MHz-et megközelítő átviteli sebességet, lehetővé téve a rendszertervező számára, hogy optimalizálja az energiafogyasztást a feldolgozási sebességhez képest.
Blokk diagramm
Az AVR mag egy gazdag utasításkészletet kombinál 32 általános célú munka regiszterrel. Mind a 32 regiszter közvetlenül kapcsolódik az aritmetikai logikai egységhez (ALU), lehetővé téve két független regiszter elérését egyetlen utasításban, egy óraciklus alatt. Az így kapott architektúra kódhatékonyabb, miközben akár tízszer gyorsabb teljesítményt ér el, mint a hagyományos CISC mikrovezérlők.
Az ATtiny25 / 45/85 a következő szolgáltatásokat nyújtja: 2/4 / 8K byte a rendszeren belül programozható Flash, 128/256/512 byte EEPROM, 128/256/256 byte SRAM, 6 általános célú I / O sor, 32 general célra szolgáló regiszterek, egy 8 bites időzítő / számláló összehasonlítási módokkal, egy 8 bites nagysebességű időzítő / számláló, univerzális soros interfész, belső és külső megszakítások, 4 csatornás, 10 bites ADC, programozható Watchdog időzítő belső Oszcillátor és három szoftverrel választható energiatakarékos mód. A készenléti üzemmód leállítja a CPU-t, miközben lehetővé teszi az SRAM, az időzítő / számláló, az ADC, az analóg komparátor és a megszakító rendszer működésének folytatását. A kikapcsolási mód elmenti a regiszter tartalmát, letiltva az összes chipfunkciót a következő megszakításig vagy a hardver visszaállításáig. Az ADC zajcsökkentési módja leállítja a CPU-t és az összes I / O modult, az ADC kivételével, hogy minimalizálja a kapcsolási zajt az ADC átalakítások során.
A készülék gyártása az Atmel nagy sűrűségű, nem felejtő memória technológiájával történik. Az On-chip ISP Flash lehetővé teszi a program memóriájának újraprogramozását a rendszeren belül egy SPI soros interfészen keresztül, egy hagyományos nem felejtő memória programozóval vagy az AVR magon futó On-chip rendszerindító kóddal.
Az ATtiny25 / 45/85 AVR program- és rendszerfejlesztő eszközök teljes készletével támogatott, beleértve a következőket: C fordítók, makró összeszerelők, program hibakereső / szimulátorok és kiértékelő készletek.
Az erőforrásokról
A fejlesztői eszközök, az alkalmazási megjegyzések és az adatlapok átfogó gyűjteménye letölthető a webhelyről http://www.atmel.com/avr.
Kód plamples
Ez a dokumentáció egyszerű kódot tartalmaz, plampAz alábbiakban röviden bemutatjuk a készülék különböző részeinek használatát. Ezek a kódok plamples feltételezi, hogy az alkatrész -specifikus fejléc file összeállítás előtt szerepel. Ne feledje, hogy nem minden C fordítószolgáltató tartalmaz bitdefiníciókat a fejlécben files és a megszakítás kezelése C -ben fordítófüggő. Kérjük, erősítse meg a C fordító dokumentációjával a további részletekért.
A kiterjesztett I / O térképen található I / O regiszterek esetében az „IN”, „OUT”, „SBIS”, „SBIC”, „CBI” és „SBI” utasításokat fel kell cserélni olyan utasításokra, amelyek lehetővé teszik a kiterjesztett I / O. Ez általában „LDS” -t és „STS-t” jelent, kombinálva az „SBRS”, „SBRC”, „SBR” és „CBR” kifejezéssel. Vegye figyelembe, hogy nem minden AVR eszköz tartalmaz kibővített I / O térképet.
Kapacitív érintésérzékelő
Az Atmel QTouch Library egyszerűen használható megoldást kínál az Atmel AVR mikrokontrollerek érintésérzékeny interfészeihez. A QTouch Library támogatja a QTouch® és QMatrix® adatgyűjtési módszereket.
Az érintésérzékelés könnyen hozzáadható minden alkalmazáshoz a QTouch könyvtár összekapcsolásával és a könyvtár Application Programming Interface (API) segítségével az érintési csatornák és érzékelők meghatározásához. Ezután az alkalmazás felhívja az API-t a csatornainformációk lekérésére és az érintésérzékelő állapotának meghatározására.
A QTouch könyvtár ingyenes, és letölthető az Atmelről webwebhely. További információért és a megvalósítás részleteiért tekintse meg a QTouch Library felhasználói útmutatót - szintén az Atmel -től webtelek.
Adatmegőrzés
Megbízhatósági minősítési eredmények azt mutatják, hogy az előrejelzett adatmegőrzési kudarcarány sokkal alacsonyabb, mint 1 PPM 20 év alatt 85 ° C-on, vagy 100 évig 25 ° C-on.
AVR CPU mag
Bevezetés
Ez a szakasz az AVR mag architektúráját tárgyalja általában. A CPU mag fő feladata a program helyes végrehajtásának biztosítása. A CPU-nak tehát képesnek kell lennie a memóriák elérésére, a számítások elvégzésére, a perifériák vezérlésére és a megszakítások kezelésére.
Építészeti végeview
A teljesítmény és a párhuzamosság maximalizálása érdekében az AVR egy Harvard-architektúrát használ - külön memóriákkal és buszokkal a programhoz és az adatokhoz. Az utasításokat a program memóriájában egyszintű csővezetékkel hajtják végre. Amíg az egyik utasítást végrehajtják, a következő utasítást előre lekérik a program memóriájából. Ez a koncepció lehetővé teszi az utasítások végrehajtását minden óraciklusban. A program memóriája a rendszeren belül programozható Flash memória.
A gyors hozzáférésű nyilvántartás File 32 x 8 bites általános célú működő regisztert tartalmaz egyetlen óraciklus hozzáférési idővel. Ez lehetővé teszi az egyciklusú aritmetikai logikai egység (ALU) működését. Egy tipikus ALU műveletben két operandus kerül ki a regiszterből File, a művelet végrehajtásra kerül, és az eredmény visszakerül a nyilvántartásba File- egy óra ciklusban.
A 32 regiszterből hat felhasználható három 16 bites indirekt címregiszter-mutatóként a Data Space címzéshez - ez lehetővé teszi a hatékony címszámítást. Ezen címmutatók egyike címmutatóként is használható a táblák megkereséséhez a Flash program memóriájában. Ezek a hozzáadott függvény-regiszterek a 16-bites X-, Y- és Z-regiszterek, amelyeket ebben a szakaszban később ismertetünk.
Az ALU támogatja a regiszterek közötti, illetve az állandó és a regiszter közötti számtani és logikai műveleteket. Az ALU-ban egyetlen regiszter műveletek is végrehajthatók. Aritmetikai művelet után az állapotregiszter frissül, hogy tükrözze a művelet eredményével kapcsolatos információkat.
A program folyamatát feltételes és feltétel nélküli ugrás és hívás utasítások biztosítják, amelyek képesek közvetlenül a teljes címteret megszólítani. A legtöbb AVR utasítás egyetlen 16 bites szóformátummal rendelkezik, de vannak 32 bites utasítások is.
Megszakítások és szubrutinhívások során a visszatérési cím Programszámláló (PC) a Stackben van tárolva. A verem hatékonyan van elosztva az általános adat SRAM-ban, következésképpen a verem méretét csak a teljes SRAM méret és az SRAM használata korlátozza. Minden felhasználói programnak inicializálnia kell az SP-t a Reset rutinban (az alprogramok vagy megszakítások végrehajtása előtt). A Stack Pointer (SP) írás / olvasás elérhető az I / O térben. Az SRAM adatok könnyen elérhetők az AVR architektúrában támogatott öt különböző címzési mód segítségével.
Az AVR architektúra memóriaterületei mind lineáris, mind pedig szabályos memóriatérképek.
A rugalmas megszakítási modul vezérlő regiszterei az I / O térben találhatók, egy további globális megszakítás engedélyező bit az állapotregiszterben. Minden megszakításnak külön megszakítási vektora van a Megszakítás vektor táblázatban. A megszakításoknak elsőbbségük van a megszakítási vektor helyzetüknek megfelelően. Minél alacsonyabb a megszakító vektor cím, annál nagyobb a prioritás.
Az I/O memória 64 címet tartalmaz a CPU perifériás funkcióihoz, mint vezérlőregiszterek, SPI és egyéb I/O funkciók. Az I/O memória közvetlenül, vagy a Regisztrátor adatait követő adatterületként érhető el File, 0x20 - 0x5F.
ALU - számtani logikai egység
A nagyteljesítményű AVR ALU közvetlen kapcsolatban áll mind a 32 általános célú munka-nyilvántartással. Egy órajel-cikluson belül az általános célú regiszterek, illetve a regiszter és azonnali regisztráció közötti számtani műveleteket hajtják végre. Az ALU műveletek három fő kategóriára oszlanak - aritmetikai, logikai és bitfunkciókra. Az architektúra egyes megvalósításai erőteljes szorzót is kínálnak, mind az aláírt / aláíratlan szorzást, mind a tört formátumot támogatva. Részletes leírást az „Utasításkészlet” részben talál.
Állapotregiszter
Az Állapotnyilvántartás információkat tartalmaz a legutóbb végrehajtott számtani utasítás eredményéről. Ez az információ felhasználható a program folyamatának megváltoztatására a feltételes műveletek végrehajtása érdekében. Ne feledje, hogy az állapotregiszter minden ALU művelet után frissül, az utasításkészlet referenciájában meghatározottak szerint. Ez sok esetben feleslegessé teszi a dedikált összehasonlítási utasítások használatát, ami gyorsabb és kompaktabb kódot eredményez.
Az állapotregiszter nem tárolódik automatikusan egy megszakítási rutin belépésekor, és nem áll helyre a megszakításból való visszatéréskor. Ezt szoftverrel kell kezelnie.
SREG - AVR állapotregiszter
Az AVR állapotregiszter - SREG - a következő:
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3F | I | T | H | S | V | N | Z | C | SREG |
Olvasni/Írni | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Kezdeti érték | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
7. bit - I: Globális megszakítás engedélyezése
A megszakítások engedélyezéséhez be kell állítani a Globális megszakítás engedélyezés bitet. Az egyedi megszakítás engedélyezését ezután külön vezérlő regiszterekben hajtják végre. Ha a globális megszakítás engedélyezésének nyilvántartása törlődik, akkor az egyik megszakítást sem engedélyezi az egyedi megszakítás engedélyezési beállításoktól függetlenül. Az I-bitet hardver törli a megszakítás bekövetkezte után, és a RETI utasítás állítja be a későbbi megszakítások engedélyezésére. Az I-bitet az alkalmazás beállíthatja és törölheti az SEI és CLI utasításokkal is, az utasításkészlet hivatkozásában leírtak szerint.
6. bit - T: Bit másolat tárolása
A BLD (Bit LoaD) és a BST (Bit STore) bitmásolási utasítások a T-bitet használják a működtetett bit forrásaként vagy célállomásaként. Egy kicsit a regiszterből File másolható a T -be a BST utasítással, és egy bit a T -ben másolható egy bitbe a regiszter regiszterében File a BLD utasítás szerint.
5. bit - H: Fél hordozó zászló
A H Half Carry Flag a Fél hordozást jelzi néhány számtani műveletben. A Half Carry hasznos a BCD számtanában. Részletes információkat az „Utasításkészlet leírása” című részben talál.
4. bit – S: Előjelbit, S = N ⊕ V
Az S-bit mindig exkluzív, vagy az N negatív jelző és a kettő V kiegészítő komplex túlcsordulási jelzője között található. Részletes információkért lásd az „Utasításkészlet leírását”.
3. bit - V: Két kiegészítő túlcsordulási zászló
A kettő V kiegészítő komplex túlcsordulási zászlója támogatja a kettő komplementaritását. Részletes információkat az „Utasításkészlet leírása” című részben talál.
2. bit - N: Negatív zászló
Az N negatív jelző számtani vagy logikai művelet negatív eredményét jelzi. Részletes információkat az „Utasításkészlet leírása” című részben talál.
1. bit - Z: Zéró zászló
A Z Zászló egy aritmetikai vagy logikai művelet nulla eredményét jelzi. Részletes információkat az „Utasításkészlet leírása” című részben talál.
0 - C bit: Carry Flag
A Carry Flag C egy számtani vagy logikai művelet hordozását jelzi. Részletes információkat az „Utasításkészlet leírása” című részben talál.
Általános célú nyilvántartás File
A Nyilvántartás File az AVR Enhanced RISC utasításkészletre van optimalizálva. A szükséges teljesítmény és rugalmasság elérése érdekében a nyilvántartás a következő beviteli/kimeneti sémákat támogatja File:
Egy 8 bites kimeneti operandus és egy 8 bites eredménybemenet
Két 8 bites kimeneti operandus és egy 8 bites eredménybemenet
Két 8 bites kimeneti operandus és egy 16 bites eredménybemenet
Egy 16 bites kimeneti operandus és egy 16 bites eredménybemenet
4-2. ábra mutatja a CPU 32 általános célú munka-nyilvántartásának felépítését.
Ahogy az ábrán látható 4-2. ábra, minden regiszterhez hozzá van rendelve egy adatmemória -cím is, amely közvetlenül a felhasználói Data Space első 32 helyére képezi le őket. Bár fizikailag nem SRAM-helyként valósul meg, ez a memóriaszervezés nagy rugalmasságot biztosít a regiszterekhez való hozzáférésben, mivel az X-, Y- és Z-mutatós regiszterek beállíthatók a rendszer bármelyik regiszterének indexelésére. file.A Regiszteren működő utasítások többsége File közvetlen hozzáféréssel rendelkeznek az összes regiszterhez, és legtöbbjük egyetlen ciklusutasítás.
Az X-regiszter, az Y-regiszter és a Z-regiszter
Az R26..R31 regiszterek néhány funkcióval rendelkeznek az általános célú használatukhoz. Ezek a regiszterek 16 bites címmutatók az adattér közvetett címzésére. A három közvetett címregiszter X, Y és Z az alábbiakban leírtak szerint definiálva van 4-3. ábra.
A különböző címzési módokban ezek a címregiszterek rögzített elmozdulásként, automatikus növekményként és automatikus csökkentésként működnek (a részleteket lásd az utasításkészlet referenciájában).
Verem mutató
A Stacket elsősorban ideiglenes adatok tárolására, helyi változók tárolására, valamint megszakítások és szubrutinhívások utáni visszatérési címek tárolására használják. A Verem mutató regiszter mindig a Verem tetejére mutat. Ne feledje, hogy a verem a magasabb memóriahelyekről az alacsonyabb memóriahelyekre növekszik. Ez azt jelenti, hogy a Stack PUSH parancs csökkenti a Stack Pointer-t.
A Stack Pointer az adat SRAM Stack területére mutat, ahol az alprogram és a megszakító verem található. Ezt a veremteret az adat SRAM-ban a programnak meg kell határoznia a szubrutin-hívások végrehajtása vagy a megszakítások engedélyezése előtt. A Verem mutatót 0x60 fölé kell állítani. A Stack Pointer csökken egy, amikor az adatokat a PUSH utasítással a Stackre tolják, és kettővel, amikor a visszatérési címet alprogramos hívással vagy megszakítással a Stackre tolják. A veremmutató eggyel növekszik, amikor az adatok a veremről kerülnek ki a POP utasítással, és kettővel növekszik, amikor az adatok a veremből kerülnek elő, amikor visszatérnek a szubrutin RET-ből vagy visszatérnek a megszakításos RETI-ből.
Az AVR Stack Pointer két 8 bites regiszterként valósul meg az I / O térben. A ténylegesen használt bitek száma a megvalósítástól függ. Ne feledje, hogy az AVR architektúra egyes megvalósításaiban az adattér annyira kicsi, hogy csak SPL-re van szükség. Ebben az esetben az SPH nyilvántartás nem lesz jelen.
SPH és SPL - Verem mutató regiszter
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 | ||
Olvasni/Írni | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Olvasni/Írni | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Kezdeti érték | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | |
Kezdeti érték | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND |
Az utasítás végrehajtásának időzítése
Ez a szakasz az utasításvégrehajtás általános hozzáférési időzítési koncepcióit írja le. Az AVR CPU-t a CPU órajel clkCPU hajtja, amelyet közvetlenül a chip kiválasztott órajelforrásából állítanak elő. Nincs belső óraosztás.
4-4. ábra ábra a Harvard architektúra és a gyors hozzáférésű nyilvántartás által engedélyezett párhuzamos utasításlehívásokat és utasítások végrehajtását mutatja File koncepció. Ez az alapvető csővezeték-koncepció, amely akár 1 MIPS / MHz-et is el tud érni, a megfelelő egyedi eredményekkel a költségenkénti funkciók, az óránkénti funkciók és az egységenkénti funkciók tekintetében.
4-5. Egyciklusú ALU működés
Visszaállítás és megszakítás
Az AVR több különböző megszakítási forrást biztosít. Ezeknek a megszakításoknak és a külön Reset Vector-nak külön-külön Programvektora van a Program memóriájában. Minden megszakításhoz hozzárendelnek egyedi engedélyező biteket, amelyeket logikai formátumban kell megírni, az állapotregiszterben található globális megszakítás engedélyező bitdel együtt a megszakítás engedélyezése érdekében.
A program memóriaterületének legalacsonyabb címei alapértelmezés szerint a Visszaállítás és Megszakítás vektorok. A vektorok teljes listáját a “Megszakítások”, 48. oldal. A lista meghatározza a különböző megszakítások prioritási szintjeit is. Minél alacsonyabb a cím, annál magasabb a prioritási szint. A RESET-nek van a legmagasabb prioritása, és a következő az INT0 - a külső megszakítási kérelem 0.
Megszakítás esetén a Globális megszakítás engedélyezése I-bit törlődik, és az összes megszakítás le van tiltva. A felhasználói szoftver logikát írhat az I-bitbe a beágyazott megszakítások engedélyezéséhez. Ezután az összes engedélyezett megszakítás megszakíthatja az aktuális megszakítási rutint. Az I-bit automatikusan be van állítva, amikor a visszatérés megszakításból utasítás - RETI - végrehajtásra kerül.
Alapvetően kétféle megszakítás létezik. Az első típust egy esemény váltja ki, amely beállítja a megszakítási jelzőt. Ezeknél a megszakításoknál a programszámlálót a tényleges megszakítási vektorhoz vektort alakítják ki a megszakításkezelési rutin végrehajtása érdekében, és a hardver törli a megfelelő megszakítási jelzőt. A megszakító zászlók úgy is törölhetők, hogy egy logikát írnak a törölni kívánt zászló bit pozíciókba. Ha egy megszakítási feltétel akkor következik be, amikor a megfelelő megszakítás engedélyezési bit törlődik, akkor a megszakítási jelzőt be kell állítani és emlékezni kell mindaddig, amíg a megszakítást engedélyezik, vagy a jelet szoftver nem törli. Hasonlóképpen, ha egy vagy több megszakítási körülmény bekövetkezik a globális megszakítás engedélyezés bit törlése közben, akkor a megfelelő megszakítási jelző (k) be lesz állítva és emlékeznek mindaddig, amíg a globális megszakítás engedélyezés bitet be nem állítják, és ezután prioritási sorrendben végrehajtják.
A második típusú megszakítások addig aktiválódnak, amíg a megszakítási feltétel fennáll. Ezeknek a megszakításoknak nincs szükségük megszakító jelzőkre. Ha a megszakítás feltétele eltűnik a megszakítás engedélyezése előtt, akkor a megszakítás nem váltódik ki.
Amikor az AVR kilép egy megszakításból, mindig visszatér a főprogramhoz, és még egy utasítást végrehajt, mielőtt bármilyen függőben lévő megszakítást megadna.
Ne feledje, hogy az állapotregiszter nem tárolódik automatikusan egy megszakítási rutin belépésekor, és nem áll helyre a megszakítási rutinból való visszatéréskor. Ezt szoftverrel kell kezelnie.
Amikor a CLI utasítást használja a megszakítások letiltására, a megszakítások azonnal letiltásra kerülnek. A CLI utasítás után nem történik megszakítás, még akkor sem, ha a CLI utasítással egyidejűleg történik. A következő plample bemutatja, hogyan lehet ezzel elkerülni a megszakításokat az időzített EEPROM írási sorozat során.
Összeszerelési kód Plample |
r16-ban SREG; tárolja a SREG értéket
cli ; letiltja a megszakításokat az időzített sorozat során sbi EECR, EEMPE ; indítsa el az EEPROM írását sbi EECR, EEPE ki SREG, r16; SREG érték visszaállítása (I-bit) |
C Kód Példaample |
char cSREG;
cSREG = SREG; /* SREG érték tárolása */ /* a megszakítások letiltása időzített sorozat közben */ _CLI (); EECR |= (1< EECR | = (1 < SREG = cSREG; /* SREG érték visszaállítása (I-bit) */ |
Amikor a SEI utasítást használja a megszakítások engedélyezéséhez, a SEI-t követő utasítás végrehajtásra kerül a függő megszakítások előtt, amint ez azample.
Összeszerelési kód Plample |
sei ; állítsa be a Globális megszakítás engedélyezését
alvás; belép aludni, várva a megszakítást ; megjegyzés: minden alvás előtt alvó állapotba lép ; megszakítás (ok) |
C Kód Példaample |
_SEI(); /* Globális megszakítás engedélyezése */
_ALVÁS(); /* belép alvó állapotba, megszakításra vár */ / * megjegyzés: alvó módba lép minden függőben lévő megszakítás előtt * / |
Megszakítási válaszidő
Az összes engedélyezett AVR megszakítás végrehajtásának válasza legalább négy órajel. Négy órás ciklus után a tényleges megszakítási kezelési rutin Program Vector címe kerül végrehajtásra. Ebben a négy órás ciklusban a programszámláló a veremre tolódik. A vektor általában a megszakítási rutin ugrása, és ez az ugrás három óraciklust vesz igénybe. Ha egy többciklusú utasítás végrehajtása közben megszakítás történik, akkor az utasítás a megszakítás kézbesítése előtt befejeződik. Ha megszakítás történik, amikor az MCU alvó üzemmódban van, a megszakítás végrehajtásának válaszideje négy óra ciklussal nő. Ez a növekedés a kiválasztott alvó üzemmód indítási idejével együtt jár.
A megszakításkezelő rutinból való visszatérés négy óraciklust vesz igénybe. E négy óraciklus alatt a programszámláló (két bájt) visszaugrik a veremből, a veremjelző kettővel növekszik, és az I-bit a SREG-ben be van állítva.
AVR emlékek
Ez a szakasz az ATtiny25 / 45/85 különböző emlékeit írja le. Az AVR architektúrának két fő memóriaterülete van, az adatmemória és a program memóriaterülete. Ezenkívül az ATtiny25 / 45/85 tartalmaz egy EEPROM memóriát az adattároláshoz. Mindhárom memóriaterület lineáris és szabályos.
A rendszeren belül átprogramozható Flash programmemória
Az ATtiny25 / 45/85 2/4 / 8K bájtokat tartalmaz chipen belüli, rendszeren belül programozható Flash memóriát a program tárolásához. Mivel az összes AVR utasítás 16 vagy 32 bit széles, a Flash 1024/2048/4096 x 16 formátumú.
A Flash memória tartóssága legalább 10,000 25 írási / törlési ciklus. Az ATtiny45 / 85/10 programszámláló (PC) 11/12/1024 bit széles, így foglalkozik az 2048/4096/XNUMX program memóriahelyeivel. „Memória program- ming ”a 147. oldalon részletes leírást tartalmaz a Flash adatok soros letöltéséről az SPI csapok segítségével.
Az állandó táblák a teljes program memória címterületén lefoglalhatók (lásd az LPM - Program memória betöltése utasítás leírását).
5-1. ábra. Program memóriatérkép
SRAM adatmemória
5-2. ábra bemutatja az ATtiny25 / 45/85 SRAM memória felépítését.
Az alsó 224/352/607 adatmemória -helyek mind a regisztert címzik File, az I/O memória és a belső adatok SRAM. Az első 32 hely a nyilvántartást célozza meg File, a következő 64 helyen a szabványos I/O memória, és az utolsó 128/256/512 helyen a belső adat SRAM szerepel.
Az adatmemória öt különböző címzési módja: Közvetlen, Közvetett elmozdulással, Közvetett, Indirekt előcsökkentéssel és Közvetett utólagos növeléssel. A Nyilvántartásban File, az R26 -R31 regiszterek az indirekt címzési mutató regisztereket tartalmazzák.
A közvetlen címzés eléri a teljes adaterületet.
Az Indirect with Displacement mód 63 címhelyet ér el az Y- vagy Z- regiszter által megadott alapcímtől.
Ha a regiszter közvetett címzési módokat használjuk automatikus előcsökkentéssel és utólagos növekedéssel, akkor az X, Y és Z címregisztereket csökkentjük vagy növeljük.
A 32 általános célú munkaregiszter, a 64 I/O regiszter és a 128/256/512 bájt belső adat SRAM az ATtiny25/45/85 -ben mindezen címzési módokon keresztül elérhető. A regisztráció File a „Gen- minden rendeltetési nyilvántartás File”A 10. oldalon.
5-2. ábra. Adatmemória térkép
Adatmemória hozzáférés Times
Ez a rész a belső memória-hozzáférés általános hozzáférési időzítési koncepcióit írja le. A belső adatok SRAM-hozzáférése két clkCPU-ciklusban történik, a leírás szerint 5-3. ábra.
5-3 ábra. Chipbe épített adat SRAM hozzáférési ciklusok EEPROM adatmemória
Az ATtiny25 / 45/85 128/256/512 bájtnyi EEPROM memóriát tartalmaz. Külön adattérként van megszervezve, amelyben egyetlen bájt olvasható és írható. Az EEPROM tartóssága legalább 100,000 XNUMX írási / törlési ciklus. Az EEPROM és a CPU közötti hozzáférést az alábbiakban ismertetjük, meghatározva az EEPROM címjegyzékeket, az EEPROM adatregisztert és az EEPROM vezérlő regisztert. Részletekért lásd “Soros letöltés”, 151. oldal.
EEPROM olvasási / írási hozzáférés
Az EEPROM hozzáférési nyilvántartások az I / O térben érhetők el.
Az EEPROM írási hozzáférési ideje itt van megadva 5-1. Táblázat a 21. oldalon. Az önidőzítő funkció azonban lehetővé teszi a felhasználói szoftver számára, hogy észlelje, mikor írható a következő bájt. Ha a felhasználói kód olyan utasításokat tartalmaz, amelyek az EEPROM-ot írják, bizonyos óvintézkedéseket kell tenni. Az erősen szűrt tápegységekben a VCC valószínűleg lassan emelkedik vagy csökken
Be-/kikapcsolás. Ez azt eredményezi, hogy a készülék bizonyos ideig voltage kisebb, mint a használt órajel-frekvencia minimális értéke. Lát “Az EEPROM korrupció megelőzése”, 19. oldal részleteket arról, hogyan lehet elkerülni a problémákat ezekben a helyzetekben.
A véletlenszerű EEPROM-írások megakadályozása érdekében speciális írási eljárást kell követni. Hivatkozni "Atom Bájt programozása ”, 17. oldal és “Split byte programozás”, 17. oldal erről részletesen.
Az EEPROM beolvasása után a CPU négy óra ciklusra leáll, mielőtt a következő utasítást végrehajtanák. Az EEPROM megírásakor a CPU két óra ciklusra leáll, mielőtt a következő utasítást végrehajtanák.
Atom bájt programozás
Az Atomic byte programozás használata a legegyszerűbb mód. Amikor az EEPROM-ba bájtot ír, a felhasználónak be kell írnia a címet az EEAR nyilvántartásba, az adatokat pedig az EEDR nyilvántartásba. Ha az EEPMn bit nulla, akkor az EEPE beírása (négy cikluson belül az EEMPE írása után) elindítja a törlés / írás műveletet. A törlési és az írási ciklus egyaránt egy művelettel történik, és a teljes programozási idő megadva 5-1. Táblázat a 21. oldalon. Az EEPE bit állítva marad, amíg a törlési és írási műveletek befejeződnek. Amíg a készülék programozással van elfoglalva, más EEPROM művelet nem hajtható végre.
Split byte programozás
A törlési és írási ciklus két különböző műveletre osztható. Ez akkor lehet hasznos, ha a rendszer korlátozott ideig rövid hozzáférési időt igényel (általában akkor, ha a tápegység voltage esik). Az előnyök érdekében tagEnnek a módszernek a megkövetelése, hogy az írandó helyeket törölni kell az írási művelet előtt. De mivel a törlési és írási műveletek fel vannak osztva, lehetséges a törlési műveletek végrehajtása, amikor a rendszer lehetővé teszi az időkritikus műveletek elvégzését (általában a bekapcsolás után).
Törlés
A bájt törléséhez meg kell írni a címet az EEAR-nak. Ha az EEPMn bitek értéke 0b01, az EEPE beírása (négy cikluson belül az EEMPE megírása után) csak a törlési műveletet indítja el (a programozási időt a 5-1. Táblázat 21. oldal). Az EEPE bit állítva marad, amíg a törlési művelet be nem fejeződik. Amíg a készülék programozással van elfoglalva, más EEPROM művelet nem hajtható végre.
Írj
Hely megírásához a felhasználónak be kell írnia a címet az EEAR-ba, az adatokat pedig az EEDR-be. Ha az EEPMn bitek 0b10, akkor az EEPE megírása (négy cikluson belül az EEMPE írása után) csak az írási műveletet indítja el (a programozási időt a 5-1. Táblázat a 21. oldalon). Az EEPE bit állítva marad, amíg az írási művelet be nem fejeződik. Ha az írandó helyet az írás előtt nem törölték, akkor a tárolt adatokat elveszettnek kell tekinteni. Amíg a készülék programozással van elfoglalva, más EEPROM művelet nem hajtható végre.
A kalibrált oszcillátort az EEPROM elérések időzítésére használják. Győződjön meg arról, hogy az oszcillátor frekvenciája megfelel az alább leírt követelményeknek “OSCCAL - Oszcillátor kalibrációs regisztráció”, 31. oldal.
A következő kód plampA lesek egy összeállítást és egy C funkciót mutatnak az EEPROM törléséhez, írásához vagy atomírásához. Az exampFeltételezzük, hogy a megszakításokat ellenőrzik (pl. a megszakítások globális letiltásával), hogy ne lépjenek fel megszakítások ezen funkciók végrehajtása során.
Összeszerelési kód Plample |
EEPROM_write:
; Várja meg az előző írás befejezését sbic EECR,EEPE rjmp EEPROM_write ; Állítsa be a programozási módot ldi r16, (0<<EEPM1)|(0<<EEPM0) ki EECR, r16 ; Állítsa be a címet (r18: r17) a címjegyzékben ki EEARH, r18 ki EEARL, r17 ; Írjon adatokat (r19) az adatregiszterbe ki EEDR, r19 ; Írjon logikusat az EEMPE-be sbi EECR,EEMPE ; Indítsa el az eeprom írást az EEPE beállításával sbi EECR,EEPE ret |
C Kód Példaample |
void EEPROM_write(unsigned char ucAddress, unsigned char ucData)
{ /* Várja meg az előző írás befejezését */ while(EECR & (1< ; /* Programozási mód beállítása */ EECR = (0 < / * Cím- és adatregiszterek beállítása * / EEAR = ucAddress; EEDR = ucData; /* Írjon logikait az EEMPE-be */ EECR | = (1 < / * Indítsa el az eeprom írást az EEPE beállításával * / EECR | = (1 < } |
A következő kód plampA les bemutatja az EEPROM olvasásához szükséges összeszerelési és C funkciókat. Az exampa feltételezések szerint a megszakításokat úgy szabályozzák, hogy ezen funkciók végrehajtása közben ne lépjenek fel megszakítások.
Összeszerelési kód Plample |
EEPROM_read:
; Várja meg az előző írás befejezését sbic EECR,EEPE rjmp EEPROM_read ; Állítsa be a címet (r18: r17) a címjegyzékben ki EEARH, r18 ki EEARL, r17 ; Indítsa el az eepromot az EERE írásával sbi EECR,EERE ; Adatok olvasása az adatregiszterből r16-ban,EEDR ret |
C Kód Példaample |
unsigned char EEPROM_read(unsigned char ucAddress)
{ / * Várja meg az előző írás befejezését * / míg (EECR & (1 < ; / * Címnyilvántartás beállítása * / EEAR = ucAddress; /* Indítsa el az eeprom olvasást az EERE írásával */ EECR | = (1 < / * Adatok visszaküldése az adatregiszterből * / visszatér EEDR; } |
Az EEPROM korrupciójának megelőzése
Alacsony VCC időszakokban az EEPROM adatok megsérülhetnek, mert a tápvolttage túl alacsony ahhoz, hogy a CPU és az EEPROM megfelelően működjön. Ezek a problémák ugyanazok, mint az EEPROM -ot használó alaplapi rendszereknél, és ugyanazokat a tervezési megoldásokat kell alkalmazni.
Az EEPROM adatkorrupciót két helyzet okozhatja, amikor a voltage túl alacsony. Először is, az EEPROM -ba történő rendszeres írási sorrend minimális kötetet igényeltage, hogy megfelelően működjön. Másodszor, maga a CPU helytelenül hajthatja végre az utasításokat, ha a tápfeszültség voltage túl alacsony.
Az EEPROM-adatok sérülése könnyen elkerülhető az alábbi tervezési ajánlás betartásával:
Tartsa az AVR RESET -t aktív (alacsony), ha nincs elegendő áramellátástage. Ezt a belső Brown-out Detector (BOD) engedélyezésével teheti meg. Ha a belső BOD észlelési szintje nem egyezik a
szükséges észlelési szint, külső alacsony VCC-visszaállítási védelmi áramkör használható. Ha visszaállítás történik írási művelet közben, az írási művelet befejeződik, feltéve, hogy a tápegység voltage elegendő.
I / O memória
Az ATtiny25 / 45/85 I / O térdefiníciója a “Összefoglaló regisztrálása”, 200. oldal.
Minden ATtiny25 / 45/85 I / O és periféria az I / O térbe kerül. Valamennyi I / O helyhez hozzáférhet az LD / LDS / LDD és az ST / STS / STD utasítások segítségével, az adatok átvitele a 32 általános célú regiszter és az I / O tér között. A 0x00 - 0x1F címtartományon belüli I / O regiszterek közvetlenül elérhetők bitekkel az SBI és a CBI utasítások segítségével. Ezekben a regiszterekben az egyes bitek értéke az SBIS és az SBIC utasítások segítségével ellenőrizhető. További részletekért lásd az utasításkészlet részt. Az I / O specifikus IN és OUT parancsok használatakor a 0x00 - 0x3F I / O címeket kell használni. Amikor az I / O regisztereket LD és ST utasítások segítségével adattérként kezeljük, 0x20 értéket kell hozzáadni ezekhez a címekhez.
A jövőbeni eszközökkel való kompatibilitás érdekében a fenntartott biteket nullára kell írni, ha elérik őket. A fenntartott I / O memória címeket soha nem szabad írni.
Az állapotjelzők némelyike törlődik, ha logikusat ír nekik. Vegye figyelembe, hogy a CBI és az SBI utasítások csak a megadott biten fognak működni, ezért az ilyen állapotjelzőket tartalmazó regisztereken használhatók. A CBI és az SBI utasítások csak a 0x00 - 0x1F regiszterekkel működnek.
Az I / O és a perifériák vezérlő regisztereit a későbbi szakaszok ismertetik.
Regisztráció leírása
EEARH - EEPROM címjegyzék
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1F | – | – | – | – | – | – | – | EEAR8 | FEHELY |
Olvasni/Írni | R | R | R | R | R | R | R | R/W | |
Kezdeti érték | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X/0 |
Bits 7: 1 - Res: Lefoglalt bitek
Ezeket a biteket későbbi felhasználásra fenntartjuk, és mindig nullaként fognak olvasni.
0. bit - EEAR8: EEPROM cím
Ez az ATtiny85 legjelentősebb EEPROM címbitje. Kevesebb EEPROM-mal rendelkező eszközöknél, azaz ATtiny25 / ATtiny45, ez a bit fenntartva van, és mindig nullát fog olvasni. Az EEPROM címregiszter (EEAR) kezdeti értéke nincs meghatározva, ezért az EEPROM elérése előtt megfelelő értéket kell írni.
EEARL - EEPROM címjegyzék
Bit
0x1E | EEAR7 | EEAR6 | EEAR5 | EEAR4 | EEAR3 | EEAR2 | EEAR1 | EEAR0 | EEARL |
Hátul / Írás | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Kezdeti érték | X | X | X | X | X | X | X | X |
7. bit - EEAR7: EEPROM cím
Ez az ATtiny45 legjelentősebb EEPROM címbitje. Kevesebb EEPROM-mal rendelkező eszközöknél, azaz ATtiny25-nél ez a bit fenntartva van, és mindig nullát fog olvasni. Az EEPROM címjegyzék (EEAR) kezdeti értéke nincs meghatározva, ezért az EEPROM elérése előtt megfelelő értéket kell írni.
Bits 6: 0 - EEAR [6: 0]: EEPROM cím
Ezek az (alacsony) bitek az EEPROM címjegyzékben. Az EEPROM adat byte-ok lineárisan kerülnek megcímzésre a 0… (128/256 / 512-1) tartományban. Az EEAR kezdeti értéke nincs meghatározva, ezért az EEPROM-hoz való hozzáférés előtt megfelelő értéket kell írni.
EEDR - EEPROM adatnyilvántartás
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1D | EEDR7 | EEDR6 | EEDR5 | EEDR4 | EEDR3 | EEDR2 | EEDR1 | EEDR0 | EEDR |
Olvasni/Írni | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Kezdeti érték | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Az EEPROM írási művelethez az EEDR nyilvántartás tartalmazza az EEPROM-hoz írandó adatokat az EEAR nyilvántartás által megadott címen. Az EEPROM olvasási művelethez az EEDR tartalmazza a
EEPROM az EEAR által megadott címen.
5.5.4. EECR - EEPROM ellenőrzési nyilvántartás |
|||||||||
7 6 5. bit | 4 | 3 | 2 | 1 | 0 | ||||
0x1C – | – | EEPM1 | EEPM0 | KÍSÉRTETIES | EEMPE | EEPE | EERE | EECR | |
Olvasás / írás R R R / W | R/W | R/W | R/W | R/W | R/W | ||||
Kezdeti érték 0 0 X | X | 0 | 0 | X | 0 |
7. bit - Res: Fenntartott bit
Ez a bit későbbi használatra van fenntartva, és az ATtiny0 / 25/45-ben mindig 85-nak fog olvasni. A jövőbeni AVR eszközökkel való kompatibilitás érdekében ezt a bitet mindig nullára írja. Olvasás után maszkolja ki ezt a kicsit.
6. bit - Res: Fenntartott bit
Ez a bit az ATtiny25 / 45/85-ben van fenntartva, és mindig nulla lesz.
Bitek 5: 4 - EEPM [1: 0]: EEPROM programozási mód bitek
Az EEPROM programozási mód bitbeállítása határozza meg, hogy mely programozási művelet indul el az EEPE írásakor. Lehetséges adatok beprogramozása egy atomi művelet során (a régi érték törlése és az új érték beprogramozása), vagy az Erase and Write műveletek két különböző műveletre bontása. A különféle üzemmódok programozási ideje a 5-1. táblázat. Amíg az EEPE be van állítva, az EEPMn-be írt írások figyelmen kívül maradnak. A visszaállítás során az EEPMn bitek 0b00-ra állnak vissza, hacsak az EEPROM nem foglalkozik programozással.
5-1. táblázat. EEPROM mód bitek
EEPM1 | EEPM0 | Programozási idő | Művelet |
0 | 0 | 3.4 ms | Törlés és írás egyetlen művelettel (Atomi művelet) |
0 | 1 | 1.8 ms | Csak törlés |
1 | 0 | 1.8 ms | Csak írás |
1 | 1 | – | Fenntartva későbbi használatra |
3. bit - EERIE: EEPROM kész megszakítás engedélyezése
Az EERIE egybe írása lehetővé teszi az EEPROM kész megszakítást, ha az I-bit a SREG-ben be van állítva. Az EERIE nullára írása megszünteti a megszakítást. Az EEPROM kész megszakítás állandó megszakítást generál, ha a nem felejtő memória készen áll a programozásra.
2. bit - EEMPE: EEPROM Master Program engedélyezése
Az EEMPE bit határozza meg, hogy az EEPE írása az egyiknek hatással lesz-e vagy sem.
Ha az EEMPE be van állítva, az EEPE beállítása négy órajelen belül programozza az EEPROM-ot a kiválasztott címre. Ha az EEMPE értéke nulla, az EEPE beállítása nincs hatással. Amikor az EEMPE-t szoftveresen írta az egyikhez, a hardver négy óraciklus után nullára törli a bitet.
1. bit - EEPE: EEPROM program engedélyezése
Az EEPROM program engedélyező jele Az EEPE az EEPROM felé irányuló programozási engedélyező jel. Az EEPE megírásakor az EEPROM az EEPMn bit beállításának megfelelően lesz programozva. Az EEMPE bitet az egyikhez kell írni, mielőtt egy logikusat írnának az EEPE-be, különben nem történik EEPROM írás. Amikor az írási hozzáférési idő letelt, az EEPE bitet hardver törli. Az EEPE beállítása után a CPU két ciklusra leáll, mielőtt a következő utasítást végrehajtanák.
0. bit - EERE: EEPROM Olvasás engedélyezése
Az EEPROM Read Enable Signal - EERE - az EEPROM olvasási sztrobója. Amikor a helyes címet beállította az EEAR regiszterben, az EERE bitet egyre kell írni, hogy elindítsa az EEPROM olvasást. Az EEPROM olvasási hozzáférése egy utasítást igényel, és a kért adatok azonnal rendelkezésre állnak. Az EEPROM olvasásakor a CPU négy ciklusra leáll, mielőtt a következő utasítást végrehajtanák. A felhasználónak le kell kérdeznie az EEPE bitet az olvasási művelet megkezdése előtt. Ha írási művelet van folyamatban, akkor sem az EEPROM beolvasása, sem az EEAR nyilvántartás módosítása nem lehetséges.
Rendszer Óra és Óra opciók
Órarendszerek és elosztásuk
CPU óra
A CPU órajelét a rendszer az AVR mag működtetésével érintett részeire irányítja. Voltampaz ilyen modulok az általános célú nyilvántartás File, az állapotregiszter és a veremmutatót tartalmazó adatmemória. A CPU óra leállítása megakadályozza a magot az általános műveletek és számítások elvégzésében.
I / O óra - clkI / O
Az I / O órát az I / O modulok többsége használja, például az Időzítő / Számláló. Az I / O órát a Külső megszakítás modul is használja, de vegye figyelembe, hogy néhány külső megszakítást aszinkron logika észlel, lehetővé téve az ilyen megszakítások észlelését akkor is, ha az I / O óra le van állítva.
Flash Clock - clkFLASH
A Flash óra vezérli a Flash interfész működését. A Flash óra általában a CPU órájával egyidejűleg aktív.
ADC óra - clkADC
Az ADC egy dedikált óra tartományral van ellátva. Ez lehetővé teszi a CPU és az I / O órák leállítását a digitális áramkörök által keltett zaj csökkentése érdekében. Ez pontosabb ADC konverziós eredményeket ad.
Belső PLL a gyors perifériás óra előállításához - clkPCK
Az ATtiny25 / 45/85 belső PLL-je 8x-szoros órajel-frekvenciát generál egy forrásbemenetből. Alapértelmezés szerint a PLL a belső, 8.0 MHz-es RC oszcillátor kimenetét használja forrásként. Alternatív megoldásként, ha a PLLCSR LSM bitje be van állítva, a PLL az RC oszcillátor kimenetét használja ketté osztva. Így a PLL, a gyors perifériás órajel kimenete 64 MHz. A gyors perifériás óra, vagy az ebből előre skálázott óra választható az Időzítő / Számláló1 óraforrásaként vagy rendszeróraként. Lát 6-2. ábra. A PLLCSR LSM beállításakor a gyors periféria órajelének frekvenciáját osztják kettővel, ami 32 MHz-es órajelet eredményez. Ne feledje, hogy az LSM nem állítható be, ha a PLLCLK-t használja rendszeróraként.
6-2. ábra. PCK Órarendszer.
A PLL zárolva van az RC oszcillátoron, és az OSCCAL regiszteren keresztül történő RC oszcillátor beállításával egyidejűleg beállíthatja a gyors perifériás órát is. Még akkor is, ha az RC oszcillátort 8 MHz-nél magasabb frekvenciára állítják, a gyors perifériás órajel frekvencia 85 MHz-nél telítődik (legrosszabb esetben), és továbbra is a maximális frekvencián leng. Meg kell jegyezni, hogy a PLL ebben az esetben már nincs rögzítve az RC oszcillátor órájával. Ezért javasoljuk, hogy az OSCCAL-beállításokat ne vegye 8 MHz-nél magasabb frekvenciára annak érdekében, hogy a PLL a megfelelő működési tartományban maradjon.
A belső PLL engedélyezve van, ha:
A PLLCSR regiszter PLLE bitje be van állítva.
A CKSEL biztosíték '0001' értékre van programozva.
A CKSEL biztosíték '0011' értékre van programozva.
A PLLCSR bit PLOCK akkor van beállítva, ha a PLL zárolva van. Mind a belső RC-oszcillátor, mind a PLL ki van kapcsolva kikapcsolás és készenléti alvó üzemmódban.
Belső PLL ATtiny15 kompatibilitási módban
Mivel az ATtiny25 / 45/85 egy áttelepítési eszköz az ATtiny15 felhasználók számára, a háttér kompatibilitás érdekében van egy ATtiny15 kompatibilitási mód. Az ATtiny15 kompatibilitási módot úgy választjuk meg, hogy a CKSEL biztosítékokat „0011” -re programozzuk.
Az ATtiny15 kompatibilitási módban a belső RC oszcillátor frekvenciáját 6.4 MHz-re kalibrálják, és a PLL szorzótényezőjét 4x-re állítják. Lát 6-3. ábra. Ezekkel a beállításokkal az órarendszer ATtiny15-kompatibilis, és a kapott perifériás óra frekvenciája 25.6 MHz (ugyanaz, mint az ATtiny15-ben).
6-3 ábra. PCK órajelrendszer ATtiny15 kompatibilitási módban.
Óraforrások
A készülék az alábbi óraforrás-opciókkal rendelkezik, amelyeket Flash Fuse bitek választhatnak az alábbiak szerint. A kiválasztott forrás óráját az AVR órajelgenerátorba vezetik be, és a megfelelő modulokhoz vezetik.
6-1. táblázat. Eszköz órajel beállításai Válassza ki
Készülékóra opció | CKSEL[3:0](1) |
Külső óra (lásd 26. oldal) | 0000 |
Nagyfrekvenciás PLL óra (lásd 26. oldal) | 0001 |
Kalibrált belső oszcillátor (lásd 27. oldal) | 0010(2) |
Kalibrált belső oszcillátor (lásd 27. oldal) | 0011(3) |
Belső 128 kHz-es oszcillátor (lásd 28. oldal) | 0100 |
Alacsony frekvenciájú kristály oszcillátor (lásd 29. oldal) | 0110 |
Kristály oszcillátor / kerámia rezonátor (lásd 29. oldal) | 1000 – 1111 |
Fenntartott | 0101, 0111 |
Valamennyi biztosítéknál az „1” nem programozott, míg a „0” a beprogramozott.
Az eszközt a kiválasztott opcióval szállítják.
Ez kiválasztja az ATtiny15 kompatibilitási módot, ahol a rendszer óráját elosztjuk négyel, ami 1.6 MHz-es órajel frekvenciát eredményez. További inormációról lásd “Kalibrált belső oszcillátor”, 27. oldal.
Az egyes ütemezési opciók különféle választási lehetőségeit a következő szakaszok adják meg. Amikor a CPU felébred a kikapcsolásról, a kiválasztott óraforrást használják az indítás időzítésére, biztosítva az oszcillátor stabil működését az utasítások végrehajtása előtt. Amikor a CPU újraindításból indul, további késleltetés következik be, amely lehetővé teszi az energia stabil szint elérését a normál működés megkezdése előtt. A Watchdog oszcillátor az indítási idő ezen valós idejű részének időzítésére szolgál. Az egyes időkorlátokhoz használt WDT oszcillátor ciklusok számát a 6-2. táblázat.
6-2. táblázat. Watchdog oszcillátor ciklusok száma
Tipikus időtúllépés | Ciklusok száma |
4 ms | 512 |
64 ms | 8K (8,192) |
Külső óra
Az eszköz külső óraforrásból történő vezetéséhez a CLKI-t az ábrán látható módon kell hajtani 6-4. ábra. A készülék külső órán történő futtatásához a CKSEL biztosítékokat „00” -ra kell programozni.
6-4. Külső óra meghajtó konfigurációja
Ha ezt az óraforrást választja, az indítási időket a SUT biztosítékok határozzák meg, az ábra szerint 6-3. táblázat.
6-3. táblázat. Indítási idők a külső óra kiválasztásához
SUT[1:0] | Indítási idő kikapcsoláskor | További késleltetés a visszaállításnál | Javasolt felhasználás |
00 | 6 CK | 14CK | BOD engedélyezve |
01 | 6 CK | 14CK + 4 ms | Gyorsan növekvő teljesítmény |
10 | 6 CK | 14CK + 64 ms | Lassan növekvő erő |
11 | Fenntartott |
Külső óra alkalmazása esetén el kell kerülni az alkalmazott órajel frekvenciájának hirtelen változását az MCU stabil működésének biztosítása érdekében. Ha a frekvencia több mint 2% -kal változik egyik óraműveletről a másikra, kiszámíthatatlan viselkedéshez vezethet. Biztosítani kell, hogy az órajel frekvenciájának ilyen változása során az MCU a Reset-ben maradjon.
Ne feledje, hogy a System Clock Presale használható a belső órafrekvencia futásidejű változtatásainak végrehajtására, miközben továbbra is biztosítja a stabil működést. Hivatkozni “Rendszeróra előzsírosító”, 31. oldal részletekért.
Nagyfrekvenciás PLL óra
Van egy belső PLL, amely névlegesen 64 MHz-es órajelet biztosít az RC oszcillátorhoz rögzítve a perifériás időzítő / számláló1 és a rendszer órajelének használatához. Ha a rendszer óraforrásaként választjuk, a CKSEL biztosítékokat '0001' értékre programozva, négyet osztunk, mint a 6-4. táblázat.
6-4. táblázat. Nagyfrekvenciás PLL-óra üzemmódok
CKSEL[3:0] | Névleges frekvencia |
0001 | 16 MHz |
Ha ezt az óraforrást választja, az indítási időket a SUT biztosítékok határozzák meg, az ábra szerint 6-5. táblázat.
táblázat 6-5. A nagyfrekvenciás PLL óra indítási ideje
SUT[1:0] | Indítási idő kikapcsoláskor | További késleltetés a bekapcsolási visszaállításból (VCC = 5.0 V) | Javasolt felhasználás |
00 | 14CK + 1K (1024) CK + 4 ms | 4 ms | BOD engedélyezve |
táblázat 6-5. A nagyfrekvenciás PLL óra indítási ideje
SUT[1:0] | Indítási idő kikapcsoláskor | További késleltetés a bekapcsolási visszaállításból (VCC = 5.0 V) | Javasolt felhasználás |
01 | 14CK + 16K (16384) CK + 4 ms | 4 ms | Gyorsan növekvő teljesítmény |
10 | 14CK + 1K (1024) CK + 64 ms | 4 ms | Lassan növekvő erő |
11 | 14CK + 16K (16384) CK + 64 ms | 4 ms | Lassan növekvő erő |
Kalibrált belső oszcillátor
Alapértelmezés szerint a belső RC oszcillátor hozzávetőlegesen 8.0 MHz -es órát biztosít. Bár voltage és hőmérséklet függvényében ezt az órát a felhasználó nagyon pontosan kalibrálhatja. Lát „Kalibrált belső RC oszcillátor akkumulátor racy ”című részt a 164. oldalon és “Belső oszcillátor sebessége”, 192. oldal további részletekért. A készüléket a CKDIV8 biztosíték programozásával szállítják. Lát “Rendszeróra előzsírosító”, 31. oldal további részletekért.
Ezt az órát kiválaszthatja rendszerórának a CKSEL biztosítékok programozásával, az ábra szerint 6-6. Táblázat az oldalon
27. Ha kiválasztja, akkor külső komponensek nélkül fog működni. A visszaállítás során a hardver betölti az előre beprogramozott kalibrációs értéket az OSCCAL nyilvántartásba, és ezáltal automatikusan kalibrálja az RC oszcillátort. Ennek a kalibrálásnak a pontossága gyári kalibrálásként jelenik meg 21-2. Táblázat a 164. oldalon.
Az OSCCAL regiszter SW-ről történő megváltoztatásával lásd “OSCCAL - Oszcillátor kalibrációs regisztráció”, 31. oldal, nagyobb kalibrálási pontosságot lehet elérni, mint a gyári kalibráció használatával. Ennek a kalibrálásnak a pontossága a felhasználó kalibrálásaként jelenik meg 21-2. Táblázat a 164. oldalon.
Ha ezt az oszcillátort chip-óraként használják, akkor a Watchdog oszcillátort továbbra is a Watchdog Timer és a Reset Timeout számára használják. Az előre beprogramozott kalibrálási értékről a szakaszban olvashat bővebben „Cali- bájt bájtok ”a 150. oldalon.
A belső oszcillátort úgy is beállíthatjuk, hogy 6.4 MHz-es órát biztosítson a CKSEL biztosítékok „0011” -re írásával, amint az 6-6. táblázat lent. Ez a beállítás ATtiny15 kompatibilitási módként jelenik meg, és célja egy kalibrált óraforrás biztosítása 6.4 MHz-en, mint az ATtiny15 esetében. ATtiny15 kompatibilitási módban a PLL a 6.4 MHz-en működő belső oszcillátort használja, hogy 25.6 MHz-es perifériás órajelet generáljon az Időzítő / Számláló1 számára (lásd: „8 bites időzítő / számláló1 in ATtiny15 mód ”, 95. oldal). Ne feledje, hogy ebben az üzemmódban a 6.4 MHz-es órajelet mindig négyre osztják, 1.6 MHz-es rendszerórát biztosítva.
táblázat 6-6. Belső kalibrált RC oszcillátor működési módok
CKSEL[3:0] | Névleges frekvencia |
0010(1) | 8.0 MHz |
0011(2) | 6.4 MHz |
Az eszközt a kiválasztott opcióval szállítják.
Ez a beállítás az ATtiny15 kompatibilitási módot választja, ahol a rendszer óráját elosztjuk négyel, ami 1.6 MHz-es órajel-frekvenciát eredményez.
Ha a kalibrált 8 MHz-es belső oszcillátort választja órajelforrásnak, az indítási időket a SUT biztosítékok határozzák meg, az alábbiak szerint: 6-7. táblázat alatt.
6-7. táblázat. A belső kalibrált RC oszcillátoróra indítási ideje
SUT[1:0] | Indítási idő kikapcsoláskor | További késleltetés a visszaállítástól (VCC = 5.0 V) | Javasolt felhasználás |
00 | 6 CK | 14CK(1) | BOD engedélyezve |
01 | 6 CK | 14CK + 4 ms | Gyorsan növekvő teljesítmény |
10(2) | 6 CK | 14CK + 64 ms | Lassan növekvő erő |
11 | Fenntartott |
1. Ha az RSTDISBL biztosíték be van programozva, ez az indítási idő 14CK + 4 ms-ra növekszik, hogy biztosítsa a programozási mód beírását.
2. A készüléket a kiválasztott opcióval szállítják.
Az ATtiny15 kompatibilitási módban az indítási időket a SUT biztosítékok határozzák meg, az ábra szerint 6-8. táblázat alatt.
táblázat 6-8. A belső kalibrált RC oszcillátoróra indítási ideje (ATtiny15 módban)
SUT[1:0] | Indítási idő kikapcsoláskor | További késleltetés a visszaállítástól (VCC = 5.0 V) | Javasolt felhasználás |
00 | 6 CK | 14CK + 64 ms | |
01 | 6 CK | 14CK + 64 ms | |
10 | 6 CK | 14CK + 4 ms | |
11 | 1 CK | 14CK(1) |
Megjegyzés: Ha az RSTDISBL biztosíték be van programozva, ez az indítási idő 14CK + 4 ms-ra nő, hogy a programozási módba be lehessen lépni.
Összefoglalva, az ATtiny15 kompatibilitási módról további információk találhatók a szakaszokban „B port (PB5: PB0)” be van kapcsolva 2. oldal, “Belső PLL ATtiny15 kompatibilitási módban” a 24. oldalon, „8 bites időzítő / számláló1 ATtiny15 módban” be van kapcsolva 95. oldal, “A debugWIRE korlátai” a 140. oldalon, “Bájtok kalibrálása”, 150. oldal és a táblázatban - Óravezérlő Kiválasztás ”a 33. oldalon.
Belső 128 kHz-es oszcillátor
A 128 kHz-es belső oszcillátor egy kis teljesítményű oszcillátor, amely 128 kHz-es órajelet biztosít. A frekvencia névleges 3V-on és 25°C-on. Ez az óra kiválasztható rendszeróraként, ha a CKSEL biztosítékokat „0100”-ra programozza.
Ha ezt az óraforrást választja, az indítási időket a SUT biztosítékok határozzák meg, az ábra szerint 6-9. táblázat.
6-9. táblázat. A 128 kHz-es belső oszcillátor indítási ideje
SUT[1:0] | Indítási idő kikapcsoláskor | További késleltetés a visszaállításnál | Javasolt felhasználás |
00 | 6 CK | 14CK(1) | BOD engedélyezve |
01 | 6 CK | 14CK + 4 ms | Gyorsan növekvő teljesítmény |
10 | 6 CK | 14CK + 64 ms | Lassan növekvő erő |
11 | Fenntartott |
Megjegyzés: Ha az RSTDISBL biztosíték be van programozva, ez az indítási idő 14CK + 4 ms-ra nő, hogy a programozási módba be lehessen lépni.
Alacsony frekvenciájú kristály oszcillátor
Ahhoz, hogy 32.768 kHz-es órakristályt használjon a készülék óraforrásaként, az alacsony frekvenciájú kristályoszcillátort úgy kell kiválasztani, hogy a CKSEL biztosítékokat '0110' értékre állítsa. A kristályt az ábra szerint kell összekötni 6-5. ábra. A 32.768 kHz-es kriszal megfelelő terhelhetőségének megismeréséhez olvassa el a gyártó adatlapját.
Ennek az oszcillátornak a kiválasztásakor az indítási időket a SUT biztosítékok határozzák meg, az ábra szerint 6-10. táblázat.
táblázat 6-10. Indítási idők az alacsony frekvenciájú kristályoszcillátor óra kiválasztásához
SUT[1:0] | Indítási idő kikapcsoláskor | További késleltetés a visszaállítástól (VCC = 5.0 V) | Javasolt felhasználás |
00 | 1K (1024) CK(1) | 4 ms | Gyorsan növekvő teljesítmény vagy BOD engedélyezve |
01 | 1K (1024) CK(1) | 64 ms | Lassan növekvő erő |
10 | 32K (32768) CK | 64 ms | Stabil frekvencia indításkor |
11 | Fenntartott |
Megjegyzés: Ezeket az opciókat csak akkor szabad használni, ha a frekvenciastabilitás az indításkor nem fontos.
Az alacsony frekvenciájú kristályoszcillátor belső terhelési kapacitást biztosít, lásd 6-11. táblázat az egyes TOSC csapoknál.
6-11. táblázat. Alacsony frekvenciájú kristályoszcillátor kapacitása
Eszköz | 32 kHz Osc. típus | Sapka (Xtal1 / Tosc1) | Sapka (Xtal2 / Tosc2) |
ATtiny25 / 45/85 | Rendszer Osc. | 16 pF | 6 pF |
Kristály oszcillátor / kerámia rezonátor
Az XTAL1 és az XTAL2 invertáló bemenet, illetve kimenet amplifier, amely konfigurálható On-chip oszcillátorként való használatra, amint az a 6-5. ábra. Vagy kvarckristály, vagy kerámia rezonátor használható.
C1 és C2 mindig egyenlő legyen mind a kristályok, mind a rezonátorok esetében. A kondenzátorok optimális értéke a használt kristálytól vagy rezonátortól, a szórt kapacitás nagyságától és a környezet elektromágneses zajától függ. A kristályokkal használható kondenzátorok kiválasztására vonatkozó kezdeti irányelvek találhatók 6-12. táblázat lent. Kerámia rezonátoroknál a gyártó által megadott kondenzátor értékeket kell használni.
táblázat 6-12. Kristályoszcillátor működési módok
CKSEL[3:1] | Frekvenciatartomány (MHz) | A kristályokkal való használatra ajánlott tartomány C1 és C2 kondenzátorokhoz (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 |
Megjegyzések: Ez az opció nem használható kristályokhoz, csak kerámia rezonátorokhoz.
Az oszcillátor három különböző üzemmódban működhet, mindegyiket egy adott frekvenciatartományra optimalizálva. Az üzemmódot a CKSEL [3: 1] biztosítékok választják ki, amint az látható 6-12. táblázat.
A CKSEL0 biztosíték a SUT [1: 0] biztosítékokkal együtt kiválasztja az indítási időket, ahogyan az látható 6-13. táblázat.
6-13. táblázat. Indítási idők a kristályoszcillátor óra kiválasztásához
CKSEL0 | SUT[1:0] | Indítási idő kikapcsoláskor | További késleltetés a visszaállításnál | Javasolt felhasználás |
0 | 00 | 258 CK(1) | 14CK + 4 ms | Kerámia rezonátor, gyorsan növekvő teljesítmény |
0 | 01 | 258 CK(1) | 14CK + 64 ms | Kerámia rezonátor, lassan növekvő teljesítmény |
0 | 10 | 1K (1024) CK(2) | 14CK | Kerámia rezonátor, BOD engedélyezve |
0 | 11 | 1K (1024) CK(2) | 14CK + 4 ms | Kerámia rezonátor, gyorsan növekvő teljesítmény |
1 | 00 | 1K (1024) CK(2) | 14CK + 64 ms | Kerámia rezonátor, lassan növekvő teljesítmény |
1 | 01 | 16K (16384) CK | 14CK | Kristály oszcillátor, BOD engedélyezve |
1 | 10 | 16K (16384) CK | 14CK + 4 ms | Kristály oszcillátor, gyorsan növekvő teljesítmény |
1 | 11 | 16K (16384) CK | 14CK + 64 ms | Kristály oszcillátor, lassan növekvő teljesítmény |
Megjegyzések
Ezeket az opciókat csak akkor szabad használni, ha nem a készülék maximális frekvenciája közelében üzemel, és csak akkor, ha az indításkor a frekvenciastabilitás nem fontos az alkalmazás számára. Ezek az opciók nem alkalmasak kristályokhoz.
Ezeket az opciókat kerámia rezonátorokkal való használatra szánják, és az indításkor biztosítják a frekvencia stabilitását. Használhatók kristályokkal is, ha nem működnek a készülék maximális frekvenciájának közelében, és ha az indításkor a frekvenciastabilitás nem fontos az alkalmazás szempontjából.
Alapértelmezett óraforrás
A készüléket CKSEL = “0010”, SUT = “10” és CKDIV8 programozással szállítjuk. Az alapértelmezett óraforrás-beállítás ezért a belső RC oszcillátor, amely 8 MHz-en működik, a leghosszabb indítási idővel és a kezdeti rendszeróra 8-as átméretezésével, ami 1.0 MHz-es rendszerórát eredményez. Ez az alapértelmezett beállítás biztosítja, hogy minden felhasználó beállíthatja a kívánt óraforrás-beállítást a rendszerben vagy a nagy volumenbentage Programozó.
Rendszeróra elővízkezelő
Az ATtiny25 / 45/85 rendszerórát fel lehet osztani az “CLKPR - Órák előskálaregisztrálása”, 32. oldal. Ez a funkció az energiafogyasztás csökkentésére használható, ha a feldolgozási teljesítmény igénye alacsony. Ez az összes órajelforrás opcióval használható, és hatással lesz a CPU és az összes szinkron periféria órajelére. A clkI/O, a clkADC, a clkCPU és a clkFLASH el van osztva egy tényezővel, amint az 6-15. Táblázat a 33. oldalon.
Kapcsolási idő
Az előskála-beállítások közötti váltáskor a System Clock Prescaler biztosítja, hogy ne forduljon elő hiba az órarendszerben, és hogy egy közbenső frekvencia ne legyen magasabb, mint sem az előző beállításnak megfelelő, sem pedig az új beállításnak megfelelő órajel-frekvencia.
Az előmérőt végrehajtó hullámszámláló az osztatlan óra frekvenciáján fut, amely gyorsabb lehet, mint a CPU órajel-frekvenciája. Ezért nem lehet meghatározni az előfeszítő állapotát - még akkor sem, ha olvasható lenne, és nem lehet pontosan megjósolni azt a pontos időt, amely az egyik óraosztásról a másikra váltáshoz szükséges.
Attól kezdve, hogy a CLKPS értékeket megírják, a T1 + T2 és a T1 + 2 * T2 közötti időbe telik, mire az új órajel frekvencia aktív lesz. Ebben az intervallumban 2 aktív óraél jön létre. Itt a T1 az előző óra periódus, a T2 pedig az új előfeszítő beállításnak megfelelő időszak.
Óra kimeneti puffer
Az eszköz képes kimenni a rendszerórát a CLKO tűre (ha nem XTAL2 tűként használják). A kimenet engedélyezéséhez be kell programozni a CKOUT biztosítékot. Ez az üzemmód akkor alkalmas, ha a chip-órát a rendszer többi áramkörének meghajtására használják. Ne feledje, hogy az óra nem jelenik meg nullázáskor, és az I / O tű normál működését felülbírálja a biztosíték programozása. Belső RC oszcillátor, WDT oszcillátor, PLL és külső óra (CLKI) választható, ha az óra kimenete a CLKO-n van. A kristály oszcillátorok (XTAL1, XTAL2) nem használhatók CLKO órakimenetére. Ha a System Clock Prescaler-t használja, akkor az osztott rendszeróra kimenet.
Regisztráció leírása
OSCCAL - Oszcillátor kalibrációs regiszter
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x31 | CAL7 | CAL6 | CAL5 | CAL4 | CAL3 | CAL2 | CAL1 | CAL0 | OSCCAL |
Olvasni/Írni | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Bits 7: 0 - CAL [7: 0]: Oszcillátor kalibrációs értéke
Az oszcillátor kalibrációs regisztert használjuk a kalibrált belső RC oszcillátor levágására, hogy eltávolítsuk a folyamatváltozásokat az oszcillátor frekvenciájáról. Az előre beprogramozott kalibrációs érték automatikusan beíródik erre a regiszterre a chip visszaállítása során, megadva a gyárban kalibrált frekvenciát a 21-2. Táblázat a 164. oldalon. Az alkalmazás szoftver megírhatja ezt a regisztert az oszcillátor frekvenciájának megváltoztatásához. Az oszcillátor frekvenciákra kalibrálható az alábbiak szerint 21-2. Táblázat a 164. oldalon. A tartományon kívüli kalibrálás nem garantált.
Ne feledje, hogy ezt az oszcillátort az EEPROM és a Flash írási hozzáférések időzítésére használják, és ezeket az írási időket ennek megfelelően befolyásolja. Ha az EEPROM vagy a Flash írva van, ne kalibráljon 8.8 MHz-nél nagyobbra. Ellenkező esetben az EEPROM vagy a Flash írás sikertelen lehet.
A CAL7 bit meghatározza az oszcillátor működési tartományát. Ha ezt a bitet 0-ra állítja, akkor a legalacsonyabb frekvenciatartományt adhatja meg, ennek a bitnek az 1-re állításával a legmagasabb frekvenciatartományt kapja. A két frekvenciatartomány átfedésben van, más szóval az OSCCAL = 0x7F beállítása magasabb frekvenciát ad, mint az OSCCAL = 0x80.
A CAL [6: 0] biteket a frekvencia hangolására használják a kiválasztott tartományban. A 0x00 beállítás a legalacsonyabb frekvenciát adja ebben a tartományban, a 0x7F beállítás pedig a tartomány legnagyobb frekvenciáját adja.
Az MCU stabil működésének biztosítása érdekében a kalibrációs értéket kis mértékben meg kell változtatni. Ha a frekvencia 2% -nál nagyobb mértékben változik egyik ciklusról a másikra, az kiszámíthatatlan viselkedéshez vezethet. Az OSCCAL változásai nem haladhatják meg a 0x20 értéket minden kalibrálásnál. Biztosítani kell, hogy az órajel frekvenciájának ilyen változása során az MCU a Reset-ben maradjon
6-14. táblázat. Belső RC oszcillátor frekvenciatartomány
OSCCAL érték | Tipikus legalacsonyabb frekvencia a névleges frekvencia tekintetében | Tipikus legmagasabb frekvencia a névleges frekvencia tekintetében |
0x00 | 50% | 100% |
0x3F | 75% | 150% |
0x7F | 100% | 200% |
CLKPR - Órák előskála regisztráció
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x26 | CLKPCE | – | – | – | CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | CLKPR |
Olvasni/Írni | R/W | R | R | R | R/W | R/W | R/W | R/W |
Kezdeti érték 0 0 0 0 Lásd a Bit leírását
7. bit - CLKPCE: Clock Prescaler Change engedélyezése
A CLKPCE bitet az első logikába kell írni, hogy lehetővé váljon a CLKPS bitek megváltoztatása. A CLKPCE bit csak akkor frissül, ha a CLKPR többi bitjét egyidejűleg nullára írják. A CLKPCE-t a hardver törli négy ciklus után az írás vagy a CLKPS bitek írása után. A CLKPCE bit átírása ebben az időtúllépési periódusban nem hosszabbítja meg az időtúllépési periódust, és nem törli a CLKPCE bitet sem.
Bits 6: 4 - Res: Lefoglalt bitek
Ezek a bitek az ATtiny25 / 45/85 tartalék bitek, és mindig nullaként fognak olvasni.
Bit 3: 0 - CLKPS [3: 0]: Óra előmérő kiválasztása 3 - 0 bit
Ezek a bitek határozzák meg az osztási tényezőt a kiválasztott óraforrás és a belső rendszer óra között. Ezek a bitek írhatók futási idővel, hogy az órajel frekvenciáját az alkalmazás követelményeinek megfelelően változtassák. Mivel az osztó elosztja a fő órajel bemenetét az MCU-hoz, osztási tényező alkalmazásakor az összes szinkron periféria sebessége csökken. Az osztási tényezőket 6-15. táblázat.
Az órajel frekvenciájának akaratlan megváltozásának elkerülése érdekében speciális írási eljárást kell követni a CLKPS bitek megváltoztatásához:
Írja az Clock Prescaler Change Enable (CLKPCE) bitet egyre, a CLKPR összes többi bitjét nullára.
Négy cikluson belül írja be a kívánt értéket a CLKPS-be, miközben nullát ír a CLKPCE-re.
A megszakításokat le kell tiltani az elővízmérő beállításainak módosításakor, hogy megbizonyosodjon arról, hogy az írási folyamat nem szakadt meg.
A CKDIV8 biztosíték határozza meg a CLKPS bitek kezdeti értékét. Ha a CKDIV8 nincs programozva, a CLKPS bitek „0000”-ra állnak vissza. Ha a CKDIV8 be van programozva, a CLKPS bitek visszaállnak „0011” értékre, ami az indításkor nyolcas osztási tényezőt ad. Ezt a funkciót akkor kell használni, ha a kiválasztott órajelforrás frekvenciája magasabb, mint a készülék jelenlegi működési feltételek melletti maximális frekvenciája. Vegye figyelembe, hogy a CLKPS bitekbe bármilyen érték írható, függetlenül a CKDIV8 biztosíték beállításától. Az Alkalmazási szoftvernek biztosítania kell, hogy megfelelő osztási tényező legyen
akkor válasszuk, ha a kiválasztott óraforrás frekvenciája magasabb, mint a készülék maximális frekvenciája a jelenlegi üzemi körülmények között. A készüléket a CKDIV8 biztosíték programozásával szállítják.
táblázat 6-15. Clock Prescaler Select
CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | Óraosztási tényező |
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 | Fenntartott |
1 | 0 | 1 | 0 | Fenntartott |
1 | 0 | 1 | 1 | Fenntartott |
1 | 1 | 0 | 0 | Fenntartott |
1 | 1 | 0 | 1 | Fenntartott |
1 | 1 | 1 | 0 | Fenntartott |
1 | 1 | 1 | 1 | Fenntartott |
Megjegyzés: Az előskálázó le van tiltva ATtiny15 kompatibilitási módban, és sem a CLKPR-re írás, sem a CKDIV8 biztosíték programozása nincs hatással a rendszer órájára (ami mindig 1.6 MHz lesz).
Energiagazdálkodás és alvó üzemmódok
A nagy teljesítmény és az iparág vezető kódhatékonysága miatt az AVR mikrovezérlők ideális választás alacsony fogyasztású alkalmazásokhoz. Ezenkívül az alvó üzemmódok lehetővé teszik az alkalmazás számára, hogy kikapcsolja az MCU nem használt moduljait, ezáltal energiát takarítson meg. Az AVR különféle alvási módokat kínál, amelyek lehetővé teszik a felhasználó számára, hogy az energiafogyasztást az alkalmazás igényeihez igazítsa.
Alvó üzemmódok
6-1. Ábra a 23. oldalon bemutatja a különböző órarendszereket és azok eloszlását az ATtiny25 / 45/85-ben. Az ábra hasznos a megfelelő alvási mód kiválasztásában. 7-1. táblázat mutatja a különböző alvási módokat és azok ébredési forrásait.
7-1. táblázat. Aktív óratartományok és ébresztési források a különböző alvó üzemmódokban
Aktív óra domainek | Oszcillátorok | Ébresztő források | ||||||||||
Alvó üzemmód | clkCPU | clkFLASH | clkIO | clkADC | clkPCK | Fő órajel engedélyezve | INT0 és csapváltás | SPM / EEPROM
Kész |
USI Start feltétel |
ADC | Egyéb I/O | Őrkutya Megszakítás |
Tétlen | X | X | X | X | X | X | X | X | X | X | ||
ADC zajcsökkentés | X | X | X(1) | X | X | X | X | |||||
Kikapcsolás | X(1) | X | X |
Megjegyzés: INT0 esetén csak szintmegszakítás.
A három alvási mód bármelyikéhez való belépéshez az MCUCR-ben lévő SE bitet az egyik logikába kell írni, és egy SLEEP utasítást kell végrehajtani. Az MCUCR regiszter SM [1: 0] bitjei kiválasztják, hogy melyik alvó üzemmódot (alapjárat, ADC zajcsökkentés vagy kikapcsolás) aktiválja a SLEEP utasítás. Lát 7-2. táblázat összefoglalás céljából.
Ha engedélyezett megszakítás történik, amikor az MCU alvó üzemmódban van, az MCU felébred. Az MCU ezután az indítási időn kívül négy ciklusra leáll, végrehajtja a megszakítási rutinot, és folytatja a végrehajtást a SLEEP utasítástól. A nyilvántartás tartalma File és az SRAM változatlan, amikor a készülék felébred az alvó állapotból. Ha alvó üzemmódban visszaállítás történik, az MCU felébred, és a Reset Vectorból hajt végre.
Megjegyzés: ha egy szinten kiváltott megszakítást használnak az ébresztéshez, a megváltozott szintet egy ideig fenn kell tartani, hogy felébressze az MCU-t (és hogy az MCU belépjen a megszakítási szolgáltatási rutinba). Lát “Külső megszakítások”, 49. oldal részletekért.
Üresjárati mód
Amikor az SM[1:0] biteket 00-ra írják, a SLEEP utasítás készenléti üzemmódba kapcsolja az MCU-t, leállítva a CPU-t, de lehetővé teszi az analóg komparátor, az ADC, az USI, az időzítő/számláló, a figyelőkutya és a megszakítási rendszer működésének folytatását. ting. Ez az alvó üzemmód alapvetően leállítja a clkCPU-t és a clkFLASH-t, miközben lehetővé teszi a többi óra futását.
Készenléti üzemmódban az MCU felébredhet a külső kiváltott megszakításokból, valamint a belső, például az időzítő túlcsordulásból. Ha nem szükséges az analóg komparátor megszakítása, akkor az analóg komparátor kikapcsolható az ACD bit beállításával “ACSR - Analóg összehasonlító vezérlés és állapotregiszter” oldalszám: 120. Ez készenléti állapotban csökkenti az energiafogyasztást. Ha az ADC engedélyezve van, akkor az átalakítás automatikusan elindul, amikor ebbe az üzemmódba lép.
ADC zajcsökkentési mód
Amikor az SM[1:0] biteket 01-re írják, a SLEEP utasítás az MCU-t ADC zajcsökkentési módba állítja, leállítva a CPU-t, de lehetővé teszi az ADC-t, a külső megszakításokat és a Watchdog működését (ha engedélyezve van). Ez az alvó üzemmód leállítja a clkI/O-t, a clkCPU-t és a clkFLASH-t, miközben lehetővé teszi a többi óra futását.
Ez javítja az ADC zajkörnyezetét, lehetővé téve a nagyobb felbontású méréseket. Ha az ADC engedélyezve van, akkor az átalakítás automatikusan megkezdődik, amikor ebbe a módba lép. Az ADC Conversion Complete megszakításon kívül csak egy külső visszaállítás, egy Watchdog visszaállítás, egy Brown-out visszaállítás, egy SPM / EEPROM kész megszakítás, egy külső szintű megszakítás az INT0-n vagy egy csapváltás megszakítás ébresztheti az MCU-t az ADC zajcsökkentéséből mód.
Kikapcsolási mód
Amikor az SM [1: 0] biteket 10-re írják, a SLEEP utasítás az MCU-t kikapcsolási módba kapcsolja. Ebben az üzemmódban az oszcillátor leáll, míg a külső megszakad, az USI indítási állapotának észlelése és a Watchdog tovább működik (ha engedélyezve van). Csak egy külső alaphelyzetbe állítás, egy őrző-alaphelyzetbe állítás, egy lejárató alaphelyzetbe állítás, az USI indítási feltétel megszakítása, egy külső szintű megszakítás az INT0-n vagy egy csapváltás megszakítása képes felébreszteni az MCU-t. Ez az alvó üzemmód leállítja az összes generált órát, csak az aszinkron modulok működését engedélyezve.
Szoftver BOD letiltása
Ha a BODLEVEL biztosítékok engedélyezik a Brown-out Detector (BOD) funkciót (lásd 20-4. Táblázat a 148. oldalon), a BOD aktívan figyelemmel kíséri az ellátás voltage alvási időszakban. Bizonyos eszközökön energiatakarékosság érhető el a BOD szoftver kikapcsolásával a Power-Down alvó üzemmódban. Az alvó üzemmódban az energiafogyasztás ugyanazon a szinten lesz, mint amikor a BOD -t globálisan letiltják a biztosítékok.
Ha a BOD szoftver le van tiltva, a BOD funkció azonnal kikapcsolódik az alvó módba lépés után. Alvó állapotból való felébredéskor a BOD automatikusan újra bekapcsolódik. Ez biztosítja a biztonságos működést abban az esetben, ha a VCC szint leesik az alvó időszak alatt.
Ha a BOD-t letiltották, az alvó üzemmódból az ébresztési idő megegyezik a RESET-ről való ébredés idejével. A felhasználónak manuálisan kell konfigurálnia az ébresztési időket úgy, hogy a sávrés referenciának legyen ideje elindulni, és a BOD megfelelően működjön, mielőtt az MCU folytatja a kód végrehajtását. Lásd a SUT [1: 0] és a CKSEL [3: 0] biztosítékbiteket a táblázatban “Biztosíték alacsony bájtja”, 149. oldal
A BOD letiltást az MCU Control Register BODS (BOD Sleep) bitje vezérli, lásd „MCUCR - MCU vezérlés Regisztráció ”, 37. oldal. Ennek a bitnek az egyikbe írása kikapcsolja a BOD-t a Power-Down szolgáltatásban, míg a nulla írásakor a BOD aktív marad. Az alapértelmezett beállítás nulla, azaz a BOD aktív.
A BODS bitre írást egy időzített szekvencia és egy engedélyező bit vezérli, lásd „MCUCR - MCU Control Regis- ter ”a 37. oldalon.
Korlátozások
A BOD letiltási funkciót csak a következő eszközökben valósították meg:
ATtiny25, E változat, és újabb
ATtiny45, D változat, és újabb
ATtiny85, C változat és újabb
A verziók megjelölve az eszközcsomagon, és az alábbiak szerint helyezhetők el:
A 8P3 és 8S2 csomagok alsó oldala
A 20M1 csomag felső oldala
Teljesítménycsökkentési nyilvántartás
Az áramcsökkentési nyilvántartás (PRR), lásd “PRR - Teljesítménycsökkentési regisztráció”, 38. oldal, módszert biztosít az energiafogyasztás csökkentésére azáltal, hogy leállítja az órát az egyes perifériák számára. A periféria jelenlegi állapota lefagyott, és az I / O regiszterek nem olvashatók és nem írhatók. A periféria által az óra leállításakor használt erőforrások foglaltak maradnak, ezért a perifériát a legtöbb esetben le kell tiltani az óra leállítása előtt. A modul felébresztése, amely a bit törlésével történik a PRR-ben, a modult ugyanabba az állapotba hozza, mint a leállítás előtt.
A modul kikapcsolása készenléti és aktív üzemmódban is használható a teljes energiafogyasztás jelentős csökkentésére. Az összes többi alvási módban az óra már le van állítva. Lát “I / O modulok tápfeszültsége”, 177. oldal plamples.
Az energiafogyasztás minimalizálása
Számos kérdést kell figyelembe venni, amikor megpróbálja minimalizálni az AVR által vezérelt rendszer energiafogyasztását. Általában az alvási módokat a lehető legnagyobb mértékben kell használni, és az alvó módot úgy kell kiválasztani, hogy a készülék funkciói közül a lehető legkevesebb működjön. Minden szükséges funkciót le kell tiltani. Különösen a következő modulokra lehet különös figyelmet fordítani, amikor a lehető legkisebb energiafogyasztást kívánják elérni.
Analóg-digitális átalakító
Ha engedélyezve van, akkor az ADC minden alvó módban engedélyezve lesz. Az energiatakarékosság érdekében az alvó üzemmódba lépés előtt ki kell kapcsolni az ADC-t. Amikor az ADC ki és újra be van kapcsolva, a következő konverzió egy kiterjesztett konverzió lesz. Hivatkozni “Analóg – digitális átalakító”, 122. oldal az ADC működéséről.
Analóg összehasonlító
Készenléti módba lépéskor az analóg összehasonlítót le kell tiltani, ha nem használja. Amikor belép az ADC zajcsökkentő módba, az analóg összehasonlítót le kell tiltani. A többi alvó üzemmódban az analóg összehasonlító automatikusan le van tiltva. Ha azonban az analóg összehasonlító a belső kötet használatára van beállítvatage Bemenetként az analóg összehasonlítót le kell tiltani minden alvó üzemmódban. Ellenkező esetben az Internal Voltage A referencia engedélyezve lesz, az alvó üzemmódtól függetlenül. Hivatkozni “Analóg összehasonlító”, 119. oldal az Analog Comparator konfigurálásának részleteiről.
Barna színű detektor
Ha az alkalmazásban nincs szükség a barnulás-érzékelőre, akkor ezt a modult ki kell kapcsolni. Ha a BODLEVEL biztosítékok engedélyezik a barnulást érzékelőt, akkor az minden alvó üzemmódban engedélyezett lesz, ezért mindig fogyaszt energiát. A mélyebb alvó üzemmódokban ez jelentősen hozzájárul a teljes áramfogyasztáshoz. Lát „Brown-out Detec- ”című részt a 41. oldalon és “Szoftver BOD letiltása”, 35. oldal a Brown-out detektor konfigurálásának részleteiről.
Belső kötettage Hivatkozás
The Internal Voltage A referencia engedélyezve van, amikor a Brown-out Detection, az analóg összehasonlító vagy az ADC igényli. Ha ezek a modulok le vannak tiltva a fenti szakaszokban leírtak szerint, akkor a belső voltagA referencia le lesz tiltva, és nem fogyaszt energiát. Újbóli bekapcsoláskor a felhasználónak engedélyeznie kell a referencia indítását a kimenet használata előtt. Ha a referencia alvó üzemmódban marad, a kimenet azonnal használható. Hivatkozni „Belső kötettage Hivatkozás ”oldalszám: 42 az indítási idő részleteiről.
Watchdog Timer
Ha a Watchdog időzítőre nincs szükség az alkalmazásban, akkor ezt a modult ki kell kapcsolni. Ha a Watchdog időzítő be van kapcsolva, akkor minden alvási módban engedélyezve lesz, ezért mindig fogyaszt energiát. A mélyebb alvó üzemmódokban ez jelentősen hozzájárul a teljes áramfogyasztáshoz. Hivatkozni “Watchdog Timer”, 42. oldal a Watchdog Timer konfigurálásának részleteiről.
Port Pins
Alvó módba lépéskor az összes port érintkezőjét minimális energiafogyasztásra kell konfigurálni. A legfontosabb dolog ezután annak biztosítása, hogy a tűk ne vezessenek ellenálló terhelést. Alvó üzemmódokban, ahol az I/O óra (clkI/O) és az ADC óra (clkADC) is le van állítva, az eszköz bemeneti pufferei le lesznek tiltva. Ez biztosítja, hogy nem fogyaszt áramot
a bemeneti logika alapján, amikor nincs rá szükség. Bizonyos esetekben a bemeneti logikára van szükség az ébredési körülmények észleléséhez, és
akkor engedélyezve lesz. Lásd a részt “Digitális bemenet engedélyezése és alvó üzemmódok”, 57. oldal részletekért, hogy mely tűk engedélyezettek. Ha a bemeneti puffer engedélyezve van, és a bemeneti jel lebeg, vagy analóg jelszintje közel van a VCC/2-hez, a bemeneti puffer túl sok energiát fog használni.
Analóg bemeneti érintkezők esetén a digitális bemeneti puffert mindig le kell tiltani. A VCC/2-hez közeli analóg jelszint egy bemeneti érintkezőn még aktív módban is jelentős áramerősséget okozhat. A digitális bemeneti pufferek letilthatók a Digital Input Disable Register (DIDR0) bejegyzéssel. Hivatkozni “DIDR0 - Digitális bemenet letiltása 0 regisztráció”, 121. oldal részletekért.
Regisztráció leírása
MCUCR - MCU vezérlő regiszter
Az MCU vezérlő regiszter vezérlőbiteket tartalmaz az energiagazdálkodáshoz.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PRACLI | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Olvasni/Írni | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Kezdeti érték | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
7. bit - BODS: BOD Sleep
A BOD letiltása csak bizonyos eszközökön érhető el. Lát “Korlátozások”, 36. oldal.
A BOD letiltása alvás közben (lásd 7-1. Táblázat a 34. oldalon) a BODS bitet logikusan kell írni. Ezt egy időzített szekvencia és az engedélyező bit, az MCUCR BODSE vezérli. Először a BODS-t és a BODSE-t is egyre kell állítani. Másodszor, négy órajelen belül a BODS-t egyre, a BODSE-t pedig nullára kell állítani. A BODS bit a beállítást követően három órajelen keresztül aktív. Alvási utasítást kell végrehajtani, amíg a BODS aktív, hogy kikapcsolja a BOD-t a tényleges alvási módhoz. A BODS bit három óra ciklus után automatikusan törlődik.
Azokban az eszközökben, ahol a Sleeping BOD még nem került megvalósításra, ez a bit nincs használva, és mindig nullát fog olvasni.
5. bit - SE: Alvás engedélyezése
Az SE bitet logikai XNUMX-be kell írni, hogy az MCU alvó üzemmódba lépjen, amikor a SLEEP utasítás végrehajtódik. Annak elkerülése érdekében, hogy az MCU alvó módba lépjen, hacsak nem a programozó célja, javasoljuk, hogy a Sleep Enable (SE) bitet közvetlenül a SLEEP utasítás végrehajtása előtt írjuk egybe, és ébredés után azonnal töröljük.
4. bit: 3 - SM [1: 0]: Alvó üzemmód Válassza ki az 1. és a 0. bitet
Ezek a bitek a három rendelkezésre álló alvási mód közül választhatnak, amint az látható 7-2. táblázat.
7-2. táblázat. Alvó üzemmód kiválasztása
SM1 | SM0 | Alvó üzemmód |
0 | 0 | Tétlen |
0 | 1 | ADC zajcsökkentés |
1 | 0 | Kikapcsolás |
1 | 1 | Fenntartott |
2. bit - BODSE: BOD alvás engedélyezése
A BOD letiltása csak bizonyos eszközökön érhető el. Lát “Korlátozások”, 36. oldal.
A BODSE bit lehetővé teszi a BODS vezérlőbit beállítását, amint azt a BODS bit leírásában bemutatjuk. A BOD letiltást egy időzített szekvencia vezérli.
Ez a bit nincs kihasználva azokban az eszközökben, ahol a szoftveres BOD letiltást még nem hajtották végre, és ezekben az eszközökben nulla lesz.
PRR - Teljesítménycsökkentési nyilvántartás
Az áramcsökkentési regisztráció módszert kínál az energiafogyasztás csökkentésére azáltal, hogy lehetővé teszi a perifériás órajelek letiltását.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x20 | – | – | – | – | PRTIM1 | PRTIM0 | PRUSI | PRADC | PRR |
Olvasni/Írni | R | R | R | R | R/W | R/W | R/W | R/W | |
Kezdeti érték | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bits 7: 4 - Res: Lefoglalt bitek
Ezek a bitek az ATtiny25 / 45/85 tartalék bitek, és mindig nullaként fognak olvasni.
3. bit - PRTIM1: Teljesítménycsökkentő időzítő / számláló1
Ha logikát ír erre a bitre, akkor leállítja a Timer / Counter1 modult. Ha az Időzítő / Számláló1 engedélyezve van, a művelet folytatódik, mint a leállítás előtt.
2. bit - PRTIM0: Teljesítménycsökkentő időzítő / számláló0
Ha logikát ír erre a bitre, akkor leállítja a Timer / Counter0 modult. Ha az Időzítő / Számláló0 engedélyezve van, a művelet folytatódik, mint a leállítás előtt.
1. bit - PRUSI: Teljesítménycsökkentés USI
Ha logikát ír erre a bitre, akkor leállítja az USI-t azáltal, hogy megállítja az órát a modul felé. Az USI újbóli felébresztésekor az USI-t újra kell inicializálni a megfelelő működés biztosítása érdekében.
0. bit - PRADC: Teljesítménycsökkentő ADC
Egy logikai írás ehhez a bithez leállítja az ADC-t. Az ADC-t le kell állítani a leállítás előtt. Vegye figyelembe, hogy az ADC órát az analóg komparátor egyes részei is használják, ami azt jelenti, hogy az analóg komparátor nem használható, ha ez a bit magas.
Rendszer vezérlés és visszaállítás
Az AVR visszaállítása
A visszaállítás során az összes I / O regiszter a kezdeti értékekre van állítva, és a program a Vezérlő visszaállításával kezdi meg a végrehajtást. A Reset Vector-nál elhelyezett utasításnak RJMP - Relative Jump - utasításnak kell lennie a reset kezelési rutinhoz. Ha a program soha nem engedélyezi a megszakítás forrását, akkor a megszakító vektorokat nem használják, és ezekre a helyekre rendszeres programkód helyezhető el. A kapcsolási rajz 8-1. ábra a visszaállítási logikát mutatja. A visszaállító áramkör elektromos paramétereit a “Rendszer- és visszaállítási jellemzők”, 165. oldal.
Ábra 8-1 Reset Logic
Az AVR I / O portjai azonnal visszaállnak a kezdeti állapotba, amikor a visszaállító forrás aktívvá válik. Ehhez nincs szükség egyetlen óraforrás futtatására.
Miután az összes visszaállítási forrás inaktívvá vált, egy késleltetési számlálót hívnak meg, amely megnyújtja a belső visszaállítást. Ez lehetővé teszi, hogy az energia stabil szintet érjen el a normál működés megkezdése előtt. A késleltetési számláló időkorlátját a felhasználó határozza meg a SUT és a CKSEL biztosítékokon keresztül. A késleltetési periódus különféle választásait a "Óra Források ”, 25. oldal.
Források visszaállítása
Az ATtiny25 / 45/85 négy visszaállítási forrással rendelkezik:
Bekapcsolás visszaállítása. Az MCU alaphelyzetbe áll, amikor a tápfeszültségtage a bekapcsolási visszaállítási küszöb (VPOT) alatt van.
Külső visszaállítás. Az MCU alaphelyzetbe áll, ha alacsony szint van jelen a RESET csapon a minimális impulzus hossznál hosszabb ideig.
Watchdog Reset. Az MCU alaphelyzetbe áll, amikor a Watchdog időzítő lejár, és a Watchdog engedélyezve van.
Barna-ki visszaállítás. Az MCU alaphelyzetbe áll, amikor a tápfeszültségtage A VCC a Brown-out Reset threshold (VBOT) alatt van, és a Brown-out Detector engedélyezve van.
Bekapcsolási visszaállítás
A bekapcsolási visszaállítás (POR) impulzust egy On-chip érzékelő áramkör generálja. Az észlelési szintet a „Rendszer- tem és a karakterek visszaállítása ”című részt a 165. oldalon. A POR aktiválódik, ha a VCC az észlelési szint alatt van. A POR áramkör használható a Start-up Reset kiváltására, valamint a tápfeszültség meghibásodásának észleléséretage.
A Power-on Reset (POR) áramkör biztosítja, hogy az eszköz visszaálljon a bekapcsoláskor. A bekapcsolási visszaállítási küszöb elérése voltage meghívja a késleltetési számlálót, amely meghatározza, hogy az eszköz mennyi ideig marad RESET állapotban a VCC emelkedése után. A RESET jel késedelem nélkül ismét aktiválódik, amikor a VCC az észlelési szint alá csökken.
8-2. ábra. MCU indítás, RESET VCC-hez kötve
BELSŐ RESET
8-3. ábra. MCU indítás, RESET külsőleg kiterjesztve
Külső visszaállítás
Külső nullázást a RESET tű alacsony szintje generál, ha engedélyezve van. A minimális impulzusszélességnél hosszabb impulzusok visszaállítása (lásd “Rendszer- és visszaállítási jellemzők”, 165. oldal) visszaállítást generál, még akkor is, ha az óra nem fut. A rövidebb impulzusok nem garantálják a visszaállítást. Amikor az alkalmazott jel eléri a Reset Threshold Voltage – VRST – a pozitív élén a késleltetési számláló elindítja az MCU-t az időtúllépési idő lejárta után.
8-4. ábra. Külső visszaállítás működés közben
Barna színű detektálás
Az ATtiny25/45/85 egy chipen belüli Brown-out Detection (BOD) áramkörrel rendelkezik a VCC-szint figyelésére működés közben, összehasonlítva azt egy rögzített triggerszinttel. A BOD kioldási szintje a BODLEVEL biztosítékokkal választható ki. A trigger szint hiszterézissel rendelkezik, hogy biztosítsa a tüskementes Brown-out észlelést. Az észlelési szinten a hiszterézist úgy kell értelmezni, hogy VBOT+ = VBOT + VHYST/2 és VBOT- = VBOT – VHYST/2.
Ha a BOD engedélyezve van, és a VCC a triggerszint alá csökken (VBOT-in 8-5. ábra), a Brown-out Reset azonnal aktiválódik. Amikor a VCC a triggerszint fölé emelkedik (VBOT+ in 8-5. ábra), a késleltetési számláló elindítja az MCU-t, miután a tTOUT időtúllépési időszak lejárt.
A BOD áramkör csak akkor érzékeli a VCC csökkenését, ha a voltage tovább marad a trigger szint alatt, mint a megadott tBOD “Rendszer- és visszaállítási jellemzők”, 165. oldal.
Watchdog Reset
Amikor a Watchdog időtúllépést tesz lehetővé, egy rövid, egy CK ciklus időtartamú reset impulzust generál. Ennek az impulzusnak a lefutó szélén a késleltetési időzítő elkezdi számolni a tTOUT időtúllépési periódust. Hivatkozni “Watchdog Timer”, 42. oldal a Watchdog Timer működéséről.
Voltage Referencia Jelzések és indítási idő engedélyezése
A kötettagA hivatkozásnak van egy indítási ideje, amely befolyásolhatja annak használatát. Az indítási idő megadva “Rendszer- és visszaállítási jellemzők”, 165. oldal. Az energiatakarékosság érdekében a referencia nincs mindig bekapcsolva. A referencia a következő helyzetekben áll fenn:
Ha a BOD engedélyezve van (a BODLEVEL [2: 0] biztosíték bitek programozásával).
Amikor a sávszélesség-referencia csatlakoztatva van az analóg komparátorhoz (az ACBG bit ACSR-be állításával).
Amikor az ADC engedélyezve van.
Tehát, ha a BOD nincs engedélyezve, az ACBG bit beállítása vagy az ADC engedélyezése után a felhasználónak mindig engedélyeznie kell a referencia indítását, mielőtt az Analog Comparator vagy ADC kimenetét felhasználnák. Az áramfogyasztás csökkentése kikapcsolási módban a felhasználó elkerülheti a fenti három feltételt annak biztosítása érdekében, hogy a referencia kikapcsoljon, mielőtt belépne a kikapcsolási módba.
Watchdog Timer
A Watchdog időzítőt egy On-chip oszcillátor vezérli, amely 128 kHz-en működik. A Watchdog Timer prescaler vezérlésével a Watchdog Reset intervallum a (z) ábra szerint állítható be 8-3. Táblázat a 46. oldalon. A WDR - Watchdog Reset - utasítás alaphelyzetbe állítja a Watchdog Timer-t. A Watchdog időzítő akkor is visszaáll, ha le van tiltva, és amikor chip visszaállítás történik. Tíz különböző órajel-periódus választható ki a visszaállítási időszak meghatározásához. Ha a visszaállítási időszak újabb Watchdog Reset nélkül jár le, az ATtiny25 / 45/85 visszaállítja és végrehajtja a Visszaállítás vektorból. A Watchdog Reset időzítésével kapcsolatos részletekért lásd: 8-3. Táblázat a 46. oldalon.
A Watchdog időzítő úgy is konfigurálható, hogy visszaállítás helyett megszakítást generáljon. Ez nagyon hasznos lehet, ha a Watchdogot kikapcsolásról ébresztik.
A Watchdog akaratlan letiltásának vagy az időtúllépés szándékos megváltoztatásának megelőzése érdekében a WDTON biztosíték két különböző biztonsági szintet választ ki, amint az 8-1. táblázat Lásd „Időzített szekvenciák a konvertáláshoz a Watchdog Timer ábrázolása ”című részt a 43. oldalon részletekért.
8-1. táblázat. A WDT konfiguráció a WDTON biztosítékbeállításainak funkciójaként
WDTON | Biztonsági szint | WDT kezdeti állapot | A WDT letiltása | Az időkorlát megváltoztatása |
Nincs programozva | 1 | Letiltva | Időzített sorrend | Nincsenek korlátozások |
Programozott | 2 | Engedélyezve | Mindig engedélyezve | Időzített sorrend |
8-7. Watchdog Timer
Időzített szekvenciák a Watchdog időzítő konfigurációjának megváltoztatásához
A konfiguráció megváltoztatásának sorrendje kissé eltér a két biztonsági szint között. Minden szintre külön eljárásokat írnak le.
1. biztonsági szint: Ebben a módban a Watchdog Timer kezdetben le van tiltva, de engedélyezhető a WDE bit korlátozás nélküli beírásával. Időzített sorozatra van szükség az engedélyezett Watchdog időzítő letiltásakor. Az engedélyezett Watchdog Timer letiltásához a következő eljárást kell követni:
Ugyanebben a műveletben írjon egy logikát a WDCE és a WDE könyvtárba. A WDE bit logikai értékét a WDE bit előző értékétől függetlenül kell írni.
A következő négy órajelen belül, ugyanabban a műveletben írja be a WDE és WDP biteket a kívánt módon, de a WDCE bitet törölje.
2. biztonsági szint: Ebben a módban a Watchdog Timer mindig engedélyezve van, és a WDE bit mindig egyként fog olvasni. Időzített sorozatra van szükség a Watchdog Time-out periódus megváltoztatásakor. A Watchdog Time-out módosításához a következő eljárást kell követni:
Ugyanebben a műveletben írjon egy logikusat a WDCE és a WDE fájlokba. Annak ellenére, hogy a WDE mindig be van állítva, az időzített sorrend megkezdéséhez a WDE-t egybe kell írni.
A következő négy órajelen belül, ugyanabban a műveletben írja be a WDP biteket a kívánt módon, de törölje a WDCE bitet. A WDE bitre írt érték lényegtelen.
Kód plample
A következő kód plampA le egy szerelést és egy C funkciót mutat a WDT kikapcsolásához. Az example feltételezi, hogy a megszakításokat ellenőrzik (pl. a megszakítások globális letiltásával), így ezen funkciók végrehajtása közben nem történik megszakítás.
Összeszerelési kód Plample(1) |
WDT_ki:
wdr ; Tiszta WDRF az MCUSR-ben ldi r16, (0< ki MCUSR, r16 ; Írjon logikusat a WDCE-re és a WDE-re ; Tartsa meg a régi vízkőmérő beállításait, hogy megakadályozza a Watchdog akaratlan visszaállítását r16-ban WDTCR ori r16, (1< ki WDTCR, r16 ; Kapcsolja ki a WDT-t ldi r16, (0< ki WDTCR, r16 ret |
C Kód Példaample(1) |
érvénytelen WDT_off(void)
{ _WDR (); /* WDRF törlése az MCUSR-ben */ MCUSR = 0x00 /* Logikai egy írása a WDCE-be és a WDE-be */ WDTCR |= (1< / * Kapcsolja ki a WDT-t * / WDTCR = 0x00; } |
Megjegyzés: 1. Lásd „Kód plamples ”a 6. oldalon.
Regisztráció leírása
MCUSR - MCU állapotregiszter
Az MCU állapotregiszter információt nyújt arról, hogy melyik visszaállítási forrás okozta az MCU visszaállítását.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x34 | – | – | – | – | WDRF | BORF | EXTRF | PORF | MCUSR |
Olvasni/Írni | R | R | R | R | R/W | R/W | R/W | R/W |
Kezdeti érték 0 0 0 0 Lásd a Bit leírását
Bits 7: 4 - Res: Lefoglalt bitek
Ezek a bitek az ATtiny25 / 45/85 tartalék bitek, és mindig nullaként fognak olvasni.
3. bit - WDRF: Watchdog Reset Flag
Ez a bit akkor áll be, ha a Watchdog Reset történik. A bitet egy bekapcsolási visszaállítással állítja vissza, vagy logikai nullát ír a zászlóra.
2. bit - BORF: Brown-out Reset Flag
Ez a bit akkor van beállítva, ha egy Brown-out Reset történik. A bitet egy bekapcsolási visszaállítással állítja vissza, vagy logikai nullát ír a zászlóra.
1. bit - EXTRF: Külső alaphelyzetbe állítás
Ez a bit akkor állítható be, ha külső visszaállítás történik. A bitet egy bekapcsolási visszaállítással állítja vissza, vagy logikai nullát ír a zászlóra.
0. bit - PORF: Bekapcsolási visszaállítási jelző
Ez a bit akkor van beállítva, ha bekapcsolási visszaállítás történik. A bitet csak úgy állíthatja vissza, hogy logikai nullát ír a zászlóba.
A Reset Flags használatával a visszaállítási feltétel azonosításához a felhasználónak el kell olvasnia, majd a lehető legkorábban vissza kell állítania az MCUSR-t. Ha a regisztráció törlésre kerül, mielőtt újabb nullázás történik, a Reset Flags vizsgálatával megtalálható a reset forrása.
WDTCR - Watchdog időzítő vezérlő regiszter
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x21 | WDIF | WDIE | WDP3 | WDCE | WDE | WDP2 | WDP1 | WDP0 | WDTCR |
Olvasni/Írni | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Kezdeti érték | 0 | 0 | 0 | 0 | X | 0 | 0 | 0 |
7. bit - WDIF: Watchdog Timeout Interrupt Flag
Ez a bit akkor van beállítva, amikor a Watchdog Timerben időkorlát következik be, és a Watchdog Timer konfigurálva van a megszakításhoz. A WDIF-et hardver törli a megfelelő megszakításkezelő vektor végrehajtásakor. Alternatív megoldásként a WDIF törlődik egy logikai írásával a zászlóra. Ha az I-bit a SREG-ben és a WDIE-ben be van állítva, akkor a Watchdog Time-out Interrupt végrehajtásra kerül.
6. bit - WDIE: A Watchdog Timeout Interrupt engedélyezése
Amikor ezt a bitet egyre írják, a WDE törlődik, és az állapotregiszter I-bitje be van állítva, a Watchdog Time-out Interrupt engedélyezve van. Ebben az üzemmódban a megfelelő megszakítás végrehajtásra kerül a visszaállítás helyett, ha a Watchdog Timerben időtúllépés következik be.
Ha a WDE be van állítva, akkor a hardver automatikusan törli a WDIE-t, amikor időtúllépés következik be. Ez hasznos a Watchdog Reset biztonságának megőrzéséhez a megszakítás használata közben. A WDIE bit törlése után a következő időkorlát visszaállítást generál. A Watchdog Reset elkerülése érdekében minden megszakítás után be kell állítani a WDIE-t.
8-2. táblázat. Watchdog időzítő konfigurációja
WDE | WDIE | Őrző időzítő állapota | Akció az időkorláton |
0 | 0 | Megállt | Egyik sem |
0 | 1 | Futás | Megszakítás |
1 | 0 | Futás | Reset |
1 | 1 | Futás | Megszakítás |
4. bit - WDCE: Watchdog Change engedélyezése
Ezt a bitet akkor kell beállítani, amikor a WDE bitet logikai nullára írják. Ellenkező esetben a Watchdog nem lesz letiltva. Miután írta az egyiket, a hardver négy óraciklus után törli ezt a bitet. A Watchdog letiltási eljárását a WDE bit leírásában találja meg. Ezt a bitet be kell állítani az előmérő bitjeinek megváltoztatásakor is. Lát - Időzített szekvenciák a Watchdog időzítő konfigurációjának megváltoztatásához ”, 43. oldal.
3. bit - WDE: Watchdog engedélyezése
Amikor a WDE-t logikai értékre írják, a Watchdog Timer engedélyezve van, és ha a WDE logikai nullára van írva, akkor a Watchdog Timer funkció le van tiltva. A WDE csak akkor törölhető, ha a WDCE bit első logikai szinttel rendelkezik. Az engedélyezett Watchdog időzítő letiltásához a következő eljárást kell betartani:
Ugyanebben a műveletben írjon egy logikát a WDCE és a WDE könyvtárba. Egy logikát be kell írni a WDE-be, még akkor is, ha a tiltási művelet megkezdése előtt egyre van állítva.
A következő négy órajelen belül írjon egy 0 logikát a WDE-be. Ez letiltja a Watchdogot.
A 2. biztonsági szintnél még a fent leírt algoritmussal sem lehet kikapcsolni a Watchdog Timer funkciót. Lát “Időzített sorrendek a Watchdog időzítő konfigurációjának megváltoztatásához”, 43. oldal.
Az 1. biztonsági szinten a WDE-t felülírja a WDRF az MCUSR-ben. Lát “MCUSR - MCU állapotregiszter” 44. oldal a WDRF leírására. Ez azt jelenti, hogy a WDE mindig be van állítva, amikor a WDRF be van állítva. A WDE törléséhez törölni kell a WDRF-et, mielőtt a fent leírt eljárással letiltanánk a Watchdogot. Ez a szolgáltatás biztosítja a többszörös alaphelyzetbe állítást hibát okozó körülmények között, és a biztonságos elindítást a hiba után.
Megjegyzés: Ha a watchdog időzítőt nem kívánja használni az alkalmazásban, fontos, hogy az eszköz inicializálása során végigmenjen a watchdog letiltási eljáráson. Ha a Watchdog véletlenül engedélyezve van, plamplefutott mutató vagy barnulás miatt az eszköz alaphelyzetbe áll, ami viszont egy új figyelő kutya visszaállításához vezet. Ennek elkerülése érdekében az alkalmazásszoftvernek mindig törölnie kell a WDRF jelzőt és a WDE vezérlőbitet az inicializálási rutinban.
5. bit, 2: 0 - WDP [3: 0]: Watchdog Timer Prescaler 3, 2, 1 és 0
A WDP [3: 0] bitek meghatározzák a Watchdog Timer előskálázását, amikor a Watchdog Timer engedélyezve van. A különböző előskálázási értékeket és a hozzájuk tartozó Időtúllépés periódusokat a 8-3. táblázat.
8-3. táblázat. Watchdog Timer Prescale Select
WDP3 | WDP2 | WDP1 | WDP0 | A WDT oszcillátorciklusok száma | Tipikus időtúllépés VCC-nél = 5.0 V |
0 | 0 | 0 | 0 | 2K (2048) ciklus | 16 ms |
0 | 0 | 0 | 1 | 4K (4096) ciklus | 32 ms |
0 | 0 | 1 | 0 | 8K (8192) ciklus | 64 ms |
0 | 0 | 1 | 1 | 16K (16384) ciklus | 0.125 s |
0 | 1 | 0 | 0 | 32K (32764) ciklus | 0.25 s |
0 | 1 | 0 | 1 | 64K (65536) ciklus | 0.5 s |
0 | 1 | 1 | 0 | 128K (131072) ciklus | 1.0 s |
0 | 1 | 1 | 1 | 256K (262144) ciklus | 2.0 s |
1 | 0 | 0 | 0 | 512K (524288) ciklus | 4.0 s |
1 | 0 | 0 | 1 | 1024K (1048576) ciklus | 8.0 s |
8-3. táblázat. Watchdog Timer Prescale Select (Folytatás)
WDP3 | WDP2 | WDP1 | WDP0 | A WDT oszcillátorciklusok száma | Tipikus időtúllépés VCC-nél = 5.0 V |
1 | 0 | 1 | 0 | Fenntartott(1) | |
1 | 0 | 1 | 1 | ||
1 | 1 | 0 | 0 | ||
1 | 1 | 0 | 1 | ||
1 | 1 | 1 | 0 | ||
1 | 1 | 1 | 1 |
Megjegyzés: 1. Ha kiválasztja, a 0b1010 alatti érvényes beállítások valamelyike kerül felhasználásra.
megszakítások
Ez a szakasz ismerteti a megszakítás kezelésének sajátosságait az ATtiny25 / 45/85 dokumentumban leírtak szerint. Az AVR megszakítás kezelésének általános magyarázatát lásd: “Visszaállítás és megszakítás”, 12. oldal.
Megszakító vektorok az ATtiny25 / 45/85-ben
Az ATtiny25 / 45/85 megszakító vektorait a 9-1. táblázatalatt.
9-1. táblázat. Vektorok visszaállítása és megszakítása
Vektor sz. | Program címe | Forrás | Megszakítás meghatározása |
1 | 0x0000 | RESET | Külső tüske, bekapcsolási visszaállítás, barnulási visszaállítás, őrző visszaállítása |
2 | 0x0001 | INT0 | Külső megszakítási kérelem 0 |
3 | 0x0002 | PCINT0 | Tűcsere megszakítási kérelem 0 |
4 | 0x0003 | TIMER1_COMPA | Időzítő / számláló1 Hasonlítsa össze az A mérkőzést |
5 | 0x0004 | TIMER1_OVF | Időzítő / számláló1 túlcsordulás |
6 | 0x0005 | TIMER0_OVF | Időzítő / számláló0 túlcsordulás |
7 | 0x0006 | EE_RDY | EEPROM készen áll |
8 | 0x0007 | ANA_COMP | Analóg összehasonlító |
9 | 0x0008 | ADC | ADC átalakítás befejeződött |
10 | 0x0009 | TIMER1_COMPB | Időzítő / számláló1 Hasonlítsa össze a B mérkőzést |
11 | 0x000A | TIMER0_COMPA | Időzítő / számláló0 Hasonlítsa össze az A mérkőzést |
12 | 0x000B | TIMER0_COMPB | Időzítő / számláló0 Hasonlítsa össze a B mérkőzést |
13 | 0x000C | WDT | Őrkutya időkorlátja |
14 | 0x000D | USI_START | USI START |
15 | 0x000E | USI_OVF | USI túlcsordulás |
Ha a program soha nem engedélyezi a megszakítási forrást, akkor a megszakító vektorokat nem használják, és ezekre a helyekre rendszeres programkód helyezhető el.
Az ATtiny25/45/85 megszakítási vektorcímek tipikus és általános beállításait az example lent.
Összeszerelési kód Plample | ||
.org 0x0000 | ; Állítsa be a következő címét | nyilatkozat |
rjmp RESET | ; Cím 0x0000 | |
rjmp INT0_ISR | ; Cím 0x0001 | |
rjmp PCINT0_ISR | ; Cím 0x0002 | |
rjmp TIM1_COMPA_ISR | ; Cím 0x0003 | |
rjmp TIM1_OVF_ISR | ; Cím 0x0004 | |
rjmp TIM0_OVF_ISR | ; Cím 0x0005 | |
rjmp EE_RDY_ISR | ; Cím 0x0006 | |
rjmp ANA_COMP_ISR | ; Cím 0x0007 | |
rjmp ADC_ISR | ; Cím 0x0008 | |
rjmp TIM1_COMPB_ISR | ; Cím 0x0009 | |
rjmp TIM0_COMPA_ISR | ; Cím: 0x000A | |
rjmp TIM0_COMPB_ISR | ; Cím: 0x000B | |
rjmp WDT_ISR | ; Cím: 0x000C | |
rjmp USI_START_ISR | ; Cím: 0x000D | |
rjmp USI_OVF_ISR | ; Cím: 0x000E | |
VISSZAÁLLÍTÁS: | ; Fő program kezdete | |
; Cím: 0x000F | ||
… |
Megjegyzés: Lásd „Kód plamples ”a 6. oldalon.
Külső megszakítások
A külső megszakításokat az INT0 tű vagy bármelyik PCINT [5: 0] tű váltja ki. Vegye figyelembe, hogy ha engedélyezve van, akkor a megszakítások akkor is kiváltanak, ha az INT0 vagy a PCINT [5: 0] csapok kimenetként vannak konfigurálva. Ez a szolgáltatás lehetővé teszi a szoftver megszakításának generálását. A csapváltás megszakítja a PCI-t, ha bármelyik engedélyezett PCINT [5: 0] tüske vált. A PCMSK regiszter vezérlése, mely csapok járulnak hozzá a csapváltás megszakításához. A PCINT [5: 0] gombcsere-megszakításait aszinkron módon észlelik. Ez azt jelenti, hogy ezek a megszakítások felhasználhatók az alkatrész ébresztésére a készenléti üzemmódtól eltérő alvási módokból is.
Az INT0 megszakításokat eső vagy emelkedő él vagy alacsony szint váltja ki. Ez úgy van beállítva, ahogyan azt az MCU Control Register - MCUCR specifikációja jelzi. Ha az INT0 megszakítás engedélyezve van és szintkihúzásként van konfigurálva, a megszakítás addig aktiválódik, amíg a csapot alacsonyan tartják. Megjegyezzük, hogy az INT0 eső vagy emelkedő él megszakításainak felismerése I / O óra jelenlétét igényli, amelyet a „Órarendszerek és azok terjesztése” be 23. oldal.
Alacsony szintű megszakítás
Az INT0 alacsony szintű megszakítását aszinkron módon érzékeli. Ez azt jelenti, hogy ez a megszakítás használható az alkatrész ébresztésére a készenléti üzemmódtól eltérő alvási módokból is. Az I / O óra a készenléti üzemmód kivételével minden alvó üzemmódban leáll.
Ne feledje, hogy ha egy szinten kiváltott megszakítást használnak a kikapcsolásból való felébresztéshez, akkor a szükséges szintet elég hosszú ideig fenn kell tartani ahhoz, hogy az MCU befejezze az ébresztést a szintmegszakítás elindításához. Ha a szint az indítási idő lejárta előtt eltűnik, az MCU továbbra is felébred, de nem generál megszakítást. Az indítási időt a SUT és a CKSEL biztosítékok határozzák meg a leírás szerint “Rendszeróra és óra opciók”, 23. oldal.
Ha a megszakítási tű alacsony szintjét eltávolítják, mielőtt az eszköz felébredne, akkor a program végrehajtása nem kerül átirányításra a megszakítási szolgáltatás rutinjára, hanem a SLEEP parancsot követő utasításból folytatódik.
Tűcsere megszakítás időzítése
Egy voltampA csapváltás megszakításának időzítése itt látható 9-1. ábra.
Regisztráció leírása
MCUCR - MCU vezérlő regiszter
A külső A megszakításvezérlő regiszter vezérlőbiteket tartalmaz a megszakításérzékelés vezérléséhez.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PRACLI | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Olvasni/Írni | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Kezdeti érték | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 1: 0 - ISC0 [1: 0]: Érzékelés megszakítás 0 bit 1 és 0 bit
A 0 külső megszakítást a külső INT0 tű aktiválja, ha a SREG I jelző és a megfelelő megszakítási maszk be van állítva. A külső INT0 érintkező szintjét és éleit, amelyek aktiválják a megszakítást, a 9-2. táblázat. Az INT0 tüske értéke sampvezetett az élek észlelése előtt. Ha az él vagy kapcsoló megszakítást választja, az egy óra időtartamnál hosszabb ideig tartó impulzusok megszakítást generálnak. A rövidebb impulzusok nem garantálják a megszakítást. Ha az alacsony szintű megszakítást választja, az alacsony szintet meg kell tartani, amíg az éppen végrehajtó utasítás befejeződik, hogy megszakítást generáljon.
9-2. táblázat. Megszakítás 0 Sense Control
ISC01 | ISC00 | Leírás |
0 | 0 | Az INT0 alacsony szintje megszakítási kérést generál. |
0 | 1 | Az INT0 bármely logikai változása megszakítási kérelmet generál. |
1 | 0 | Az INT0 csökkenő széle megszakítási kérelmet generál. |
1 | 1 | Az INT0 emelkedő széle megszakítási kérést generál. |
GIMSK - Általános megszakító maszk regiszter
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3B | – | INT0 | PCIE | – | – | – | – | – | GIMSK |
Olvasni/Írni | R | R/W | R/W | R | R | R | R | R | |
Kezdeti érték | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
7. bit, 4: 0 - Res: Foglalt bitek
Ezek a bitek az ATtiny25 / 45/85 tartalék bitek, és mindig nullaként fognak olvasni.
6. bit - INT0: Külső megszakítási kérelem 0 engedélyezve
Ha az INT0 bit (egy) és az I-bit az állapotregiszterben (SREG) be van állítva (egy), akkor a külső tű megszakítás engedélyezve van. Az Interrupt Sense Control0 bitek 1/0 (ISC01 és ISC00) az MCU vezérlőregiszterben (MCUCR) meghatározzák, hogy a külső megszakítás aktiválódik-e az INT0 tű emelkedő és / vagy leeső élénél, vagy érzékelt-e. A csapon végzett tevékenység akkor is megszakítási kérést okoz, ha az INT0 kimenetként van konfigurálva. A 0-os külső megszakítási kérelem megfelelő megszakítását az INT0 megszakítási vektor hajtja végre.
5. bit - PCIE: Tűcsere megszakítás engedélyezése
Ha a PCIE bit be van állítva (egy) és az I-bit az állapotregiszterben (SREG) be van állítva (egy), akkor a pin-váltás megszakítása engedélyezve van. Bármelyik engedélyezett PCINT [5: 0] tű megváltoztatása megszakítást okoz. A Pin Change Interrupt Request megfelelő megszakítását a PCI Interrupt Vector hajtja végre. A PCINT [5: 0] csapokat a PCMSK0 regiszter külön-külön engedélyezi.
GIFR - General Interrupt Flag Register
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3A | – | INTF0 | PCIF | – | – | – | – | – | GIFR |
Olvasni/Írni | R | R/W | R/W | R | R | R | R | R | |
Kezdeti érték | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
7. bit, 4: 0 - Res: Foglalt bitek
Ezek a bitek az ATtiny25 / 45/85 tartalék bitek, és mindig nullaként fognak olvasni.
6. bit - INTF0: Külső megszakítási jelző 0
Amikor egy él vagy logikai változás az INT0 tűn megszakítási kérést vált ki, az INTF0 beállítva lesz (egy). Ha az I-bit az SREG-ben és az INT0-bit a GIMSK-ban be van állítva (egy), az MCU a megfelelő megszakítási vektorra ugrik. A megszakítás rutin végrehajtásakor a zászló törlődik. Alternatív megoldásként a zászló kitörölhető egy logikai írással. Ez a jelölés mindig törlődik, ha az INT0 szintmegszakításként van konfigurálva.
5. bit - PCIF: Pin Change Interrupt Flag
Amikor bármelyik PCINT [5: 0] tű logikai változása megszakítási kérést vált ki, a PCIF beállítva lesz (egy). Ha az I-bit az SREG-ben és a PCIE-bit a GIMSK-ban be van állítva (egy), akkor az MCU a megfelelő megszakítási vektorra ugrik. A megszakítás rutin végrehajtásakor a zászló törlődik. Alternatív megoldásként a zászló kitörölhető egy logikai írással.
PCMSK - Pin Change Mask Register
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x15 | – | – | PCINT5 | PCINT4 | PCINT3 | PCINT2 | PCINT1 | PCINT0 | PCMSK |
Olvasni/Írni | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Kezdeti érték | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bits 7: 6 - Res: Lefoglalt bitek
Ezek a bitek az ATtiny25 / 45/85 tartalék bitek, és mindig nullaként fognak olvasni.
Bits 5: 0 - PCINT [5: 0]: Tűcsere engedélyezése maszk 5: 0
Mindegyik PCINT [5: 0] bit kiválasztja, hogy a megfelelő I / O tűnél engedélyezve van-e a csapváltás megszakítása. Ha a PCINT [5: 0] és a PCIE bit a GIMSK-ban be van állítva, akkor a megfelelő I / O tűn engedélyezve van a csapváltás megszakítása. Ha a PCINT [5: 0] törlődik, akkor a megfelelő I / O tüske csapváltás megszakítása le van tiltva.
I/O portok
Bevezetés
Minden AVR port valódi Read-Modify-Write funkcióval rendelkezik, ha általános digitális I/O portként használják. Ez azt jelenti, hogy az egyik portcsap iránya megváltoztatható anélkül, hogy véletlenül megváltoztatná bármely másik csap irányát az SBI és a CBI utasításokkal. Ugyanez vonatkozik a hajtásérték megváltoztatására (ha kimenetként van konfigurálva) vagy a felhúzó ellenállások engedélyezésére/letiltására (ha bemenetként van konfigurálva). Mindegyik kimeneti puffer szimmetrikus hajtásjellemzőkkel rendelkezik, magas süllyesztési és forrásképességgel. A tüskés meghajtó elég erős ahhoz, hogy közvetlenül vezesse a LED kijelzőket. Minden portcsap egyedileg választható felhúzó ellenállással rendelkezik, tápfeszültséggeltage invariáns ellenállás. Minden I/O érintkezőnek van védődiódája mind a VCC-hez, mind a földhöz, amint az az ábrán látható 10-1. ábra. Lásd “Elektromos jellemzők”, 161. oldal a paraméterek teljes listájához.
10-1. ábra. I/O pin egyenértékű séma
Ebben a szakaszban minden regiszter és bithivatkozás általános formában van írva. A kisbetű „x” a port számozási betűjét, az „n” pedig a bit számát jelenti. Ha azonban a regisztert vagy a bitdefiníciókat egy programban használja, akkor a pontos formát kell használni. Plample, PORTB3 a sz. 3 a B portban, itt általában PORTxn néven dokumentálva. A fizikai I/O regiszterek és bithelyek fel vannak sorolva „Leírás regisztrálása” be 64. oldal.
Három I / O memóriacím-hely van kiosztva minden porthoz, egy-egy az adatregiszterhez - PORTx, adatirányregiszter - DDRx, és a portbemenet csapok - PINx. A Port bemeneti csapok I / O helye csak olvasható, míg az Adat-nyilvántartás és az Adat-irányítási nyilvántartás írás / olvasás. Ha azonban egy logikát írunk egy bitre a PINx regiszterbe, akkor az adatregiszter megfelelő bitjét váltjuk. Ezenkívül az MCUCR Pull-up Disable - PUD bitje letiltja az összes port összes érintkezőjének felhúzási funkcióját, ha be van állítva.
Az I / O port általános digitális I / O-ként való használatát a “Portok, mint általános digitális I / O”, 53. oldal. A legtöbb portcsap alternatív funkciókkal multiplexálva van az eszköz perifériás szolgáltatásaihoz. Az egyes alternatív funkciók beavatkozása a port tűkkel leírva “Alternatív portfunkciók”, 57. oldal. Az alternatív funkciók teljes leírását az egyes modulok szakaszaiban találja meg.
Ne feledje, hogy a port egyes érintkezőinek alternatív funkciójának engedélyezése nem befolyásolja a port többi érintkezőjének általános digitális I / O-ként való használatát.
Portok, mint General Digital I / O
A portok kétirányú I / O portok, opcionális belső felhúzásokkal. 10-2. ábra egy I / O-port tüskének funkcionális leírását mutatja, itt általában Pxn-nek hívják.
10-2. ábra. Általános digitális I/O(1)
A PIN konfigurálása
Minden port pin három regiszterbitből áll: DDxn, PORTxn és PINxn. Ahogy látható „Leírás regisztrálása” be 64. oldal, a DDxn biteket a DDRx I / O címen, a PORTxn biteket a PORTx I / O címen és a PINxn biteket a PINx I / O címen érjük el.
A DDRx regiszterben szereplő DDxn bit kiválasztja ennek a tűnek az irányát. Ha a DDxn logikai logika, akkor a Pxn kimeneti tűként van konfigurálva. Ha a DDxn logikai logika nulla, a Pxn bemeneti tűként van konfigurálva.
Ha a PORTxn logikailag írott, amikor a csapot bemeneti tűként konfigurálják, a felhúzási ellenállás aktiválódik. A felhúzási ellenállás kikapcsolásához a PORTxn logikai nullát kell írni, vagy a csapot kimeneti csapnak kell konfigurálni. A port tüskéit háromszor állítják be, amikor a visszaállítási állapot aktívvá válik, akkor is, ha egyetlen óra sem fut.
Ha a PORTxn logikailag írott, amikor a csap kimeneti tűként van konfigurálva, akkor a port tüskéje magasan van (egy). Ha a PORTxn logikai nulla, amikor a tű kimeneti tűként van konfigurálva, akkor a port tű alacsonyan (nulla) van.
A csap átkapcsolása
Logikai írás a PINxn-be váltja a PORTxn értékét, függetlenül a DDRxn értékétől. Ne feledje, hogy az SBI utasítással egyetlen bitet lehet váltani egy portban.
Váltás a bemenet és a kimenet között
A háromállapotú ({DDxn, PORTxn} = 0b00) és a magas kimeneti ({DDxn, PORTxn} = 0b11) közötti váltáskor egy közbenső állapot, amelyben vagy engedélyezve van a felhúzás {DDxn, PORTxn} = 0b01) vagy a kimenet alacsony. ({DDxn, PORTxn} = 0b10) előfordulnia kell. Normális esetben a felhúzás engedélyezett állapot teljesen elfogadható, mivel a nagy impedanciájú környezet nem veszi észre a különbséget az erős magas meghajtó és a felhúzás között. Ha nem ez a helyzet, akkor az MCUCR regiszter PUD bitje beállítható úgy, hogy az összes porton letiltja az összes felhúzást.
A felhúzással és alacsony kimenettel rendelkező bemenet közötti váltás ugyanazt a problémát okozza. A felhasználónak vagy a háromállapotot ({DDxn, PORTxn} = 0b00) vagy a kimeneti magas állapotot ({DDxn, PORTxn} = 0b10) kell használnia köztes lépésként.
10-1. táblázat összefoglalja a pin érték vezérlő jeleit.
10-1. táblázat. Port Pin konfigurációk
DDxn | PORTxn | PRACLI
(MCUCR-ben) |
I/O | Felhúzás | Megjegyzés |
0 | 0 | X | Bemenet | Nem | Háromállású (Hi-Z) |
0 | 1 | 0 | Bemenet | Igen | A Pxn áramot fog kapni, ha ext. alacsonyra húzta. |
0 | 1 | 1 | Bemenet | Nem | Háromállású (Hi-Z) |
1 | 0 | X | Kimenet | Nem | Kimenet alacsony (mosogató) |
1 | 1 | X | Kimenet | Nem | Magas kimenet (forrás) |
A PIN-érték elolvasása
A DDxn Data Direction bit beállításától függetlenül a port pin átolvasható a PINxn Register biten keresztül. Ahogy látható 10-2. ábra, a PINxn regiszter bit és az azt megelőző retesz szinkronizálót alkot. Erre azért van szükség, hogy elkerüljük a metastabilitást, ha a fizikai csap a belső óra széle közelében változik, de késleltetést is bevezet. 10-3. ábra a szinkronizálás időzítési diagramját mutatja, amikor egy külsőleg alkalmazott tűértéket olvas. A maximális és minimális terjedési késleltetést tpd,max és tpd,min jelöléssel jelöljük.
Tekintsük az óra periódust, amely röviddel a rendszer óra első zuhanási pereme után kezdődik. A retesz zárva van, ha az óra alacsony, és átlátszóvá válik, ha az óra magas, amit a „SYNC LATCH” jel árnyékolt tartománya jelez. A jelérték reteszelődik, ha a rendszer óra lemerül. A PINxn regiszterbe van ütemezve a következő pozitív óraélen. Amint azt a két nyil tpd, max és tpd, min jelzi, a csap egyetlen jelátmenete késleltetni fog a rendszer ütemezési ideje 1 és XNUMX között az állítás idejétől függően.
A szoftverhez hozzárendelt pin-érték visszaolvasásakor egy nop utasítást kell beilleszteni, ahogy az a 10-4. ábra. Az out utasítás a „SYNC LATCH” jelet az óra pozitív szélére állítja. Ebben az esetben a tpd késleltetés a szinkronizálón keresztül egy rendszeróra periódus.
A következő kód plampA le bemutatja, hogyan kell a B port 0 és 1 lábát magasra, 2 és 3 alacsonyra állítani, és a 4-es és 5-ös port érintkezőit bemenetként a 4-es port érintkezőhöz rendelt felhúzással definiálni. amint azt korábban tárgyaltuk, egy nop utasítást tartalmaz, amely képes visszaolvasni néhány lábhoz nemrég rendelt értéket.
Összeszerelési kód Plample(1) |
…
; Határozza meg a felhúzásokat és állítsa magasra a kimeneteket ; Határozza meg a port tűinek irányát ldi r16,(1<<PB4)|(1<<PB1)|(1<<PB0) ldi r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0) ki PORTB,r16 ki DDRB,r17 ; Illessze be a nop-ot a szinkronizáláshoz nop ; Olvassa be a port érintkezőit r16-ban,PINB … |
Megjegyzés: Az összeállítási programban két ideiglenes regisztert használnak annak érdekében, hogy minimalizálják a felhúzásból származó időt a 0, 1 és 4 érintkezőkön az iránybitek helyes beállításáig, a 2. és 3. bitet alacsonyként definiálva, a 0 és 1 biteket pedig újradefiniálva. XNUMX, mint erős magas vezetők.
C Kód Példaample |
unsigned char i;
… /* Felhúzások meghatározása és a kimenetek magas beállítása */ /* Adja meg a port tűinek irányát */ PORTB = (1< DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0); /* Nop beszúrása a szinkronizáláshoz*/ _NOP (); /* Port tűk olvasása */ i = PINB; … |
Digitális bemenet engedélyezése és alvó üzemmódok
Ahogy az ábrán látható 10-2. ábra, a digitális bemeneti jel lehet clamped a schmitt-trigger bemenetén. Az ábrán SLEEP jelzésű jelet az MCU alvó vezérlője állítja be kikapcsolási módban, hogy elkerülje a magas energiafogyasztást, ha néhány bemeneti jel lebeg, vagy ha analóg jelszintje közel van a VCC/2-hez.
A SLEEP felülbírálva van azoknál a port-csapoknál, amelyek külső megszakítási csapokként engedélyezve vannak. Ha a külső megszakítási kérelem nincs engedélyezve, akkor a SLEEP aktív ezekhez a csapokhoz is. A SLEEP-et számos más alternatív funkció felülírja, amint azt a “Alternatív portfunkciók”, 57. oldal.
Ha magas logikai szint ("egy") van egy aszinkron külső megszakítótűn, amely "Megszakítás felfutó élen, leeső élen vagy bármilyen logikai változás a tűn"-ként van konfigurálva, miközben a külső megszakítás nincs engedélyezve, a megfelelő külső megszakításjelző A fent említett alvó üzemmódból való visszatéréskor be kell állítani, mivel a clampezekben az alvó üzemmódokban a kért logikai változtatást eredményezi.
Csatlakozatlan csapok
Ha egyes csapok nincsenek felhasználva, akkor ajánlatos megbizonyosodni arról, hogy ezeknek a csapoknak meghatározott szintje van. Annak ellenére, hogy a digitális bemenetek többsége a fent leírt mély alvási üzemmódokban le van tiltva, a lebegő bemeneteket el kell kerülni az áramfogyasztás csökkentése érdekében minden olyan egyéb módban, ahol a digitális bemenetek engedélyezve vannak (Reset, Aktív mód és Készenléti mód).
A legegyszerűbb módszer a nem használt csap meghatározott szintjének biztosítására a belső felhúzás engedélyezése. Ebben az esetben a visszaállítás során a felhúzás le lesz tiltva. Ha az alaphelyzetbe állítás során az alacsony energiafogyasztás fontos, javasolt külső felhúzó vagy lehúzó használata. A nem használt érintkezők közvetlen csatlakoztatása VCC-hez vagy GND-hez nem ajánlott, mivel ez túlzott áramerősséget okozhat, ha a tűt véletlenül kimenetként konfigurálják.
Alternatív portfunkciók
A legtöbb portcsap alternatív funkcióval rendelkezik, amellett, hogy általános digitális I / O. 10-5. ábra megmutatja, hogy a port pin vezérlése hogyan jelzi az egyszerűsítettet 10-2. ábra alternatív funkciók felülírhatják. Lehetséges, hogy a felülbíráló jelek nem minden port érintkezõjében vannak, de az ábra általános leírásként szolgál az AVR mikrovezérlõ család minden port érintkezõjéhez.
10-2. táblázat. Az alternatív funkciók felülbíráló jeleinek általános leírása
Jel neve | Teljes név | Leírás |
PUOE | Felhúzás felülbírálás engedélyezése | Ha ez a jel be van állítva, akkor a felhúzás engedélyezését a PUOV jel vezérli. Ha ez a jel törlődik, akkor a felhúzás engedélyezve van
{DDxn, PORTxn, PUD} = 0b010. |
PUOV | Felhúzás felülbírálási értéke | Ha a PUOE be van állítva, akkor a felhúzás be- és kikapcsol, amikor a PUOV be van állítva / törölve, függetlenül a DDxn, PORTxn és PUD regiszter bitjeitől. |
DDOE | Adatirány felülírása Engedélyezés | Ha ez a jel be van állítva, akkor a kimeneti meghajtó engedélyezését a DDOV jel vezérli. Ha ez a jel törlődik, a kimeneti illesztőprogramot a DDxn Register bit engedélyezi. |
DDOV | Adatirány felülbírálja az értéket | Ha a DDOE be van állítva, akkor a kimeneti illesztőprogram be- / kikapcsol, amikor a DDOV be van állítva / törölve, függetlenül a DDxn regiszter bit beállításától. |
PVOE | Portérték felülbírálása Engedélyezés | Ha ez a jel be van állítva és az Output Driver engedélyezve van, akkor a port értékét a PVOV jel vezérli. Ha a PVOE törlődik, és az Output Driver engedélyezve van, akkor a port értékét a PORTxn Register bit vezérli. |
PVOV | Portérték felülbírálja az értéket | Ha a PVOE van beállítva, akkor a port értéke PVOV-ra áll, függetlenül a PORTxn Register bit beállításától. |
TLT | Portváltás felülbírálás engedélyezése | Ha a PTOE be van állítva, akkor a PORTxn Register bit megfordul. |
DIEOE | Digitális bemenet engedélyezése Felülírás engedélyezése | Ha ez a bit be van állítva, akkor a digitális bemenet engedélyezését a DIEOV jel vezérli. Ha ez a jel törlődik, a digitális bemenet engedélyezését az MCU állapota (normál mód, alvó üzemmód) határozza meg. |
DIEOV | Digitális bemenet Engedélyezze az érték felülírását | Ha a DIEOE be van állítva, akkor a digitális bemenet be- és kikapcsol, ha a DIEOV be van állítva / törölve, függetlenül az MCU állapotától (Normál mód, alvó üzemmód). |
DI | Digitális bemenet | Ez az alternatív funkciók digitális bemenete. Az ábrán a jel a schmitt-trigger kimenetéhez csatlakozik, de a szinkronizátor előtt. Hacsak a digitális bemenetet nem használják óraforrásként, az alternatív funkcióval rendelkező modul saját szinkronizálóját fogja használni. |
AIO | Analóg bemenet / kimenet | Ez az analóg bemenet / kimenet alternatív funkciókhoz. A jel közvetlenül a padhoz csatlakozik, és kétirányúan használható. |
A következő alfejezetek röviden leírják az egyes portok alternatív funkcióit, és az elsőbbségi jeleket összekapcsolják az alternatív funkciókkal. További részletekért lásd az alternatív funkció leírását.
A B port alternatív funkciói
Az alternatív funkcióval rendelkező B port csapok a 10-3. táblázat.
10-3. táblázat. B port Pins Alternatív funkciók
Port Pin | Alternatív funkció |
PB5 | ![]() RESET: PIN-kód visszaállítása dW: debugWIRE I / O ADC0: ADC 0. bemeneti csatorna PCINT5: Tűcsere megszakítása, 5. forrás |
PB4 | XTAL2: Kristályoszcillátor kimenet CLKO: Rendszer óra kimenet ADC2: ADC bemenet 2
OC1B: Időzítő / Számláló1 Hasonlítsa össze a B mérkőzést. PCINT4 kimenet: Tűcsere megszakítás 0, 4. forrás |
PB3 | XTAL1: Kristályoszcillátor bemenet CLKI: Külső órajel bemenet ADC3: ADC 3. bemeneti csatorna
OC1B: Kiegészítő időzítő / számláló1 Hasonlítsa össze a B mérkőzést. PCINT3 kimenet: Tűcsere megszakítás 0, 3. forrás |
PB2 | SCK: Soros óra bemenet ADC1: ADC bemenet 1
T0: Időzítő / Számláló0 Óra Forrás USCK: USI Óra (háromvezetékes mód) SCL: USI Óra (Kétvezetékes mód) INT0: Külső megszakítás 0 Bemenet PCINT2: Tűcsere megszakítás 0, Forrás 2 |
PB1 | MISO: SPI törzsadatbemenet / szolga adatkimenet AIN1: analóg összehasonlító, negatív bemenet OC0B: időzítő / számláló0 összehasonlítás B mérkőzés kimenet összehasonlítása OC1A: időzítő / számláló1 összehasonlítás egyezés A kimenettel DO: USI adatkimenet (háromvezetékes mód) PCINT1: tűcsere megszakítás 0, 1. forrás |
PB0 | MOSI :: SPI törzsadatok kimenete / szolga adatbemenet AIN0: analóg komparátor, pozitív bemenet
OC0A: Timer/Counter0 Hasonlítsa össze a Match A kimenetet OC1A: Kiegészítő időzítő / számláló1 Hasonlítsa össze az A kimenetet DI: USI adatbemenet (háromvezetékes mód) SDA: USI adatbevitel (kétvezetékes mód) AREF: Külső analóg referencia PCINT0: Tűcsere megszakítás 0, Forrás 0 |
B port, 5. bit - RESET / dW / ADC0 / PCINT5
RESET: A külső alaphelyzetbe állítás alacsony aktív, és engedélyezhető az RSTDISBL biztosíték programozásának („1”) kikapcsolásával. A felhúzás aktiválódik, és a kimeneti meghajtó és a digitális bemenet inaktiválódik, ha a csapot RESET tűként használják.
dW: Ha a debugWIRE engedélyezés (DWEN) biztosíték be van programozva, és a zár bitek nincsenek programozva, akkor a céleszközön belül a debugWIRE rendszer aktiválódik. A RESET port tüskéje vezeték-ÉS (nyitott lefolyású) kétirányú I / O tű, ahol a felhúzás engedélyezve van, és a kommunikáció átjárójává válik a cél és az emulátor között.
ADC0: Analóg-digitális átalakító, 0. csatorna.
PCINT5: Tűcsere megszakítási forrás 5.
B port, 4. bit - XTAL2 / CLKO / ADC2 / OC1B / PCINT4
XTAL2: Chip Clock Oscillator pin 2. Használható órajelként minden chip óraforráshoz, a belső kalibrálható RC oszcillátor és a külső óra kivételével. Óratűsként használva a csap nem használható I / O tűként. Ha belső kalibrálható RC oszcillátort vagy külső órát használ Chip óraforrásként, a PB4 rendes I / O tűként szolgál.
CLKO: Az osztott rendszerórát a PB4 tűre lehet kimenni. Az osztott rendszeróra kimenetre kerül, ha a CKOUT biztosíték be van programozva, függetlenül a PORTB4 és DDB4 beállításoktól. A visszaállítás során is kimenetre kerül.
ADC2: Analóg-digitális átalakító, 2. csatorna.
OC1B: Kimenet összehasonlító egyező kimenet: A PB4 tű külső kimenetként szolgálhat az Időzítő / Számláló 1 Összehasonlítás B mérkőzéshez, ha kimenetként van konfigurálva (DDB4 készlet). Az OC1B tű a PWM mód időzítő funkciójának kimeneti tűje is.
PCINT4: Tűcsere megszakítási forrás 4.
B port, 3. bit - XTAL1 / CLKI / ADC3 / OC1B / PCINT3
XTAL1: Chip Clock oszcillátor csap 1. Minden chip óraforráshoz használható, a belső kalibrálható RC oszcillátor kivételével. Óratűsként használva a csap nem használható I / O tűként.
CLKI: Óra bemenet külső óraforrásból, lásd “Külső óra”, 26. oldal.
ADC3: Analóg-digitális átalakító, 3. csatorna.
OC1B: Invertált kimenet összehasonlító egyezési kimenet: A PB3 tű külső kimenetként szolgálhat az időzítő / számláló1 B összehasonlító mérkőzés kimeneteként, amikor kimenetként van konfigurálva (DDB3 készlet). Az OC1B tű a PWM mód időzítő funkciójának fordított kimeneti tűje is.
PCINT3: Tűcsere megszakítási forrás 3.
B port, 2. bit - SCK / ADC1 / T0 / USCK / SCL / INT0 / PCINT2
SCK: Master Clock kimenet, Slave Clock bemeneti tű az SPI csatornához. Ha az SPI engedélyezve van Slave-ként, akkor ezt a csapot bemenetként konfigurálják, függetlenül a DDB2 beállításától. Ha az SPI engedélyezve van Master-ként, akkor ennek a tűnek az adatirányát a DDPB2 vezérli. Amikor a csapot az SPI bemenetre kényszeríti, a felhúzást továbbra is a PORTB2 bit vezérelheti.
ADC1: Analóg-digitális átalakító, 1. csatorna.
T0: Időzítő / Számláló0 számláló forrás.
USCK: Háromvezetékes módú univerzális soros interfész óra.
SCL: Kétvezetékes módú soros óra az USI kétvezetékes módhoz.
INT0: Külső megszakítási forrás 0.
PCINT2: Tűcsere megszakítási forrás 2.
B port, 1. bit - MISO / AIN1 / OC0B / OC1A / DO / PCINT1
MISO: Törzsadatok bevitele, Slave adatkimeneti tű az SPI csatornához. Ha az SPI engedélyezve van Master-ként, akkor ezt a csapot bemenetként konfigurálják, függetlenül a DDB1 beállításától. Ha az SPI Slave-ként engedélyezve van, akkor ennek a tűnek az adatirányát a DDB1 vezérli. Amikor a csapot az SPI bemenetre kényszeríti, a felhúzást továbbra is a PORTB1 bit vezérelheti.
AIN1: Analóg összehasonlító negatív bemenet. Konfigurálja a port tüskét bemenetként kikapcsolt belső felhúzással, hogy elkerülje a digitális port funkciójának zavarását az Analog Comparator funkcióiban.
OC0B: Kimenet Hasonlítsa össze a kimenetet. A PB1 tű külső kimenetként szolgálhat az Időzítő / Számláló0 összehasonlító mérkőzés B-hez. A PB1 tűt kimenetként (DDB1 készlet (egy)) kell konfigurálni ennek a funkciónak a kiszolgálására. Az OC0B tű a PWM mód időzítő funkciójának kimeneti tűje is.
OC1A: Kimenet összehasonlító egyezés kimenet: A PB1 tű külső kimenetként szolgálhat az Időzítő / Számláló1 összehasonlító B mérkőzéshez, amikor kimenetként van konfigurálva (DDB1 készlet). Az OC1A tű a PWM mód időzítő funkciójának kimeneti tűje is.
DO: Háromvezetékes módú univerzális soros interfész adatkimenet. Háromvezetékes mód Az adatkimenet felülírja a PORTB1 értéket, és a DDB1 adatirányú bit beállítása esetén (1) a port felé hajtja. A PORTB1 továbbra is lehetővé teszi a felhúzást, ha az irány be van írva, és a PORTBXNUMX beállítása (egy).
PCINT1: Tűcsere megszakítási forrás 1.
B port, 0 bit - MOSI / AIN0 / OC0A / OC1A / DI / SDA / AREF / PCINT0
MOSI: SPI törzsadatok kimenete, Slave adatok bevitele az SPI csatornához. Ha az SPI Slave-ként engedélyezve van, akkor ez a PIN bemenetként van konfigurálva, függetlenül a DDB0 beállításától. Ha az SPI Master-ként engedélyezett, akkor ennek a tűnek az adatirányát a DDB0 vezérli. Amikor az érintkezőt az SPI bemenetre kényszeríti, a felhúzást továbbra is a PORTB0 bit vezérelheti.
AIN0: Analóg összehasonlító pozitív bemenet. Konfigurálja a port tüskét bemenetként kikapcsolt belső felhúzással, hogy elkerülje a digitális port funkciójának megzavarását az Analog Comparator működésében.
OC0A: Kimenet Hasonlítsa össze a kimenetet. A PB0 tű külső kimenetként szolgálhat az Időzítő / Számláló0 Összehasonlításhoz Az A kimenetként konfigurálva (DDB0 készlet (egy)). Az OC0A tű a PWM mód időzítő funkciójának kimeneti tűje is.
OC1A: Invertált kimenet összehasonlító egyezési kimenet: A PB0 tű külső kimenetként szolgálhat az Időzítő / számláló1 B összehasonlító mérkőzés kimeneteként, amikor kimenetként van konfigurálva (DDB0 készlet). Az OC1A tű a PWM mód időzítő funkciójának fordított kimeneti tűje is.
SDA: Kétvezetékes módú soros interfész adatai.
AREF: Külső analóg hivatkozás az ADC -hez. A felhúzás és a kimeneti meghajtó le van tiltva a PB0 -n, ha a tűt külső referenciaként vagy belső kötetként használjáktage Hivatkozás a külső kondenzátorra az AREF csapnál.
DI: Adatbevitel USI háromvezetékes módban. Az USI háromvezetékes üzemmód nem írja felül a normál portfunkciókat, ezért a tűt be kell állítani a DI funkció bemeneteként.
PCINT0: Tűcsere megszakítási forrás 0.
10-4. táblázat és 10-5. táblázat a B port alternatív funkcióit kapcsolja össze a 10-5. Ábra 58. oldal.
10-4. Jelek felülbírálása a PB[5:3] alternatív funkcióihoz
Jel neve | PB5 / RESET / ADC0 / PCINT5 | PB4/ADC2/XTAL2/ OC1B/PCINT4 | PB3/ADC3/XTAL1/ OC1B/PCINT3 |
PUOE | ![]() |
0 | 0 |
PUOV | 1 | 0 | 0 |
DDOE | RSTDISBL(1) • DWEN(1) | 0 | 0 |
DDOV | debugWire Transmit | 0 | 0 |
PVOE | 0 | OC1B Engedélyezés | ![]() OC1B Engedélyezés |
PVOV | 0 | OC1B | OC1B |
TLT | 0 | 0 | 0 |
DIEOE | ![]() RSTDISBL(1) + (PCINT5 • PCIE + ADC0D) |
PCINT4 • PCIE + ADC2D | PCINT3 • PCIE + ADC3D |
DIEOV | ADC0D | ADC2D | ADC3D |
DI | PCINT5 bemenet | PCINT4 bemenet | PCINT3 bemenet |
AIO | RESET bemenet, ADC0 bemenet | ADC2 bemenet | ADC3 bemenet |
Megjegyzés: ha a biztosíték „0” (programozott).
10-5. Jelek felülbírálása a PB[2:0] alternatív funkcióihoz
Jel neve | PB2/SCK/ADC1/T0/ USCK/SCL/INT0/PCINT2 | PB1/MISO/DO/AIN1/ OC1A/OC0B/PCINT1 | PB0/MOSI/DI/SDA/AIN0/AR EF/OC1A/OC0A/
PCINT0 |
PUOE | USI_TWO_WIRE | 0 | USI_TWO_WIRE |
PUOV | 0 | 0 | 0 |
DDOE | USI_TWO_WIRE | 0 | USI_TWO_WIRE |
DDOV | (USI_SCL_HOLD + PORTB2) • DDB2 | 0 | ![]() ![]() (SDA + PORTB0) • DDB0 |
PVOE | USI_TWO_WIRE • DDB2 | OC0B Engedélyezés + OC1A Engedélyezés + USI_THREE_WIRE | ![]() OC0A Engedélyezés + OC1A Engedélyezés + (USI_TWO_WIRE DDB0) |
PVOV | 0 | OC0B + OC1A + DO | ![]() OC0A + OC1A |
TLT | USITC | 0 | 0 |
DIEOE | PCINT2 • PCIE + ADC1D + USISIE | PCINT1 • PCIE + AIN1D | PCINT0 • PCIE + AIN0D + USISIE |
DIEOV | ADC1D | AIN1D | AIN0D |
DI | T0 / USCK / SCL / INT0 /
PCINT2 bemenet |
PCINT1 bemenet | DI / SDA / PCINT0 bemenet |
AIO | ADC1 bemenet | Analóg összehasonlító negatív bemenet | Analóg összehasonlító pozitív bemenet |
Regisztráció leírása
MCUCR - MCU vezérlő regiszter
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PRACLI | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Olvasni/Írni | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Kezdeti érték | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
6. bit - PUD: felhúzás letiltása
Ha ezt a bitet egyre írják, akkor az I / O portok felhúzása akkor is letiltásra kerül, ha a DDxn és a PORTxn regiszter konfigurálva van a kihúzások engedélyezésére ({DDxn, PORTxn} = 0b01). Lát “A tű beállítása” az 54. oldalon erről a funkcióról további részletekért.
PORTB - B port adatregiszter
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x18 | – | – | PORTB5 | PORTB4 | PORTB3 | PORTB2 | PORTB1 | PORTB0 | PORTB |
Olvasni/Írni | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Kezdeti érték | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
DDRB - B port adatirányító nyilvántartás
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x17 | – | – | DDB5 | DDB4 | DDB3 | DDB2 | DDB1 | DDB0 | DDRB |
Olvasni/Írni | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Kezdeti érték | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
PINB - B port bemeneti csapok címe
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x16 | – | – | PINB5 | PINB4 | PINB3 | PINB2 | PINB1 | PINB0 | PINB |
Olvasni/Írni | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Kezdeti érték | 0 | 0 | N/A | N/A | N/A | N/A | N/A | N/A |
8 bites időzítő / számláló0 PWM-mel
Jellemzők
Két független kimeneti összehasonlító egység
Dupla pufferelt kimenet összehasonlító regiszterek
Időzítő törlése a mérkőzés összehasonlításakor (automatikus újratöltés)
Glitch Free, fázis helyes pulzusszélesség modulátor (PWM)
Változó PWM periódus
Frekvenciagenerátor
Három független megszakító forrás (TOV0, OCF0A és OCF0B)
Felettview
A Timer / Counter0 egy általános célú 8 bites időzítő / számláló modul, két független kimeneti összehasonlító egységgel és PWM támogatással. Pontos programfuttatás időzítést (eseménykezelés) és hullámgenerálást tesz lehetővé.
A 8 bites időzítő / számláló egyszerűsített blokkdiagramját a 11-1. ábra. Az I / O csapok tényleges elhelyezését lásd: “ATtiny25 / 45/85 rögzítőcsavar” a 2. oldalon. A CPU által elérhető I / O regiszterek, beleértve az I / O biteket és az I / O tűket, félkövéren vannak feltüntetve. Az eszközspecifikus I / O regiszter és a bitek helyét a “Leírás regisztrálása”, 77. oldal.
Az időzítő/számláló (TCNT0) és a kimeneti összehasonlító regiszterek (OCR0A és OCR0B) 8 bites regiszterek. A megszakításkérés (az ábrán Int.Req. rövidítve) a jelek mind láthatók a Timer Interrupt Flag Register-ben (TIFR). Minden megszakítást egyedileg maszkol az időzített megszakítási maszk regiszter (TIMSK). A TIFR és a TIMSK nem látható az ábrán.
Az időzítő/számláló órajelezhető belülről, az előskálázón keresztül, vagy a T0 érintkezőn lévő külső órajelforrással. A Clock Select logikai blokk vezérli, hogy az időzítő/számláló melyik óraforrást és élt használja értékének növelésére (vagy csökkentésére). Az időzítő/számláló inaktív, ha nincs kiválasztva óraforrás. A Clock Select logika kimenetére időzítő órának (clkT0) hivatkozunk.
A dupla pufferelt kimeneti összehasonlító regisztereket (OCR0A és OCR0B) mindig összehasonlítják az időzítő / számláló értékével. Az összehasonlítás eredményét a Waveform Generator felhasználhatja PWM vagy változó frekvenciájú kimenet létrehozására az Output Compare csapokon (OC0A és OC0B). Lásd: „Kimenet összehasonlító egység”, 69. oldal. a részletekért. A Match Match esemény beállítja az összehasonlítás jelzőjét (OCF0A vagy OCF0B) is, amely felhasználható az Output Compare megszakítási kérelem előállítására.
Meghatározások
Ebben a szakaszban sok regiszter- és bites hivatkozás általános formában van megírva. Egy kis „n” betű helyettesíti az időzítő / számláló számát, ebben az esetben 0. Egy kis „x” betű helyettesíti a kimeneti összehasonlító egységet, ebben az esetben az „A” egységet vagy a „B” egység összehasonlítását. A regiszter vagy a bit használata esetén azonban egy programban a pontos formát kell használni, azaz a TCNT0-t az időzítő / számláló0 számlálóérték eléréséhez és így tovább.
A fogalommeghatározások 11-1. táblázat a dokumentumban is széles körben használják.
11-1. táblázat. Meghatározások
Állandó | Leírás |
ALSÓ | A számláló eléri a BOTTOM értéket, amikor 0x00 lesz |
MAX | A számláló eléri a MAXimumot, amikor 0xFF lesz (decimális 255) |
TOP | A számláló akkor éri el a TOP-ot, amikor megegyezik a számlálási sorrend legmagasabb értékével. A TOP érték hozzárendelhető a 0xFF (MAX) fix értékhez vagy az OCR0A regiszterben tárolt értékhez. A hozzárendelés a működési módtól függ |
Időzítő / számláló előmérő és óra források
Az időzítőt / számlálót belső vagy külső óraforrás vezérelheti. Az óra forrását az Óra kiválasztás logika választja ki, amelyet az Óra kiválasztás (c) bitek vezérelnek, amelyek az Időzítő / Számláló0 vezérlő regiszterben (TCCR0B) találhatók.
Belső óraforrás előmérővel
A Timer/Counter0 közvetlenül a rendszer órájával órajelezhető (a CS0[2:0] = 1 beállításával). Ez biztosítja a leggyorsabb működést, a maximális időzítő/számláló órajel frekvenciája megegyezik a rendszer órafrekvenciájával (fCLK_I/O). Alternatív megoldásként az előskálázó négy csapjának egyike használható óraforrásként. Az előre skálázott óra frekvenciája bármelyik
Előrehívó visszaállítása
Az előskálázó szabadon fut, azaz az Időzítő/Számláló0 Óraválasztás logikájától függetlenül működik. Mivel az időmérőt nem befolyásolja az időzítő/számláló óra kiválasztása, az előskálázó állapota hatással lesz azokra a helyzetekre, ahol előre beállított órát használ. Egy exampAz előskálázási műtermék az, amikor az időzítőt/számlálót engedélyezi és az előskálázó órajelzi (6> CS0 [2: 0]> 1). A rendszeróra ciklusok száma az időzítő engedélyezésétől az első számlálásig 1 és N+1 rendszer óra ciklus között lehet, ahol N egyenlő az előskálázó osztóval (8, 64, 256 vagy 1024).
A Prescaler Reset használatával az időzítő / számláló szinkronizálható a program végrehajtásával.
Külső óra forrása
A T0 érintkezőre csatlakoztatott külső óraforrás használható időzítő/számláló óraként (clkT0). A T0 tű sampminden rendszeróra ciklusban egyszer a pin szinkronizálási logika vezeti. A szinkronizált (sampled) jel továbbítása
az élérzékelőn keresztül. 11-2. ábra a T0 szinkronizálási és éldetektor logikájának funkcionális egyenértékű blokkdiagramját mutatja be. A regiszterek órajele a belső rendszeróra pozitív élén történik (clkI/O). A retesz átlátszó a belső rendszeróra magas periódusában.
Az élérzékelő minden pozitív (CS0[0:2] = 0) vagy negatív (CS7[0:2] = 0) élre egy clkT6 impulzust generál, amelyet érzékel.
Az OCR0x regiszterek kétszeresen puffereltek, ha bármely impulzusszélesség-modulációs (PWM) módot használnak. A normál és a Clear Timer on Compare (CTC) üzemmódoknál a kettős pufferelés le van tiltva. A kettős puffer szinkronizálja az OCR0x Regiszterek frissítését a számlálási sorrend tetejére vagy aljára. A szinkronizálás megakadályozza a páratlan hosszúságú, nem szimmetrikus PWM impulzusok előfordulását, ezáltal a kimenetet hibátlanul.
Az OCR0x Register hozzáférés összetettnek tűnhet, de ez nem így van. Ha engedélyezve van a kettős pufferelés, a CPU hozzáfér az OCR0x pufferregiszterhez, és ha a kettős pufferelés le van tiltva, a CPU közvetlenül hozzáfér az OCR0x-hez.
Kimeneti teljesítmény összehasonlítása
Nem PWM hullámforma-előállítási módokban a komparátor egyezési kimenete kényszeríthető úgy, hogy írunk egyet a Force Output Compare (FOC0x) bitre. Az Összehasonlítás kényszerítése nem állítja be az OCF0x jelzőt, és nem tölti be / törli az időzítőt, de az OC0x csap frissül, mintha valós összehasonlítási egyezés történt volna (a COM0x [1: 0] bitbeállítások határozzák meg, hogy az OC0x csap be van-e állítva, ki van-e törölve. vagy váltott).
Hasonlítsa össze a mérkőzés blokkolását TCNT0 írással
Az összes CPU-írási művelet a TCNT0 nyilvántartásba blokkol minden összehasonlító mérkőzést, amely a következő időmérő óraciklusában történik, még akkor is, ha az időzítő le van állítva. Ez a funkció lehetővé teszi az OCR0x inicializálását a TCNT0 értékkel megegyező értékre anélkül, hogy megszakítást indítana, ha az időzítő / számláló óra engedélyezve van.
Az Output Compare egység használata
Mivel a TCNT0 bármilyen működési módba való beírása blokkolja az összes összehasonlító egyezést egy időzítő óraciklusánál, fennáll a TCNT0 megváltoztatásának kockázata az Output Compare Unit használatakor, függetlenül attól, hogy az időzítő / számláló fut-e vagy sem. Ha a TCNT0-ra írt érték megegyezik az OCR0x értékkel, akkor az Összehasonlítás elmarad, ami hibás hullámforma létrehozását eredményezi. Hasonlóképpen, ne írja a TCNT0 értéket, amely megegyezik a BOTTOM értékével, amikor a számláló visszaszámlál.
Az OC0x beállítását el kell végezni, mielőtt beállítanánk az adatirányregisztert a port pin kimenetéhez. Az OC0x érték beállításának legegyszerűbb módja a Force Output Compare (FOC0x) strobe bitek használata Normál módban. Az OC0x regiszterek akkor is megőrzik értékeiket, ha váltanak a hullámforma generációs módok között.
Ne feledje, hogy a COM0x [1: 0] bitek nem duplán vannak pufferelve az összehasonlító értékkel együtt. A COM0x [1: 0] bitek megváltoztatása azonnal hatályba lép.
Hasonlítsa össze a Kimeneti egység illesztését
A Kimenet összehasonlítása (COM0x [1: 0]) biteknek két funkciója van. A hullámforma-generátor a COM0x [1: 0] biteket használja a kimenet-összehasonlítás (OC0x) állapot meghatározásához a következő összehasonlító egyezés során. Ezenkívül a COM0x [1: 0] bitek vezérlik az OC0x tűkimeneti forrást. 11-6. ábra a COM0x [1: 0] bitbeállítás által érintett logika egyszerűsített vázlatát mutatja. Az ábrán látható I / O regiszterek, I / O bitek és I / O csapok félkövéren vannak feltüntetve. Az általános I / O portvezérlő nyilvántartásoknak (DDR és PORT) csak azok a részei jelennek meg, amelyeket a COM0x [1: 0] bitek érintenek. Az OC0x állapotra hivatkozva a hivatkozás a belső OC0x regiszterre vonatkozik, nem az OC0x tűre. Rendszer-visszaállítás esetén az OC0x regiszter „0” -ra áll vissza.
Ha az OC0A / OC0B csatlakozik az I / O tűhöz, a COM0A [1: 0] / COM0B [1: 0] bitek működése a WGM0 [2: 0] bit beállításától függ. 11-2. táblázat mutatja a COM0x [1: 0] bit funkcionalitást, amikor a WGM0 [2: 0] biteket normál vagy CTC módba (nem PWM) állítják be.
11-2. táblázat. Hasonlítsa össze a kimeneti módot a nem PWM móddal
COM0A1 COM0B1 | COM0A0 COM0B0 | Leírás |
0 | 0 | Normál port működés, OC0A / OC0B nincs csatlakoztatva. |
0 | 1 | Váltsa az OC0A / OC0B elemet az Összehasonlítás elemre |
1 | 0 | Törölje az OC0A / OC0B elemet az Összehasonlítás elemen |
1 | 1 | Állítsa az OC0A / OC0B elemet az Összehasonlítás elemre |
11-3. táblázat mutatja a COM0x [1: 0] bit funkcionalitást, amikor a WGM0 [2: 0] biteket gyors PWM módra állítják.
11-3. táblázat. Hasonlítsa össze a kimeneti módot, a gyors PWM módot(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Leírás |
0 | 0 | Normál port működés, OC0A / OC0B nincs csatlakoztatva. |
0 | 1 | Fenntartott |
1 | 0 | Törölje az OC0A / OC0B elemet az Összehasonlítás menüpontban, állítsa az OC0A / OC0B értéket a BOTTOM értékre (nem invertáló mód) |
1 | 1 | Állítsa az OC0A / OC0B elemet az Összehasonlítás elemre, törölje az OC0A / OC0B törzsét a BOTTOM-nál (invertáló mód) |
Megjegyzés: Különleges eset fordul elő, ha az OCR0A vagy az OCR0B egyenlő a TOP értékkel, és a COM0A1/COM0B1 be van állítva. Ebben az esetben az összehasonlítás egyezést figyelmen kívül hagyja, de a beállítás vagy törlés az ALUL történik. Lát “Gyors PWM mód” 73. oldal további részletekért.
11-4. táblázat mutatja a COM0x [1: 0] bit funkcionalitást, amikor a WGM0 [2: 0] biteket fázis helyes PWM módra állítják.
11-4. táblázat. Hasonlítsa össze a Kimeneti módot, a Fáziskorrekciós PWM módot(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Leírás |
0 | 0 | Normál port működés, OC0A / OC0B nincs csatlakoztatva. |
0 | 1 | Fenntartott |
1 | 0 | Törölje az OC0A / OC0B elemet az Összehasonlítás összehasonlításkor felszámoláskor. A visszaszámláláskor állítsa az OC0A / OC0B elemet az Összehasonlítás elemre. |
1 | 1 | Állítsa az OC0A / OC0B elemet az Összehasonlítás összehasonlításra, amikor felszámolja. Törölje az OC0A / OC0B elemet az Összehasonlítás összehasonlításkor, ha le van számlálva. |
Megjegyzés: 1. Különleges eset fordul elő, ha az OCR0A vagy az OCR0B egyenlő a TOP-val, és a COM0A1/COM0B1 be van állítva. Ebben az esetben a Compare Match figyelmen kívül hagyja, de a beállítás vagy törlés a TOP-on történik. Lát “Fázis helyes PWM mód”, 74. oldal további részletekért.
Bits 3: 2 - Res: Lefoglalt bitek
Ezek a bitek az ATtiny25 / 45/85 tartalék bitek, és mindig nullaként fognak olvasni.
Bitek 1: 0 - WGM0 [1: 0]: Hullámforma létrehozási mód
Ezek a bitek a TCCR02B regiszterben található WGM0 bitdel kombinálva vezérlik a számláló számlálási sorrendjét, a maximális (TOP) számláló érték forrását és azt, hogy milyen típusú hullámforma generálást kell használni. 11-5. táblázat. Az időzítő / számláló egység által támogatott működési módok a következők: Normál mód (számláló), Időzítő törlése a mérkőzés összehasonlításával (CTC) és kétféle impulzusszélesség-modulációs (PWM) mód (lásd: „Működési módok” a 71. oldalon).
11-5. táblázat. Hullámforma generálási mód Bit leírása
Mód | WGM 02 | WGM 01 | WGM 00 | Időzítő / számláló működési mód | TOP | Az OCRx frissítése a következő címen: | TOV zászló be van kapcsolva |
0 | 0 | 0 | 0 | Normál | 0xFF | Azonnali | MAX(1) |
1 | 0 | 0 | 1 | PWM, fázis helyes | 0xFF | TOP | ALSÓ(2) |
2 | 0 | 1 | 0 | CTC | OCRA | Azonnali | MAX(1) |
3 | 0 | 1 | 1 | Gyors PWM | 0xFF | ALSÓ(2) | MAX(1) |
4 | 1 | 0 | 0 | Fenntartott | – | – | – |
5 | 1 | 0 | 1 | PWM, fázis helyes | OCRA | TOP | ALSÓ(2) |
6 | 1 | 1 | 0 | Fenntartott | – | – | – |
7 | 1 | 1 | 1 | Gyors PWM | OCRA | ALSÓ(2) | TOP |
7. bit - FOC0A: Kimeneti erő összehasonlítása A
A FOC0A bit csak akkor aktív, ha a WGM bitek nem PWM módot határoznak meg.
Azonban a jövőbeni eszközökkel való kompatibilitás biztosítása érdekében ezt a bitet nullára kell állítani, amikor a TCCR0B be van írva, amikor PWM módban működik. Ha logikusat írunk a FOC0A bitre, akkor az azonnali összehasonlítási kényszer kényszerül a Waveform Generation egységre. Az OC0A kimenet a COM0A [1: 0] bit beállításának megfelelően módosul. Vegye figyelembe, hogy az FOC0A bit strobóként valósul meg. Ezért a kényszerített összehasonlítás hatását a COM0A [1: 0] bitekben lévő érték határozza meg.
A FOC0A strobe nem generál megszakítást, és nem is törli az időzítőt CTC módban, az OCR0A-t TOP-ként használva. A FOC0A bit mindig nullának számít.
6. bit - FOC0B: Kimeneti erő összehasonlítása B.
A FOC0B bit csak akkor aktív, ha a WGM bitek nem PWM módot határoznak meg.
Azonban a jövőbeni eszközökkel való kompatibilitás biztosítása érdekében ezt a bitet nullára kell állítani, amikor a TCCR0B be van írva, amikor PWM módban működik. Amikor logikusat írunk a FOC0B bitbe, az azonnali összehasonlító kényszerítést kényszerítjük a Waveform Generation egységre. Az OC0B kimenet a COM0B [1: 0] bit beállításának megfelelően módosul. Vegye figyelembe, hogy az FOC0B bit strobóként valósul meg. Ezért a kényszerített összehasonlítás hatását a COM0B [1: 0] bitekben lévő érték határozza meg.
A FOC0B strobe nem generál megszakítást, és nem is törli az időzítőt CTC módban, OCR0B-t használva TOP-ként.
A FOC0B bit mindig nulla.
Bits 5: 4 - Res: Lefoglalt bitek
Ezek a bitek az ATtiny25 / 45/85 tartalék bitek, és mindig nullaként fognak olvasni.
3. bit - WGM02: Hullámforma létrehozási mód
Lásd a leírást a “TCCR0A - Időzítő / számláló vezérlő regiszter A”, 77. oldal.
2. bit: 0 - CS0 [2: 0]: Óra kiválasztása
A három Clock Select bit kiválasztja az időzítőt, amelyet az időzítő / számláló használ.
11-6. táblázat. Clock Select Bit Description
CS02 | CS01 | CS00 | Leírás |
0 | 0 | 0 | Nincs órajelforrás (az időzítő / számláló leállt) |
0 | 0 | 1 | clkI/O/(nincs előskálázás) |
0 | 1 | 0 | clkI/O/8 (előskálázóból) |
0 | 1 | 1 | clkI/O/64 (előskálázóból) |
1 | 0 | 0 | clkI/O/256 (előskálázóból) |
1 | 0 | 1 | clkI/O/1024 (előskálázóból) |
1 | 1 | 0 | Külső óraforrás a T0 tűn. Óra az eső szélén. |
1 | 1 | 1 | Külső óraforrás a T0 tűn. Óra emelkedő szélén. |
Ha az Időzítő / Számláló0 számára külső érintkezési módokat használnak, akkor a T0 érintkező átmenetei akkor is számlálják a számlálót, ha a tű kimenetként van beállítva. Ez a szolgáltatás lehetővé teszi a számlálás szoftveres vezérlését.
Számláló és egységek összehasonlítása
Az Időzítő / Számláló1 általános működését aszinkron módban írják le, és a szinkron módban való működést csak akkor említik, ha vannak különbségek e két mód között. 12-2. ábra mutatja az 1. időzítő / számláló szinkronizációs regiszter blokkdiagramját és a regiszterek közötti szinkronizálási késéseket. Ne feledje, hogy az óra minden részletét nem ábrázolja az ábra. Az Időzítő / Számláló1 regiszterértékek átmennek a belső szinkronizációs regisztereken, amelyek a bemenet szinkronizálási késleltetését okozzák, mielőtt befolyásolják a számláló működését. A TCCR1, GTCCR, OCR1A, OCR1B és OCR1C regiszterek közvetlenül a regisztráció megírása után olvashatók vissza. A beolvasás és a kimenet szinkronizálása miatt az olvasási értékek késleltetve vannak az Időzítő / Számláló1 (TCNT1) regiszternél és a jelzőknél (OCF1A, OCF1B és TOV1).
Az Időzítő / Számláló1 nagy felbontással és nagy pontossággal rendelkezik, alacsonyabb előkalkálázási lehetőségekkel. Két pontos, nagysebességű, 8 bites impulzusszélesség-modulátort is képes támogatni, akár 64 MHz-es (vagy 32 MHz-es alacsony sebességű üzemmódban) órajellel. Ebben az üzemmódban az Időzítő / Számláló1 és a kimeneti összehasonlító regiszterek kettős önálló PWM-ként szolgálnak, nem átfedő, nem invertált és invertált kimenetekkel. Hivatkozni 86. oldal a funkció részletes leírása. Hasonlóképpen, a nagy előskálázási lehetőségek teszik ezt az egységet alacsonyabb sebességű funkciókhoz vagy pontos időzítési funkciókhoz, ritka műveletekkel.
12-2 ábra. Időzítő/Számláló 1 szinkronizálási regiszter blokkdiagramja.
Az Időzítő / Számláló1 és az előmérő lehetővé teszi a CPU futtatását bármely óraforrásból, miközben az előmérő készülék aszinkron módban a gyors 64 MHz-es (vagy 32 MHz-es alacsony sebességű üzemmódban) PCK-órajelen működik.
Ne feledje, hogy a rendszer órajel frekvenciájának alacsonyabbnak kell lennie, mint a PCK frekvencia egyharmada. Az aszinkron Időzítő / Számláló1 szinkronizálási mechanizmusának a PCK legalább két szélére van szüksége, ha a rendszer óra magas. Ha a rendszer órájának frekvenciája túl magas, akkor fennáll annak a veszélye, hogy az adatok vagy a kontrollértékek elvesznek.
A következő 12-3. ábra az időzítő / számláló1 blokkvázlatát mutatja.
12-1. táblázat. Mód összehasonlítása Válassza ki a PWM módban
COM1x1 | COM1x0 | Hatás a kimeneti összehasonlító csapokra |
0 | 0 | Az OC1x nincs csatlakoztatva. Az OC1x nincs csatlakoztatva. |
0 | 1 | Az OC1x törlődött az összehasonlító mérkőzésen. Állítsa be, amikorTCNT1 = $ 00. OC1x beállítva az összehasonlító mérkőzésen. Törölve, ha a TCNT1 = $ 00. |
1 | 0 | Az OC1x törlődött az összehasonlító mérkőzésen. Akkor állítsa be, amikor a TCNT1 = $ 00. Az OC1x nincs csatlakoztatva. |
1 | 1 | OC1x Állítsa be az összehasonlító mérkőzést. Törölve, ha a TCNT1 = $ 00. Az OC1x nincs csatlakoztatva. |
ADC jellemzők
21-8. táblázat. ADC jellemzők, egyvégű csatornák. TA = -40°C és +85°C között
Szimbólum | Paraméter | Állapot | Min | Typ | Max | Egységek |
Felbontás | 10 | Bitok | ||||
Abszolút pontosság (beleértve az INL, DNL, és a kvantálás, az erősítés és az eltolás hibákat) | VREF = 4 V, VCC = 4 V,
ADC óra = 200 kHz |
2 | LSB | |||
VREF = 4 V, VCC = 4 V,
ADC óra = 1 MHz |
3 | LSB | ||||
VREF = 4 V, VCC = 4 V,
ADC óra = 200 kHz Zajcsökkentési mód |
1.5 | LSB | ||||
VREF = 4 V, VCC = 4 V,
ADC óra = 1 MHz Zajcsökkentési mód |
2.5 | LSB | ||||
Integrált nem-linearitás (INL) (pontosság az eltolás és az erősítés kalibrálása után) | VREF = 4 V, VCC = 4 V,
ADC óra = 200 kHz |
1 | LSB | |||
Differenciál-nem-linearitás (DNL) | VREF = 4 V, VCC = 4 V,
ADC óra = 200 kHz |
0.5 | LSB | |||
Nyereség hiba | VREF = 4 V, VCC = 4 V,
ADC óra = 200 kHz |
2.5 | LSB | |||
Eltoláshiba | VREF = 4 V, VCC = 4 V,
ADC óra = 200 kHz |
1.5 | LSB | |||
Konverziós idő | Ingyenes futó konverzió | 14 | 280 | us | ||
Órafrekvencia | 50 | 1000 | kHz | |||
VIN | Input Voltage | GND | VREF | V | ||
Bemeneti sávszélesség | 38.4 | kHz | ||||
AREF | Külső hivatkozás Voltage | 2.0 | VCC | V | ||
CSAVAR | Belső kötettage Hivatkozás | 1.0 | 1.1 | 1.2 | V | |
Belső 2.56 V referencia (1) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | 32 | kΩ | ||||
ESŐ | Analóg bemeneti ellenállás | 100 | MΩ | |||
ADC kimenet | 0 | 1023 | LSB |
Megjegyzés: 1. Az értékek csak irányadóak.
21-9. táblázat. ADC jellemzők, differenciálcsatornák (unipoláris mód). TA = -40°C és +85°C között
Szimbólum | Paraméter | Állapot | Min | Typ | Max | Egységek |
Felbontás | Nyereség = 1x | 10 | Bitok | |||
Nyereség = 20x | 10 | Bitok | ||||
Abszolút pontosság (beleértve az INL, a DNL és a
Kvantálás, nyereség és eltolás hibák) |
Nyereség = 1x
VREF = 4V, VCC = 5V ADC óra = 50 - 200 kHz |
10.0 | LSB | |||
Nyereség = 20x
VREF = 4V, VCC = 5V ADC óra = 50 - 200 kHz |
20.0 | LSB | ||||
Integrált nem-linearitás (INL) (pontosság az eltolás és az erősítés kalibrálása után) | Nyereség = 1x
VREF = 4V, VCC = 5V ADC óra = 50 - 200 kHz |
4.0 | LSB | |||
Nyereség = 20x
VREF = 4V, VCC = 5V ADC óra = 50 - 200 kHz |
10.0 | LSB | ||||
Nyereség hiba | Nyereség = 1x | 10.0 | LSB | |||
Nyereség = 20x | 15.0 | LSB | ||||
Eltoláshiba | Nyereség = 1x
VREF = 4V, VCC = 5V ADC óra = 50 - 200 kHz |
3.0 | LSB | |||
Nyereség = 20x
VREF = 4V, VCC = 5V ADC óra = 50 - 200 kHz |
4.0 | LSB | ||||
Konverziós idő | Ingyenes futó konverzió | 70 | 280 | us | ||
Órafrekvencia | 50 | 200 | kHz | |||
VIN | Input Voltage | GND | VCC | V | ||
VDIFF | Bemeneti differenciál térfogattage | VREF/Gain | V | |||
Bemeneti sávszélesség | 4 | kHz | ||||
AREF | Külső hivatkozás Voltage | 2.0 | VCC – 1.0 | V | ||
CSAVAR | Belső kötettage Hivatkozás | 1.0 | 1.1 | 1.2 | V | |
Belső 2.56 V referencia (1) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | Referencia bemeneti ellenállás | 32 | kΩ | |||
ESŐ | Analóg bemeneti ellenállás | 100 | MΩ | |||
ADC konverzió kimenet | 0 | 1023 | LSB |
Megjegyzés: Az értékek csak irányadóak.
táblázat 21-10. ADC jellemzők, differenciálcsatornák (bipoláris mód). TA = -40°C és +85°C között
Szimbólum | Paraméter | Állapot | Min | Typ | Max | Egységek |
Felbontás | Nyereség = 1x | 10 | Bitok | |||
Nyereség = 20x | 10 | Bitok | ||||
Abszolút pontosság (beleértve az INL, a DNL és a
Kvantálás, nyereség és eltolás hibák) |
Nyereség = 1x
VREF = 4V, VCC = 5V ADC óra = 50 - 200 kHz |
8.0 | LSB | |||
Nyereség = 20x
VREF = 4V, VCC = 5V ADC óra = 50 - 200 kHz |
8.0 | LSB | ||||
Integrált nem-linearitás (INL) (pontosság az eltolás és az erősítés kalibrálása után) | Nyereség = 1x
VREF = 4V, VCC = 5V ADC óra = 50 - 200 kHz |
4.0 | LSB | |||
Nyereség = 20x
VREF = 4V, VCC = 5V ADC óra = 50 - 200 kHz |
5.0 | LSB | ||||
Nyereség hiba | Nyereség = 1x | 4.0 | LSB | |||
Nyereség = 20x | 5.0 | LSB | ||||
Eltoláshiba | Nyereség = 1x
VREF = 4V, VCC = 5V ADC óra = 50 - 200 kHz |
3.0 | LSB | |||
Nyereség = 20x
VREF = 4V, VCC = 5V ADC óra = 50 - 200 kHz |
4.0 | LSB | ||||
Konverziós idő | Ingyenes futó konverzió | 70 | 280 | us | ||
Órafrekvencia | 50 | 200 | kHz | |||
VIN | Input Voltage | GND | VCC | V | ||
VDIFF | Bemeneti differenciál térfogattage | VREF/Gain | V | |||
Bemeneti sávszélesség | 4 | kHz | ||||
AREF | Külső hivatkozás Voltage | 2.0 | VCC – 1.0 | V | ||
CSAVAR | Belső kötettage Hivatkozás | 1.0 | 1.1 | 1.2 | V | |
Belső 2.56 V referencia (1) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | Referencia bemeneti ellenállás | 32 | kΩ | |||
ESŐ | Analóg bemeneti ellenállás | 100 | MΩ | |||
ADC konverzió kimenet | -512 | 511 | LSB |
Utasításkészlet összefoglaló
Mnemonika | Operandusok | Leírás | Művelet | Zászlók | # Órák |
ARITMETIKAI ÉS LOGIKAI UTASÍTÁSOK | |||||
HOZZÁAD | Rd, Rr | Adjon hozzá két regisztert | Rd ← Rd + Rr | Z, C, N, V, H | 1 |
ADC | Rd, Rr | Adjon hozzá a Carry two Registry alkalmazással | Rd ← Rd + Rr + C | Z, C, N, V, H | 1 |
ADIW | Rdl, K | Azonnali hozzáadása a Wordhez | Rdh:Rdl ← Rdh:Rdl + K | Z, C, N, V, S | 2 |
ALATTI | Rd, Rr | Két regiszter levonása | Rd ← Rd – Rr | Z, C, N, V, H | 1 |
SUBI | Rd, K. | Kivonja az állandó a nyilvántartásból | Rd ← Rd – K | Z, C, N, V, H | 1 |
SBC | Rd, Rr | Kivonás a Carry két regiszterrel | Rd ← Rd – Rr – C | Z, C, N, V, H | 1 |
SBCI | Rd, K. | Kivonás a Carry Constant segítségével a Reg. | Rd ← Rd – K – C | Z, C, N, V, H | 1 |
SBIW | Rdl, K | Azonnali kivonása a Wordből | Rdh:Rdl ← Rdh:Rdl – K | Z, C, N, V, S | 2 |
ÉS | Rd, Rr | Logikai ÉS Nyilvántartások | Rd ← Rd ∙ Rr | Z, N, V | 1 |
ANDI | Rd, K. | Logikus és regisztráció és állandó | Rd ← Rd ∙ K | Z, N, V | 1 |
OR | Rd, Rr | Logikai vagy regiszterek | Rd ← Rd v Rr | Z, N, V | 1 |
ORI | Rd, K. | Logikus VAGY Regisztráció és Állandó | Rd ← Rd v K | Z, N, V | 1 |
EOR | Rd, Rr | Exkluzív VAGY nyilvántartások | Rd ← Rd ⊕ Rr | Z, N, V | 1 |
COM | Rd | Az egyik kiegészítése | Rd ← 0xFF − Rd | Z, C, N, V | 1 |
NEG | Rd | Kettő kiegészítése | Rd ← 0x00 − Rd | Z, C, N, V, H | 1 |
SBR | Rd, K | Állítsa be a biteket a nyilvántartásban | Rd ← Rd v K | Z, N, V | 1 |
CBR | Rd, K | Tiszta bit (ek) törlése a nyilvántartásban | Rd ← Rd ∙ (0xFF – K) | Z, N, V | 1 |
INC | Rd | Növekedés | Rd ← Rd + 1 | Z, N, V | 1 |
DECEMBER | Rd | fogás | Rd ← Rd − 1 | Z, N, V | 1 |
TST | Rd | Teszt nullára vagy mínuszra | Rd ← Rd ∙ Rd | Z, N, V | 1 |
CLR | Rd | Törölje a regisztrációt | Rd ← Rd ⊕ Rd | Z, N, V | 1 |
SER | Rd | A Regisztráció beállítása | Rd ← 0xFF | Egyik sem | 1 |
ÁGAZATI UTASÍTÁSOK | |||||
RJMP | k | Relatív ugrás | PC ← PC + k + 1 | Egyik sem | 2 |
IJMP | Közvetett ugrás (Z) | PC ← Z | Egyik sem | 2 | |
RCALL | k | Relatív szubrutinhívás | PC ← PC + k + 1 | Egyik sem | 3 |
HÍVOK | Közvetett hívás (Z) | PC ← Z | Egyik sem | 3 | |
RET | Alprogram visszatérése | PC ← STACK | Egyik sem | 4 | |
RETI | Megszakított visszatérés | PC ← STACK | I | 4 | |
CPSE | Rd, Rr | Hasonlítsa össze, hagyja ki, ha egyenlő | ha (Rd = Rr) PC ← PC + 2 vagy 3 | Egyik sem | 1/2/3 |
CP | Rd, Rr | Hasonlítsa össze | Rd − Rr | Z, N, V, C, H | 1 |
CPC | Rd, Rr | Hasonlítsa össze a Carry-val | Rd − Rr − C | Z, N, V, C, H | 1 |
fogyasztói árindex | Rd, K | Hasonlítsa össze a Regisztrálás az Azonnal szolgáltatással | Rd - K | Z, N, V, C, H | 1 |
SBRC | Rr, szül | Ugrás, ha a regisztráció bitje törölve | ha (Rr(b)=0) PC ← PC + 2 vagy 3 | Egyik sem | 1/2/3 |
SBRS | Rr, szül | Ugrás, ha a Bit in Register be van állítva | ha (Rr(b)=1) PC ← PC + 2 vagy 3 | Egyik sem | 1/2/3 |
SBIC | P, b | Ugrás, ha az I / O regisztráció bitje törölve | ha (P(b)=0) PC ← PC + 2 vagy 3 | Egyik sem | 1/2/3 |
SBIS | P, b | Ugrás, ha az I / O regiszter bitje be van állítva | ha (P(b)=1) PC ← PC + 2 vagy 3 | Egyik sem | 1/2/3 |
BRB-ken végrehajtott | s, k | Ág, ha állapotjelző van beállítva | ha (SREG(s) = 1), akkor PC←PC+k + 1 | Egyik sem | 1/2 |
BRBC | s, k | Elágazás, ha az állapotjelző törölve van | ha (SREG(s) = 0), akkor PC←PC+k + 1 | Egyik sem | 1/2 |
BREQ | k | Elágazás, ha egyenlő | ha (Z = 1), akkor PC ← PC + k + 1 | Egyik sem | 1/2 |
BRNE | k | Elágazás, ha nem egyenlő | ha (Z = 0), akkor PC ← PC + k + 1 | Egyik sem | 1/2 |
BRCS | k | Ág, ha hordozható szett | ha (C = 1), akkor PC ← PC + k + 1 | Egyik sem | 1/2 |
BRCC | k | Fióktelep, ha Carry törlődik | ha (C = 0), akkor PC ← PC + k + 1 | Egyik sem | 1/2 |
BRSH | k | Ág, ha azonos vagy magasabb | ha (C = 0), akkor PC ← PC + k + 1 | Egyik sem | 1/2 |
BRLO | k | Ág, ha alacsonyabb | ha (C = 1), akkor PC ← PC + k + 1 | Egyik sem | 1/2 |
BRMI | k | Ág, ha Mínusz | ha (N = 1), akkor PC ← PC + k + 1 | Egyik sem | 1/2 |
BRPL | k | Fióktelep, ha Plus | ha (N = 0), akkor PC ← PC + k + 1 | Egyik sem | 1/2 |
BRGE | k | Ág, ha nagyobb vagy egyenlő, aláírt | ha (N ⊕ V= 0), akkor PC ← PC + k + 1 | Egyik sem | 1/2 |
BRLT | k | Ág, ha kevesebb, mint nulla, aláírva | ha (N ⊕ V= 1), akkor PC ← PC + k + 1 | Egyik sem | 1/2 |
BRHS | k | Ág, ha félig hordozható zászló van beállítva | ha (H = 1), akkor PC ← PC + k + 1 | Egyik sem | 1/2 |
BRHC | k | Elágazás, ha a félig hordozó zászló kitisztul | ha (H = 0), akkor PC ← PC + k + 1 | Egyik sem | 1/2 |
BRTS | k | Ág, ha T zászló van beállítva | ha (T = 1), akkor PC ← PC + k + 1 | Egyik sem | 1/2 |
BRTC | k | Elágazás, ha a T zászló törölve van | ha (T = 0), akkor PC ← PC + k + 1 | Egyik sem | 1/2 |
BRVS | k | Elágazás, ha a túlcsordulási zászló be van állítva | ha (V = 1), akkor PC ← PC + k + 1 | Egyik sem | 1/2 |
BRVC | k | Elágazás, ha a túlcsordulási zászló törlődik | ha (V = 0), akkor PC ← PC + k + 1 | Egyik sem | 1/2 |
BRIE | k | Ág, ha a megszakítás engedélyezve van | ha ( I = 1), akkor PC ← PC + k + 1 | Egyik sem | 1/2 |
HÍD | k | Fiók, ha a megszakítás le van tiltva | ha ( I = 0), akkor PC ← PC + k + 1 | Egyik sem | 1/2 |
BIT ÉS BIT-TEST UTASÍTÁSOK | |||||
SBI | P, b | Állítsa be a bitet az I / O regiszterben | I/O(P,b) ← 1 | Egyik sem | 2 |
CBI | P, b | Tiszta bit az I / O regisztrációban | I/O(P,b) ← 0 | Egyik sem | 2 |
LSL | Rd | Logikai eltolás balra | Rd(n+1) ← Rd(n), Rd(0) ← 0 | Z, C, N, V | 1 |
LSR | Rd | Logikai eltolás jobbra | Rd(n) ← Rd(n+1), Rd(7) ← 0 | Z, C, N, V | 1 |
ROLE | Rd | Forgatás balra a hordozáson keresztül | Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) | Z, C, N, V | 1 |
ROR | Rd | Forgassa jobbra a hordozón keresztül | Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) | Z, C, N, V | 1 |
ASR | Rd | Számtani eltolás jobbra | Rd(n) ← Rd(n+1), n=0..6 | Z, C, N, V | 1 |
Mnemonika | Operandusok | Leírás | Művelet | Zászlók | # Órák |
CSERE | Rd | Cserélje ki a rágcsálnivalókat | Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) | Egyik sem | 1 |
BSET | s | Zászló beállítása | SREG(ek) ← 1 | SREG (ek) | 1 |
BCLR | s | Tiszta zászló | SREG(ek) ← 0 | SREG (ek) | 1 |
BST | Rr, szül | Bit Store regisztrációtól T-ig | T ← Rr(b) | T | 1 |
BLD | Rd, szül | Bitterhelés T-től Regisztrálásig | Rd(b) ← T | Egyik sem | 1 |
SEC | Set Carry | C ← 1 | C | 1 | |
CLC | Clear Carry | C ← 0 | C | 1 | |
SEN | Negatív zászló beállítása | N ← 1 | N | 1 | |
CLN | Tiszta negatív zászló | N ← 0 | N | 1 | |
SEZ | Állítsa be a Zero Flag elemet | Z ← 1 | Z | 1 | |
CLZ | Tiszta nulla zászló | Z ← 0 | Z | 1 | |
SEI | Globális megszakítás engedélyezése | Én ← 1 | I | 1 | |
CLI | Globális megszakítás letiltása | Én ← 0 | I | 1 | |
SES | Aláírt tesztjelző beállítása | S ← 1 | S | 1 | |
CLS | Törölje az aláírt tesztjelzőt | S ← 0 | S | 1 | |
SEV | Állítsa be a kettő kiegészítő túlcsordulást. | V ← 1 | V | 1 | |
CLV | Tiszta kettő kiegészítő túlcsordulás | V ← 0 | V | 1 | |
KÉSZLET | Állítsa be a T-t a SREG-ben | T ← 1 | T | 1 | |
CLT | Tiszta T a SREG-ben | T ← 0 | T | 1 | |
PSZ | Állítsa be a Halry Carry zászlót a SREG-ben | H ← 1 | H | 1 | |
CLH | Tiszta fél hord zászló a SREG-ben | H ← 0 | H | 1 | |
ADAT-ÁTADÁSI UTASÍTÁSOK | |||||
MOV | Rd, Rr | Mozgás a nyilvántartások között | Rd ← Rr | Egyik sem | 1 |
MOVW | Rd, Rr | A Word regisztráció másolása | Rd+1:Rd ← Rr+1:Rr | Egyik sem | 1 |
LDI | Rd, K. | Azonnali betöltés | Rd ← K | Egyik sem | 1 |
LD | Rd, X | Közvetett betöltés | Rd ← (X) | Egyik sem | 2 |
LD | Rd, X + | Közvetett és Post-Inc. Betöltése. | Rd ← (X), X ← X + 1 | Egyik sem | 2 |
LD | Rd, - X | Közvetett és december előtti betöltés. | X ← X – 1, Rd ← (X) | Egyik sem | 2 |
LD | Rd, Y | Közvetett betöltés | Rd ← (Y) | Egyik sem | 2 |
LD | Rd, Y + | Közvetett és Post-Inc. Betöltése. | Rd ← (Y), Y ← Y + 1 | Egyik sem | 2 |
LD | Rd, - Y | Közvetett és december előtti betöltés. | I ← I – 1, Rd ← (Y) | Egyik sem | 2 |
LDD | Rd, Y + q | Közvetett betöltés elmozdítással | Rd ← (Y + q) | Egyik sem | 2 |
LD | Rd, Z | Közvetett betöltés | Rd ← (Z) | Egyik sem | 2 |
LD | Rd, Z + | Közvetett és Post-Inc. Betöltése. | Rd ← (Z), Z ← Z+1 | Egyik sem | 2 |
LD | Rd, -Z | Közvetett és december előtti betöltés. | Z ← Z – 1, Rd ← (Z) | Egyik sem | 2 |
LDD | Rd, Z + q | Közvetett betöltés elmozdítással | Rd ← (Z + q) | Egyik sem | 2 |
LDS | Rd, k | Betöltés közvetlenül az SRAM-ból | Rd ← (k) | Egyik sem | 2 |
ST | X, Rr | Közvetett tárolás | (X) ← Rr | Egyik sem | 2 |
ST | X +, Rr | Store indirekt és post-inc. | (X) ← Rr, X ← X + 1 | Egyik sem | 2 |
ST | - X, Rr | Közvetett és december előtti tárolás. | X ← X – 1, (X) ← Rr | Egyik sem | 2 |
ST | Y, Rr | Közvetett tárolás | (Y) ← Rr | Egyik sem | 2 |
ST | Y +, Rr | Store indirekt és post-inc. | (Y) ← Rr, Y ← Y + 1 | Egyik sem | 2 |
ST | - Y, Rr | Közvetett és december előtti tárolás. | I ← I – 1, (Y) ← Rr | Egyik sem | 2 |
STD | Y + q, Rr | Közvetett tárolás elmozdítással | (Y + q) ← Rr | Egyik sem | 2 |
ST | Z, Rr | Közvetett tárolás | (Z) ← Rr | Egyik sem | 2 |
ST | Z +, Rr | Store indirekt és post-inc. | (Z) ← Rr, Z ← Z + 1 | Egyik sem | 2 |
ST | -Z, Rr | Közvetett és december előtti tárolás. | Z ← Z – 1, (Z) ← Rr | Egyik sem | 2 |
STD | Z + q, Rr | Közvetett tárolás elmozdítással | (Z + q) ← Rr | Egyik sem | 2 |
STS | k, Rr | Tárolja közvetlenül az SRAM-ba | (k) ← Rr | Egyik sem | 2 |
LPM | Programmemória betöltése | R0 ← (Z) | Egyik sem | 3 | |
LPM | Rd, Z | Programmemória betöltése | Rd ← (Z) | Egyik sem | 3 |
LPM | Rd, Z + | Programmemória és Post-Inc betöltése | Rd ← (Z), Z ← Z+1 | Egyik sem | 3 |
SPM | Tárolja a program memóriáját | (z) ← R1:R0 | Egyik sem | ||
IN | Rd., P. | Portban | Rd ← P | Egyik sem | 1 |
KI | P, Rr | Kikötő | P ← Rr | Egyik sem | 1 |
PUSH | Rr | Nyomja meg a Stack-et | FOGALOM ← Rr | Egyik sem | 2 |
POP | Rd | Pop regisztráció a veremből | Rd ← STACK | Egyik sem | 2 |
MCU VEZÉRLÉSI UTASÍTÁSOK | |||||
NOP | Nincs művelet | Egyik sem | 1 | ||
ALVÁS | Alvás | (lásd az Alvás funkció leírását) | Egyik sem | 1 | |
WDR | Watchdog Reset | (lásd a WDR / Timer leírását) | Egyik sem | 1 | |
SZÜNET | Szünet |
Sebesség (MHz) (1) | Supply Voltage (V) | Hőmérséklet tartomány | Csomag (2) | Rendelési kód (3) |
10 | 1.8 – 5.5 | Ipari
(-40 ° C és + 85 ° C között) (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 | Ipari
(-40 ° C és + 85 ° C között) (4) |
8P3 | ATtiny45-20PU |
8S2 | ATtiny45-20SU ATtiny45-20SUR
ATtiny45-20SH ATtiny45-20SHR |
|||
8X | ATtiny45-20XU ATtiny45-20XUR | |||
20M1 | ATtiny45-20MU ATtiny45-20MUR |
Megjegyzések: 1. A sebességhez és a kínálathoz kötettage, lásd a részt 21.3 “Sebesség”, 163. oldal.
Minden csomag Pb-mentes, halogenid-mentes és teljesen zöld, és megfelel a veszélyes anyagok korlátozásáról szóló európai irányelvnek (RoHS).
Kódjelzők
H: NiPdAu vezető felület
U: matt ón
R: szalag és orsó
Ezek az eszközök ostyák formájában is szállíthatók. A részletes rendelési információkért és a minimális mennyiségért forduljon az Atmel helyi értékesítési irodájához.
sajtóhiba
Errata ATtiny25
A szakasz felülvizsgálati levele az ATtiny25 eszköz felülvizsgálatára utal.
D - F rev
Nincs ismert hiba.
Rev. B - C
Az EEPROM leolvasása meghiúsulhat alacsony tápfeszültségnéltage / alacsony órajel frekvencia
Az EEPROM leolvasása meghiúsulhat alacsony tápfeszültségnéltage / alacsony órajel frekvencia
Próbálja olvasni az EEPROM -ot alacsony órajel -frekvencián és/vagy alacsony tápfeszültséggeltage érvénytelen adatokat eredményezhet.
Probléma javítása / megoldás
Ne használja az EEPROM -ot, ha az órajel frekvenciája 1MHz alatt van, és a tápfeszültségtage 2V alatt van. Ha az üzemi frekvenciát nem lehet 1MHz fölé emelni, akkor a tápfeszültségettage legyen több, mint 2V. Hasonlóképpen, ha a kínálat voltage nem emelhető 2V fölé, akkor az üzemi frekvenciának 1MHz -nél nagyobbnak kell lennie.
Ez a tulajdonság köztudottan hőmérsékletfüggő, de még nem jellemezték. Csak a szobahőmérsékletre vonatkoznak az irányelvek.
Rev. A
Nem sampvezette.
Errata ATtiny45
A szakasz felülvizsgálati levele az ATtiny45 eszköz felülvizsgálatára utal.
Rev F - G
Nincs ismert hiba
Rev. D - E
Az EEPROM leolvasása meghiúsulhat alacsony tápfeszültségnéltage / alacsony órajel frekvencia
Az EEPROM leolvasása meghiúsulhat alacsony tápfeszültségnéltage / alacsony órajel frekvencia
Próbálja olvasni az EEPROM -ot alacsony órajel -frekvencián és/vagy alacsony tápfeszültséggeltage érvénytelen adatokat eredményezhet.
Probléma javítása / megoldás
Ne használja az EEPROM -ot, ha az órajel frekvenciája 1MHz alatt van, és a tápfeszültségtage 2V alatt van. Ha az üzemi frekvenciát nem lehet 1MHz fölé emelni, akkor a tápfeszültségettage legyen több, mint 2V. Hasonlóképpen, ha a kínálat voltage nem emelhető 2V fölé, akkor az üzemi frekvenciának 1MHz -nél nagyobbnak kell lennie.
Ez a tulajdonság köztudottan hőmérsékletfüggő, de még nem jellemezték. Csak a szobahőmérsékletre vonatkoznak az irányelvek.
Rev. B - C
A PLL nem zár
Az alkalmazáskódból olvasott EEPROM nem működik a Lock Bit 3 módban
Az EEPROM leolvasása meghiúsulhat alacsony tápfeszültségnéltage / alacsony órajel frekvencia
1. időzítő számláló PWM kimenet generálása az OC1B-XOC1B készüléken nem működik megfelelően
A PLL nem zár
6.0 MHz alatti frekvenciákon a PLL nem zárolódik
Probléma megoldása / megoldás
A PLL használatakor futtasson 6.0 MHz vagy annál magasabb frekvencián.
Az alkalmazáskódból olvasott EEPROM nem működik a Lock Bit 3 módban
Ha az LB2 és LB1 memóriazáró biteket a 3. módba programozza, az EEPROM olvasás nem működik az alkalmazás kódjából.
Probléma kijavítása / megkerülése
Ne állítsa be a Lock Bit Protection Mode 3 módot, amikor az alkalmazás kódját be kell olvasni az EEPROM-ból.
Az EEPROM leolvasása meghiúsulhat alacsony tápfeszültségnéltage / alacsony órajel frekvencia
Próbálja olvasni az EEPROM -ot alacsony órajel -frekvencián és/vagy alacsony tápfeszültséggeltage érvénytelen adatokat eredményezhet.
Probléma javítása / megoldás
Ne használja az EEPROM -ot, ha az órajel frekvenciája 1MHz alatt van, és a tápfeszültségtage 2V alatt van. Ha az üzemi frekvenciát nem lehet 1MHz fölé emelni, akkor a tápfeszültségettage legyen több, mint 2V. Hasonlóképpen, ha a kínálat voltage nem emelhető 2V fölé, akkor az üzemi frekvenciának 1MHz -nél nagyobbnak kell lennie.
Ez a tulajdonság köztudottan hőmérsékletfüggő, de még nem jellemezték. Csak a szobahőmérsékletre vonatkoznak az irányelvek.
1. időzítő számláló PWM kimenet generálása az OC1B - XOC1B készüléken nem működik megfelelően
Timer Counter1 PWM kimenet OC1B-XOC1B nem működik megfelelően. Csak abban az esetben, ha a vezérlőbitek, a COM1B1 és a COM1B0 ugyanabban az üzemmódban vannak, mint a COM1A1 és a COM1A0, az OC1B-XOC1B kimenet megfelelően működik.
Probléma kijavítása / megkerülése
Az egyetlen megoldás az, hogy ugyanazokat a vezérlési beállításokat használja a COM1A [1: 0] és a COM1B [1: 0] vezérlő biteken, lásd az adatlap 14-4. Táblázatát. A probléma megoldódott a Tiny45 rev D esetében.
Rev. A
Túl nagy energiafogyasztás
A DebugWIRE elveszíti a kommunikációt, amikor egyetlen belép a megszakításokba
A PLL nem zár
Az alkalmazáskódból olvasott EEPROM nem működik a Lock Bit 3 módban
Az EEPROM leolvasása meghiúsulhat alacsony tápfeszültségnéltage / alacsony órajel frekvencia
Túl nagy energiafogyasztás
Három helyzet vezet túl nagy energiafogyasztáshoz. Ezek:
Egy külső órát biztosítók választanak ki, de az I / O PORT kimenetként továbbra is engedélyezve van.
Az EEPROM-ot leolvassák, mielőtt bekapcsolnák.
A VCC 4.5 volt vagy nagyobb.
Felelősség kizárása: A jelen dokumentumban szereplő információk az Atmel termékekkel kapcsolatban állnak rendelkezésre. Ez a dokumentum vagy az Atmel-termékek értékesítésével kapcsolatban semmilyen szellemi tulajdonjogra nem adnak kifejezett vagy hallgatólagos engedélyt, sem estoppel, sem más módon. KIVÉVE AZ ATMEL AZ ATMEL-EN ELHELYEZETT ÉRTÉKESÍTÉSI FELTÉTELEKBEN BIZTOSÍTOTT FELTÉTELEKET. WEBAZ ATMEL SEMMILYEN FELELŐSSÉGET NEM VÁLLAL TERMÉKEIRE VONATKOZÓAN, ÉS MINDEN KIFEJEZETT, VÉLELMEZETT VAGY TÖRVÉNYES GARANCIÁT KÖZÖTT BELEÉRTVE A KERESKEDELHETŐSÉGRE, A FORGALMAZHATÓSÁGRA VONATKOZÓ P-SZÁLLÍTÁSRA VONATKOZÓ VÉLEMÉRETETT GARANCIÁT, DE NEM KIZÁRÓLAG. Az ATMEL SEMMILYEN ESETÉN NEM VÁLLAL FELELŐSSÉGET SEMMILYEN KÖZVETLEN, KÖZVETETT, KÖVETKEZMÉNYES, BÜNTETŐ, KÜLÖNLEGES VAGY VÉLETLEN KÁROKÉRT (BEÉLETETETT KORLÁTOZAT NÉLKÜL A VESZTESÉG ÉS NYERESÉG, A HASZNÁLATI SZAKADÁS, ÜZLETI FORMÁCIÓK SZABADULÁSA, EZT A DOKUMENTUMT, MÉG HA AZ ATMEL AZ ILYEN KÁROK LEHETŐSÉGÉRŐL TÁJÉKOZTATVA VOLT.
Az Atmel nem vállal felelősséget vagy garanciát a jelen dokumentum tartalmának pontosságára vagy teljességére vonatkozóan, és fenntartja a jogot, hogy előzetes értesítés nélkül bármikor módosítsa a specifikációkat és a termékleírásokat. Az Atmel nem vállal kötelezettséget az itt található információk frissítésére. Hacsak másként nem rendelkezik, az Atmel termékek nem alkalmasak autóipari alkalmazásokra, és nem használhatók azokban. Az Atmel-termékeket nem tervezték, nem engedélyezték vagy nem garantálják az élet fenntartását vagy fenntartását szolgáló alkalmazások alkatrészeinek felhasználására.