Atmel 8-бит AVR микроконтроллери 2/4/8К байт тутумдагы программалануучу жарк.
Өзгөчөлүктөрү
- Жогорку өндүрүмдүүлүк, аз кубаттуулуктагы AVR® 8-бит микроконтроллери
- Өркүндөтүлгөн RISC архитектурасы
- 120 Күчтүү көрсөтмө - Көпчүлүк бир сааттык циклдин аткарылышы
- 32 х 8 Жалпы Максаттагы Жумушчу Реестрлер
- Толугу менен туруктуу иш
- Туруктуу эмес программа жана маалымат эс тутумдары
- 2/4/8К байт тутумдагы программалануучу программанын эс тутумунун жарыгы
- Чыдамдуулук: 10,000 XNUMX жазуу/тазалоо циклдери
- 128/256/512 байт тутумдагы программалануучу EEPROM
- Чыдамдуулук: 100,000 XNUMX жазуу/тазалоо циклдери
- 128/256/512 байт ички SRAM
- Өзүн-өзү программалоочу Flash программасы жана EEPROM маалыматтарынын коопсуздугу үчүн программалоо кулпусу
Перифериялык өзгөчөлүктөр
- Prescaler жана эки PWM каналы бар 8-бит таймер/эсептегич
- 8 биттик жогорку ылдамдыктагы таймер/эсептегич, өзүнчө алдын ала масштабдагыч
- 2 Жогорку жыштыктагы PWM чыгышы өзүнчө чыгышы менен салыштыруу регистрлери
- Программалануучу өлүк убакыт генератору
- USI – Башталгыч абалды аныктоочу универсалдуу сериялык интерфейс
- 10-бит ADC
4 Бирдиктүү Канал
Программалануучу пайда менен 2 дифференциалдык ADC канал жуптары (1x, 20x)
Температураны өлчөө
Айрым чиптеги осциллятору бар программалануучу Күзөт Таймери
Чиптеги аналогдук салыштыргыч
Микроконтроллердин атайын өзгөчөлүктөрү
debugWIRE On-chip Debug System
SPI порту аркылуу тутумда программалануучу
Тышкы жана Ички Үзгүлтүк Булактары
Төмөн кубат Бош режими, ADC ызы-чуусун азайтуу жана өчүрүү режимдери
Күчтүү күйгүзүлгөн баштапкы абалга келтирүү схемасы
Программалануучу Brown-out Detection Circuit
Ички калибрленген осциллятор
I / O жана Топтомдор
Алты программалануучу I/O линиясы
8-pin PDIP, 8-pin SOIC, 20-пад QFN/MLF жана 8-pin TSSOP (ATtiny45/V гана)
Operating Voltage
– ATtiny1.8V/5.5V/25V үчүн 45 – 85V
– ATtiny2.7/5.5/25 үчүн 45 – 85V
Speed Grade
– ATtiny25V/45V/85V: 0 – 4 МГц @ 1.8 – 5.5 В, 0 – 10 МГц @ 2.7 – 5.5 В
– ATtiny25/45/85: 0 – 10 МГц @ 2.7 – 5.5 В, 0 – 20 МГц @ 4.5 – 5.5 В
Өнөр жай температура диапазону
Төмөн энергия керектөө
Активдүү режим:
1 МГц, 1.8 В: 300 мкА
Өчүрүү режими:
Конфигурацияларды бекитүү
Pinout ATtiny25/45/85
Сүрөттөмөлөр
VCC: Supply voltage.
GND: Жер.
B порту (PB5:PB0): В порту - бул ички тартылуучу резисторлору бар 6 биттик эки багыттуу киргизүү/чыгаруу порту (ар бир бит үчүн тандалган). Порт B чыгаруу буферлери симметриялуу диск өзгөчөлүктөрүнө ээ жана жогорку чөгүп кетүү жана булак мүмкүнчүлүктөрү бар. Киргизүү катары, сырттан төмөн тартылуучу порт B пиндери, эгерде тартылуучу резисторлор иштетилген болсо, токтун булагы болот. Порт B пиндери саат иштебесе дагы, баштапкы абалга келтирүү шарты активдүү болгондо үч жолу көрсөтүлөт.
Порт B ошондой эле тизмеленген ATtiny25/45/85 ар кандай өзгөчөлүктөрүнүн функцияларын аткарат
ATtiny25те программалануучу киргизүү/чыгаруу порттору PB3 жана PB4 (2 жана 3 пиндер) ATtiny15 менен артка шайкеш келүүнү колдоо үчүн ATtiny15 шайкештик режиминде алмашышат.
RESET: Киргизүүнү баштапкы абалга келтирүү. Бул пинде минималдуу импульс узундугунан узунураак төмөн деңгээл саат иштебесе жана баштапкы абалга келтирүүчү пин өчүрүлбөсө дагы баштапкы абалга келтирүүнү жаратат. Минималдуу импульс узундугу келтирилген Таблица 21-4 165-бетте. Кыскараак импульстар баштапкы абалга келтирүүгө кепилдик берилбейт.
Калыбына келтирүү пинди (алсыз) киргизүү/чыгаруу пин катары да колдонсо болот.
Бүттүview
ATtiny25/45/85 AVR өркүндөтүлгөн RISC архитектурасына негизделген аз кубаттуу CMOS 8-бит микроконтроллери. Күчтүү инструкцияларды бир сааттык циклде аткаруу менен ATtiny25/45/85 МГцке 1 MIPSке жакын өткөрүү жөндөмдүүлүгүнө жетишет, бул системанын дизайнерине иштетүү ылдамдыгына каршы энергия керектөөнү оптималдаштырууга мүмкүндүк берет.
Блок-схема
AVR өзөгү 32 жалпы максаттагы жумушчу регистрлер менен бай нускамаларды бириктирет. Бардык 32 регистр арифметикалык логикалык бирдикке (ALU) түздөн-түз туташтырылып, эки көз карандысыз регистрге бир сааттык циклде аткарылган бир нускамада кирүүгө мүмкүндүк берет. Алынган архитектура CISC микроконтроллерлерине караганда он эсеге тезирээк өткөрүү жөндөмдүүлүгүнө жетишүү менен кодду натыйжалуураак кылат.
ATtiny25/45/85 төмөнкү өзгөчөлүктөр менен камсыз кылат: 2/4/8К байт тутумдагы программалануучу Flash, 128/256/512 байт EEPROM, 128/256/256 байт SRAM, 6 жалпы багыттагы киргизүү/чыгаруу линиясы, 32 жалпы максаттуу жумушчу регистрлер, салыштыруу режимдери бар бир 8 биттик таймер/эсептегич, бир 8 биттик жогорку ылдамдыктагы таймер/эсептегич, универсалдуу сериялык интерфейс, ички жана тышкы үзгүлтүктөр, 4 каналдуу, 10 биттик ADC, ички программалоочу Watchdog таймери Oscillator, жана үч программалык тандалма энергия үнөмдөө режимдери. Күтүү режими процессорду токтотуп, SRAM, Таймер/Счетчик, ADC, Аналогдук салыштыргыч жана үзгүлтүккө учуратуу тутумунун ишин улантууга мүмкүндүк берет. Өчүрүү режими реестрдин мазмунун сактап, кийинки үзгүлтүккө же Аппараттык жабдыкты баштапкы абалга келтирүүгө чейин бардык чип функцияларын өчүрөт. ADC ызы-чуусун азайтуу режими ADC конвертацияларында которуштуруп ызы-чууларды азайтуу үчүн CPU жана ADCден башка бардык киргизүү/чыгарма модулдарын токтотот.
Аппарат Atmelдин жогорку тыгыздыктагы туруксуз эс тутум технологиясын колдонуу менен өндүрүлгөн. Чиптеги ISP Flash программасы эс тутумун SPI сериялык интерфейси аркылуу, кадимки туруксуз эстутум программисти же AVR өзөгүндө иштеген чиптеги жүктөө коду аркылуу кайра программалоого мүмкүндүк берет.
ATtiny25/45/85 AVR программаны жана системаны иштеп чыгуу куралдарынын толук топтому менен колдоого алынат, анын ичинде: C Компиляторлору, Макро Ассемблерлер, Программа Debugger/Simulators жана Баалоо комплекттери.
Ресурстар жөнүндө
Иштеп чыгуу куралдарынын комплекстүү топтому, колдонмо ноталары жана маалымат баракчалары жүктөлүп алынат http://www.atmel.com/avr.
Code Examples
Бул документтерде жөнөкөй код барamples ар кандай бөлүктөрүн кантип колдонууну кыскача көрсөтөт. Бул код examples бөлүктүн белгилүү бир башы деп ойлошот file компиляциядан мурун камтылган. Бардык C компиляторунун сатуучулары баш сөздө бит аныктамаларын камтыбайт files жана C тилинде үзгүлтүктөр менен иштөө компиляторго көз каранды. Көбүрөөк маалымат алуу үчүн C компиляторунун документтери менен ырастаңыз.
Кеңейтилген киргизүү/чыгаруу картасында жайгашкан киргизүү/чыгаруу регистрлери үчүн "IN", "OUT", "SBIS", "SBIC", "CBI" жана "SBI" инструкциялары кеңейтилген I'ге кирүүгө мүмкүндүк берүүчү нускамалар менен алмаштырылышы керек. /О. Адатта, бул "SBRS", "SBRC", "SBR" жана "CBR" менен айкалышкан "LDS" жана "STS" дегенди билдирет. Бардык AVR түзмөктөрүнүн кеңейтилген киргизүү/чыгаруу картасы камтылбагандыгын эске алыңыз.
Capacitive Touch Sensing
Atmel QTouch Library Atmel AVR микроконтроллерлеринде сенсордук интерфейстер үчүн колдонууга жөнөкөй чечимди камсыз кылат. QTouch китепканасы QTouch® жана QMatrix® алуу ыкмаларын колдоону камтыйт.
Сенсордук сенсордук QTouch китепканасын байланыштыруу жана сенсордук каналдарды жана сенсорлорду аныктоо үчүн китепкананын Колдонмо программалоо интерфейсин (API) колдонуу аркылуу каалаган тиркемеге оңой кошулат. Андан кийин колдонмо канал маалыматын алуу жана сенсордук сенсордун абалын аныктоо үчүн APIди чакырат.
QTouch китепканасы акысыз жана аны Atmelден жүктөп алса болот webсайт. Көбүрөөк маалымат жана ишке ашыруу чоо-жайы үчүн, QTouch Library Колдонуучунун колдонмосун караңыз - ошондой эле Atmel'ден жеткиликтүү webсайт.
Маалыматтарды сактоо
Ишенимдүүлүк Квалификациянын натыйжалары болжолдонгон маалыматтардын сакталбай калуу ылдамдыгы 1°Cде 20 жыл ичинде 85 PPM же 100°Cде 25 жылдан алда канча аз экенин көрсөтүп турат.
AVR CPU ядросу
Introduction
Бул бөлүмдө жалпысынан AVR негизги архитектурасы талкууланат. CPU ядросунун негизги милдети программанын туура аткарылышын камсыз кылуу болуп саналат. Ошондуктан CPU эстутумдарга кирүү, эсептөөлөрдү жүргүзүү, перифериялык түзүлүштөрдү башкаруу жана үзгүлтүктөрдү башкаруу мүмкүнчүлүгүнө ээ болушу керек.
Архитектуралык аяктадыview
Өндүрүмдүүлүктү жана параллелдүүлүктү жогорулатуу үчүн AVR Гарвард архитектурасын колдонот - өзүнчө эс тутумдар жана программа жана маалыматтар үчүн автобустар. Программанын эсиндеги инструкциялар бир деңгээлдеги трубопровод менен аткарылат. Бир нускама аткарылып жатканда, кийинки инструкция Программанын эсинен алдын ала алынып салынат. Бул концепция инструкцияларды ар бир саат циклинде аткарууга мүмкүндүк берет. Программанын эс тутуму тутумдагы кайра программалануучу флеш эс тутуму болуп саналат.
Тез жетүү реестри File 32 х 8 биттик жалпы максаттагы жумушчу регистрлерди камтыйт, бир сааттык циклге кирүү убактысы. Бул бир циклдуу Арифметикалык Логикалык Биримдиктин (ALU) иштөөсүнө мүмкүндүк берет. Кадимки ALU операциясында реестрден эки операнд чыгарылат File, операция аткарылат жана натыйжа кайра Реестрде сакталат File– бир сааттык циклде.
32 регистрдин алтоосу Data Space дарегине үч 16 биттик кыйыр дарек регистр көрсөткүчү катары колдонулушу мүмкүн – бул даректи эффективдүү эсептөөгө мүмкүндүк берет. Бул дарек көрсөткүчтөрүнүн бири Flash программасынын эс тутумундагы таблицаларды издөө үчүн дарек көрсөткүчү катары да колдонулушу мүмкүн. Бул кошумча функция регистрлери бул бөлүмдө кийинчерээк сүрөттөлгөн 16 биттик X-, Y- жана Z-регистрлер.
ALU регистрлердин же константа менен регистрдин ортосундагы арифметикалык жана логикалык операцияларды колдойт. Бирдиктүү реестр операциялары ALUда да аткарылышы мүмкүн. Арифметикалык операциядан кийин Статус реестри операциянын натыйжасы жөнүндө маалыматты чагылдыруу үчүн жаңыланат.
Программанын агымы шарттуу жана шартсыз секирүү жана чакыруу инструкциялары менен камсыз кылынат, бүт дарек мейкиндигине түздөн-түз кайрыла алат. Көпчүлүк AVR нускамаларында бир 16 биттик сөз форматы бар, бирок 32 биттик нускамалар да бар.
Үзгүлтүктөрдүн жана субпрограммалык чалуулардын учурунда программалык эсептегичтин (PC) кайтаруу дареги стекте сакталат. Стек жалпы SRAM маалыматтарында натыйжалуу бөлүштүрүлөт, демек, Стектин көлөмү жалпы SRAM өлчөмү жана SRAMдын колдонулушу менен гана чектелет. Колдонуучунун бардык программалары SPти Калыбына келтирүү тартибинде инициализациялоосу керек (подрутиндер же үзгүлтүккө учураганга чейин). Stack Pointer (SP) киргизүү/чыгаруу мейкиндигинде окуу/жазууга жеткиликтүү. SRAM маалыматтарына AVR архитектурасында колдоого алынган беш түрдүү даректөө режимдери аркылуу оңой жетүүгө болот.
AVR архитектурасындагы эс мейкиндиктери бардыгы сызыктуу жана кадимки эс тутум карталары.
Ийкемдүү үзгүлтүккө учуратуу модулунун киргизүү/чыгарма мейкиндигинде башкаруу регистрлери бар, Статус реестринде кошумча Глобалдык үзгүлтүктү иштетүү бит. Бардык үзгүлтүктөр Үзүлүү векторунун таблицасында өзүнчө Үзүлүү векторуна ээ. Үзгүлтүктөрдүн Вектордук позициясына жараша артыкчылыктары бар. Interrupt Vector дареги канчалык төмөн болсо, ошончолук артыкчылык жогору болот.
Киргизүү/чыгаруу эс тутуму башкаруу регистрлери, SPI жана башка киргизүү/чыгаруу функциялары сыяктуу CPU перифериялык функциялары үчүн 64 даректи камтыйт. Киргизүү/чыгаруу эстутумуна түздөн-түз же Реестрден кийинки маалыматтар мейкиндигинин жайгашкан жери катары кирүүгө болот File, 0x20 – 0x5F.
ALU – арифметикалык логикалык бирдик
Жогорку өндүрүмдүүлүктөгү AVR ALU бардык 32 жалпы максаттагы жумушчу регистрлер менен түздөн-түз байланышта иштейт. Бир сааттык циклдин ичинде жалпы максаттагы регистрлер же регистр менен дароо ортосундагы арифметикалык операциялар аткарылат. ALU операциялары үч негизги категорияга бөлүнөт – арифметикалык, логикалык жана бит-функциялар. Архитектуранын кээ бир ишке ашыруулары да кол коюлган/кол коюлбаган көбөйтүүнү жана бөлчөк форматты колдогон күчтүү мультипликаторду камсыз кылат. Толук сүрөттөмө алуу үчүн "Нускоочу топтом" бөлүмүн караңыз.
Статус реестри
Статус реестринде эң акыркы аткарылган арифметикалык инструкциянын натыйжасы жөнүндө маалымат камтылган. Бул маалымат шарттуу операцияларды аткаруу үчүн программанын агымын өзгөртүү үчүн колдонулушу мүмкүн. Статус реестри Инструкциялар топтомунун маалымдамасында көрсөтүлгөндөй, бардык ALU операцияларынан кийин жаңыланарын эске алыңыз. Бул көп учурларда атайын салыштыруу инструкцияларын колдонуу зарылдыгын жок кылат, натыйжада тезирээк жана компакттуу код пайда болот.
Статус реестри үзүлүү тартибине киргенде автоматтык түрдө сакталбайт жана үзгүлтүктөн кайтып келгенде калыбына келтирилет. Бул программалык камсыздоо менен чечилиши керек.
SREG – AVR статусу реестри
AVR Статус Реестри – SREG – төмөнкүдөй аныкталат:
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3F | I | T | H | S | V | N | Z | C | SREG |
Окуу/Жазуу | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Баштапкы маани | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Бит 7 – I: Глобалдык үзгүлтүктөрдү иштетүү
Үзгүлтүктөрдү иштетүү үчүн Глобалдык үзгүлтүктү иштетүү бити коюлушу керек. Жеке үзгүлтүккө учуратуу башкаруу андан кийин өзүнчө башкаруу регистрлеринде аткарылат. Эгерде глобалдык үзгүлтүктү иштетүү реестри тазаланса, үзгүлтүктөрдү иштетүүнүн жеке орнотууларынан көз карандысыз эч кимиси иштетилбейт. I-бит үзгүлтүккө учурагандан кийин аппараттык камсыздоо тарабынан тазаланат жана кийинки үзгүлтүктөрдү иштетүү үчүн RETI инструкциясы тарабынан коюлат. I-битти SEI жана CLI инструкциялары менен тиркеме тарабынан орнотууга жана тазалоого болот, инструкциялар топтомунун маалымдамасында сүрөттөлгөндөй.
Bit 6 - T: Бит көчүрмөсүн сактоо
Bit Copy нускамалары BLD (Bit LoaD) жана BST (Bit STore) T-битти иштетилген бит үчүн булак же көздөгөн жер катары колдонушат. Реестрдеги реестрден бир аз File BST инструкциясы менен T ге көчүрүүгө болот, ал эми Т битти Реестрдеги реестрдеги битке көчүрүүгө болот File BLD көрсөтмөсү боюнча.
5-бит – H: Жарым алып жүрүүчү желек
Flaf Carry Flag H кээ бир арифметикалык операцияларда Half Carry билдирет. Half Carry BCD арифметикасында пайдалуу. Көбүрөөк маалымат алуу үчүн "Нускоочу топтомун сүрөттөмөсүн" караңыз.
Бит 4 – S: Бит белгиси, S = N ⊕ V
S-бит ар дайым эксклюзивдик же Терс Flag N менен Экөөнүн Толуктоо Толуп кеткен Flag V ортосунда болот. Толук маалымат үчүн “Нускоочу топтомдун сүрөттөлүшүн” караңыз.
Бит 3 – V: Экинин толуктоосунун толуп кетиши
Экинин толуктоочунун толуп кетиши V Flag экинин толуктоочу арифметикасын колдойт. Көбүрөөк маалымат алуу үчүн "Нускоочу топтомун сүрөттөмөсүн" караңыз.
2-бит – N: Терс желек
Терс Flag N арифметикалык же логикалык операцияда терс натыйжаны көрсөтөт. Көбүрөөк маалымат алуу үчүн "Нускоочу топтомун сүрөттөмөсүн" караңыз.
Bit 1 – Z: Zero Flag
Zero Flag Z арифметикалык же логикалык операцияда нөл натыйжаны көрсөтөт. Көбүрөөк маалымат алуу үчүн "Нускоочу топтомун сүрөттөмөсүн" караңыз.
Bit 0 – C: Желек алып жүрүү
Carry Flag C арифметикалык же логикалык операцияда алып жүрүүнү көрсөтөт. Көбүрөөк маалымат алуу үчүн "Нускоочу топтомун сүрөттөмөсүн" караңыз.
Жалпы максаттуу реестр File
Каттоо File AVR Enhanced RISC нускама топтому үчүн оптималдаштырылган. Керектүү натыйжалуулукка жана ийкемдүүлүккө жетүү үчүн, төмөнкү киргизүү/чыгарма схемалары Реестр тарабынан колдоого алынат. File:
Бир 8-бит чыгаруу операнд жана бир 8-бит натыйжа киргизүү
Эки 8 биттик чыгаруу операнддары жана бир 8 биттик жыйынтык киргизүү
Эки 8 биттик чыгаруу операнддары жана бир 16 биттик жыйынтык киргизүү
Бир 16-бит чыгаруу операнд жана бир 16-бит натыйжа киргизүү
4-2-сүрөт CPUдагы 32 жалпы максаттагы жумушчу регистрлердин түзүмүн көрсөтөт.
көрсөтүлгөндөй 4-2-сүрөт, ар бир регистрге маалымат эстутум дареги ыйгарылат, аларды түздөн-түз колдонуучунун Data Space биринчи 32 жерине түшүрөт. SRAM локациялары катары физикалык жактан ишке ашырылбаса да, бул эстутум уюму регистрлерге жетүү үчүн чоң ийкемдүүлүктү камсыз кылат, анткени X-, Y- жана Z-көрсөткүч регистрлерин каалаган регистрде индекстөө үчүн коюуга болот. file.Рестрде иштеген нускамалардын көбү File бардык регистрлерге түздөн-түз кирүү мүмкүнчүлүгү бар жана алардын көбү бир циклдик нускамалар.
X-регистр, Y-регистр жана Z-регистр
R26..R31 регистрлери жалпы максатта колдонууга кошумча функцияларга ээ. Бул регистрлер маалымат мейкиндигин кыйыр даректөө үчүн 16 биттик дарек көрсөткүчтөрү болуп саналат. X, Y жана Z үч кыйыр дарек регистрлери сүрөттөлгөндөй аныкталат 4-3-сүрөт.
Ар кандай даректөө режимдеринде бул дарек регистрлери белгиленген орун алмаштыруу, автоматтык көбөйтүү жана автоматтык азайтуу сыяктуу функцияларды аткарат (толук маалымат үчүн нускама топтомун караңыз).
Stack Pointer
Stack негизинен убактылуу маалыматтарды сактоо үчүн, локалдык өзгөрмөлөрдү сактоо үчүн жана үзгүлтүктөрдөн жана субпрограммалык чалуулардан кийин кайтаруу даректерин сактоо үчүн колдонулат. Стек көрсөткүчүнүн реестри ар дайым стектин чокусун көрсөтөт. Эсиңизде болсун, Stack эстутумдун жогору жайгашкан жерлеринен төмөнкү эстутумдун жерлерине чейин өсүүдө. Бул Stack PUSH буйругу Stack Pointerди азайтат дегенди билдирет.
Стек көрсөткүчү подпрограмма жана үзгүлтүктүү стектер жайгашкан берилиштердин SRAM стек аймагын көрсөтөт. Берилиштер SRAMдагы бул Стек мейкиндиги программа тарабынан ар кандай подпрограммалык чалуулар аткарылганга же үзгүлтүккө учураганга чейин аныкталышы керек. Стек көрсөткүчү 0x60тан жогору болушу керек. Маалыматтар PUSH инструкциясы менен Стекке түртүлгөндө Stack Pointer бирге азаят, ал эми кайтаруу дареги подпрограммалык чалуу же үзгүлтүк менен Стекке түртүлгөндө экиге азаят. Стек көрсөткүчү POP инструкциясы менен Стектен маалыматтар чыгарылганда бир көбөйөт жана RET подпрограммасынан кайтып келгенде же RETI үзгүлтүкүнөн кайтып келгенде, Стектен маалыматтар чыгарылганда экиге көбөйөт.
AVR Stack Pointer I/O мейкиндигинде эки 8-бит регистр катары ишке ашырылат. Иш жүзүндө колдонулган биттердин саны ишке ашырууга көз каранды. AVR архитектурасынын кээ бир ишке ашырууларында маалымат мейкиндиги ушунчалык кичинекей болгондуктан, SPL гана талап кылынарын эске алыңыз. Бул учурда, SPH реестри болбойт.
SPH жана SPL — Stack Pointer реестри
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 | ||
Окуу/Жазуу | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Окуу/Жазуу | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Баштапкы маани | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | |
Баштапкы маани | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND |
Инструкцияны аткаруу убактысы
Бул бөлүмдө нускамаларды аткаруу үчүн кирүү убактысынын жалпы түшүнүктөрү сүрөттөлөт. AVR CPU CPU сааты clkCPU тарабынан башкарылат, чип үчүн тандалган саат булагынан түз түзүлөт. Ички саат бөлүү колдонулбайт.
4-4-сүрөт Гарвард архитектурасы жана тез жетүү реестри тарабынан иштетилген параллелдүү нускамаларды алууларды жана нускамаларды аткарууну көрсөтөт File түшүнүк. Бул МГц үчүн 1 MIPSке чейин алуу үчүн негизги концепция концепциясы болуп саналат, баасына функциялар, сааттар боюнча функциялар жана кубаттуулук бирдигине функциялар боюнча тиешелүү уникалдуу натыйжалар.
Сүрөт 4-5. Sing Cycle ALU операциясы
Баштапкы абалга келтирүү жана иштетүүнү үзгүлтүккө учуратуу
AVR бир нече ар кандай үзгүлтүктөр булактарын камсыз кылат. Бул үзгүлтүктөр жана өзүнчө Калыбына келтирүү векторунун ар бири Программанын эс тутум мейкиндигинде өзүнчө Программа векторуна ээ. Бардык үзгүлтүктөргө жекече иштетүү биттери ыйгарылган, алар үзгүлтүктү иштетүү үчүн Статус реестринде Глобалдык үзгүлтүккө учуратуу бити менен бирге логикалык бир жазуу болушу керек.
Программанын эс тутумунун мейкиндигиндеги эң төмөнкү даректер демейки боюнча баштапкы абалга келтирүү жана үзгүлтүккө учуратуу векторлору катары аныкталат. векторлордун толук тизмеси көрсөтүлгөн «Үзгүлтүккө учуратуу» 48-бетте. Тизме ошондой эле ар кандай үзгүлтүктөрдүн артыкчылыктуу деңгээлин аныктайт. Дарек канчалык төмөн болсо, артыкчылык деңгээли ошончолук жогору болот. RESET эң жогорку артыкчылыкка ээ, ал эми кийинки INT0 – тышкы үзгүлтүккө суроо 0.
Үзгүлтүк пайда болгондо, Global Interrupt Enable I-бит тазаланат жана бардык үзгүлтүктөр өчүрүлөт. Колдонуучу программалык камсыздоо уяланган үзгүлтүктөрдү иштетүү үчүн I-битке логиканы жаза алат. Бардык иштетилген үзгүлтүктөр андан кийин учурдагы үзгүлтүккө учуратуу тартибин үзгүлтүккө учуратышы мүмкүн. I-бит автоматтык түрдө Үзгүлтүктөн кайтып келүү буйругу – RETI – аткарылганда орнотулат.
Негизинен үзгүлтүктөрдүн эки түрү бар. Биринчи түрү үзгүлтүккө учуроо желекчесин орноткон окуя менен ишке ашырылат. Бул үзгүлтүктөр үчүн Программа эсептегичи үзгүлтүктөрдү иштетүү тартибин аткаруу үчүн анык Үзүлүү векторуна векторланат жана аппараттык камсыздоо тиешелүү Үзгүлтүктөрдүн желекчесин тазалайт. Үзгүлтүккө учуратуу желекчелери тазалана турган желектин бит позициясына(лар) логикалык жазууну жазуу менен да тазаланышы мүмкүн. Эгерде үзгүлтүккө учуратуу шарты тиешелүү үзгүлтүктөрдү иштетүү бит тазаланганда пайда болсо, үзгүлтүккө учуратуу желекчеси орнотулуп, үзгүлтүккө учураганга чейин же желек программалык камсыздоо тарабынан тазаланганга чейин сакталып калат. Ошо сыяктуу эле, Глобалдык үзгүлтүккө учуратуу бити тазаланганда бир же бир нече үзгүлтүккө учураса, тиешелүү үзгүлтүккө учуроо желекчеси коюлуп, Глобалдык үзгүлтүккө учуратуу бити орнотулганга чейин эсте калат жана андан кийин артыкчылык тартиби боюнча аткарылат.
Үзгүлтүктөрдүн экинчи түрү үзгүлтүккө учураган шартта иштей берет. Бул үзгүлтүктөр сөзсүз түрдө үзгүлтүккө ээ эмес. Үзгүлтүк иштетилгенге чейин үзүлүү шарты жок болуп кетсе, үзгүлтүккө учурабайт.
AVR үзгүлтүктөн чыкканда, ал ар дайым негизги программага кайтып келет жана күтүлүп жаткан үзгүлтүккө чейин дагы бир нускаманы аткарат.
Статус реестри үзгүлтүккө учуратуу тартибине киргенде автоматтык түрдө сакталбай тургандыгын жана үзгүлтүккө учуроо тартибинен кайтып келгенде калыбына келтирилбей турганын эске алыңыз. Бул программалык камсыздоо менен чечилиши керек.
Үзгүлтүктөрдү өчүрүү үчүн CLI инструкциясын колдонгондо, үзгүлтүктөр дароо өчүрүлөт. CLI нускамасынан кийин эч кандай үзгүлтүккө учурабайт, ал тургай, ал CLI инструкциясы менен бир убакта болсо да. Кийинки эксample бул убакытты белгиленген EEPROM жазуу ырааттуулугу учурунда үзгүлтүктөрдү болтурбоо үчүн кантип колдонсо болорун көрсөтөт.
Ассамблея коду Example |
r16, SREG ; SREG маанисин сактоо
cli ; убакыт ырааттуулугу учурунда үзгүлтүктөрдү өчүрүү sbi EECR, EEMPE ; EEPROM жазууну баштоо sbi EECR, EEPE out SREG, r16 ; SREG маанисин калыбына келтирүү (I-бит) |
C Code Example |
char cSREG;
cSREG = SREG; /* SREG маанисин сактоо */ /* убакыт ырааттуулугу учурунда үзгүлтүктөрдү өчүрүү */ _CLI(); EECR |= (1< EECR |= (1< SREG = cSREG; /* SREG маанисин калыбына келтирүү (I-бит) */ |
Үзгүлтүктөрдү иштетүү үчүн SEI инструкциясын колдонууда, SEIден кийинки инструкция ушул экс-де көрсөтүлгөндөй, күтүлүп жаткан үзгүлтүккө чейин аткарылат.ample.
Ассамблея коду Example |
sei ; Глобалдык үзгүлтүктөрдү иштетүүнү коюңуз
уктоо; үзгүлтүккө күтүү, уйкуга кирүү ; Эскертүү: күтүүдөн мурун уйкуга кирет ; үзгүлтүккө учуратуу(лар) |
C Code Example |
_SEI(); /* Глобалдык үзгүлтүктү иштетүү */
_SLEEP(); /* уйкуга кирүү, үзгүлтүккө учуратууну күтүү */ /* эскертүү: күтүүдөгү үзгүлтүккө (тар) чейин уйкуга кирет */ |
Үзгүлтүккө жооп берүү убактысы
Бардык иштетилген AVR үзгүлтүктөрү үчүн үзгүлтүккө жооп берүү эң аз төрт саат циклин түзөт. Төрт саат циклинен кийин иш жүзүндө үзгүлтүктөрдү иштетүү тартиби үчүн Программанын векторунун дареги аткарылат. Бул төрт саат циклинин ичинде Программа эсептегичи стекке түртүлөт. Вектор адатта үзгүлтүккө учуратуу тартибине секирүү болуп саналат жана бул секирүү үч саат циклин талап кылат. Эгерде көп циклдуу инструкцияны аткарууда үзгүлтүккө учураса, бул инструкция үзгүлтүккө жеткирилгенге чейин бүтөт. MCU уйку режиминде болгондо үзгүлтүккө учураса, үзгүлтүккө жооп берүү убактысы төрт саат циклине көбөйөт. Бул көбөйтүү тандалган уйку режиминен баштоо убактысына кошумча келет.
Үзгүлтүктөрдү иштетүү тартибинен кайтып келүү төрт саат циклин талап кылат. Ушул төрт саат циклинин жүрүшүндө Программа эсептегичи (эки байт) Стектен кайра чыгарылат, Стек көрсөткүчү экиге көбөйөт жана SREGдеги I-бит орнотулат.
AVR Memories
Бул бөлүмдө ATtiny25/45/85деги ар кандай эскерүүлөр сүрөттөлөт. AVR архитектурасында эки негизги эс мейкиндиги бар: Маалымат эстутуму жана Программа эс тутуму. Мындан тышкары, ATtiny25/45/85 маалыматтарды сактоо үчүн EEPROM эс тутумуна ээ. Бардык үч эс мейкиндиктери сызыктуу жана регулярдуу.
Системадагы кайра программалануучу Flash программасынын эс тутуму
ATtiny25/45/85 программаны сактоо үчүн 2/4/8К байт On-chip In-System Reprogrammable Flash эстутумду камтыйт. Бардык AVR инструкцияларынын кеңдиги 16 же 32 бит болгондуктан, Flash 1024/2048/4096 x 16 катары уюштурулган.
Флэш эстутум эң аз дегенде 10,000 25 жазуу/өчүрүү циклинин туруктуулугуна ээ. ATtiny45/85/10 Программа эсептегичи (PC) туурасы 11/12/1024 бит, ошентип 2048/4096/XNUMX Программанын эс тутумунун жерлерине кайрылат. «Эс тутум программасы- мин» 147-бетте SPI төөнөгүчтөрүн колдонуу менен Flash маалыматтарын сериялык жүктөө боюнча толук сүрөттөлүштү камтыйт.
Туруктуу таблицаларды Программанын эс тутумунун бүтүндөй дарек мейкиндигинде бөлүштүрсө болот (LPM – Load Program Memory нускамасынын сүрөттөмөсүн караңыз).
Сүрөт 5-1. Программанын эс тутум картасы
SRAM маалыматтар эс тутуму
5-2-сүрөт ATtiny25/45/85 SRAM эс тутуму кантип уюштурулганын көрсөтөт.
Төмөнкү 224/352/607 Маалымат эстутумдары Реестрге да кайрылат File, киргизүү/чыгаруу эс тутуму жана ички маалымат SRAM. Биринчи 32 жер Реестрге кайрылат File, кийинки 64 орун стандарттык киргизүү/чыгаруу эс тутумун, ал эми акыркы 128/256/512 жерди SRAM ички маалыматтарын даректейт.
Маалымат эс тутумунун беш түрдүү даректөө режими: Түз, жылыш менен кыйыр, кыйыр, алдын ала төмөндөтүү менен кыйыр жана кийинки өсүү менен кыйыр. Реестрде File, регистрлери R26дан R31ге чейин кыйыр даректүү көрсөткүч регистрлерин камтыйт.
Түздөн-түз даректөө бүт маалымат мейкиндигине жетет.
Көчүрүү менен кыйыр режими Y- же Z- регистринде берилген базалык даректен 63 дарек жерине жетет.
Регистрдик кыйыр даректөө режимдерин автоматтык түрдө алдын ала төмөндөтүү жана кийинки көбөйтүү менен колдонууда X, Y жана Z дарек регистрлери азайтылат же өстүрүлөт.
ATtiny32/64/128деги 256 жалпы максаттагы жумушчу регистрлер, 512 киргизүү/чыгаруу регистрлери жана 25/45/85 байт ички маалымат SRAM ATtinyXNUMX/XNUMX/XNUMX бардык ушул даректөө режимдери аркылуу жеткиликтүү. Каттоо File ичинде сүрөттөлөт «Ген- максаттуу реестр File” 10-бетте.
5-2-сүрөт. Маалымат эстутум картасы
Маалымат эстутумуна кирүү Times
Бул бөлүмдө ички эстутумга кирүү үчүн кирүү убактысынын жалпы түшүнүктөрү сүрөттөлөт. Ички берилиштерге SRAM кирүү эки clkCPU циклинде сүрөттөлгөндөй аткарылат 5-3-сүрөт.
5-3-сүрөт. Чиптеги маалыматтар SRAM кирүү циклдери EEPROM маалымат эс тутуму
ATtiny25/45/85 128/256/512 байт EEPROM эс тутумун камтыйт. Ал өзүнчө маалымат мейкиндиги катары уюштурулган, анда бир байт окуу жана жазуу мүмкүн. EEPROM кеминде 100,000 XNUMX жазуу/өчүрүү циклинин туруктуулугуна ээ. EEPROM менен CPU ортосундагы кирүү EEPROM дарек регистрлерин, EEPROM маалыматтар реестрин жана EEPROM башкаруу реестрин көрсөтүү менен төмөндө сүрөттөлөт. чоо-жайын карагыла “Сериялык жүктөө” 151-бетте.
EEPROM окуу/жазуу мүмкүнчүлүгү
EEPROM кирүү регистрлери киргизүү/чыгаруу мейкиндигинде жеткиликтүү.
EEPROM үчүн жазууга кирүү убакыттары берилген 5-беттеги 1-21-таблица. Бирок, өзүн-өзү башкаруу функциясы, колдонуучу программалык камсыздоосуна кийинки байт качан жазыла тургандыгын аныктоого мүмкүндүк берет. Колдонуучу коду EEPROM жазган нускамаларды камтыса, кээ бир сактык чараларын көрүү керек. Катуу чыпкаланган кубат булактарында VCC акырындап көтөрүлүп же түшүшү мүмкүн
Күйгүзүү/өчүрүү. Бул аппаратты бир канча убакытка чейин көлөмдө иштететtage колдонулган сааттык жыштык үчүн минималдуу белгиленгенден төмөн. Караңыз “EEPROM коррупциясынын алдын алуу” 19-бетте бул жагдайларда көйгөйлөрдөн кантип качуу керектиги жөнүндө маалымат алуу үчүн.
Атайылап эмес EEPROM жазууларынын алдын алуу үчүн, атайын жазуу процедурасын аткаруу керек. кайрылыңыз «Атомдук Байттык программалоо» 17-бетте жана “Бөлүнгөн байт программалоо” 17-бетте бул боюнча чоо-жайы үчүн.
EEPROM окуганда, CPU кийинки нускама аткарылганга чейин төрт саат циклине токтойт. EEPROM жазылганда, кийинки инструкция аткарылганга чейин CPU эки сааттык циклге токтойт.
Атомдук байт программалоо
Атомдук байт программалоону колдонуу эң жөнөкөй режим. EEPROMга байт жазууда колдонуучу EEAR реестрине даректи жана EEDR реестрине маалыматтарды жазуусу керек. Эгерде EEPMn биттери нөлгө барабар болсо, EEPE жазуу (EEMPE жазылгандан кийин төрт циклдин ичинде) өчүрүү/жазуу операциясын ишке киргизет. Тазалоо жана жазуу цикли бир операцияда аткарылат жана жалпы программалоо убактысы берилет 5-беттеги 1-21-таблица. EEPE бити өчүрүү жана жазуу операциялары аяктаганга чейин коюлган бойдон калат. Аппарат программалоо менен алек болуп турганда, башка EEPROM операцияларын жасоо мүмкүн эмес.
Бөлүнгөн байт программалоо
Тазалоо жана жазуу циклин эки башка операцияга бөлүүгө болот. Бул система кандайдыр бир чектелген убакытка кыска убакытты талап кылса, пайдалуу болушу мүмкүн (эреже катары, эгерде электр менен жабдууtagд түшөт). алдын ала алуу үчүн tagБул ыкманын e, жазуу операциясына чейин жазыла турган жерлердин өчүрүлүшү талап кылынат. Бирок өчүрүү жана жазуу операциялары бөлүнгөндүктөн, система убакытты талап кылган операцияларды жасоого уруксат бергенде өчүрүү операцияларын жасоого болот (эреже катары, кубаттуулуктан кийин).
Өчүрүү
Байтты өчүрүү үчүн дарек EEARга жазылышы керек. Эгерде EEPMn биттери 0b01 болсо, EEPE жазуу (EEMPE жазылгандан кийин төрт циклдин ичинде) өчүрүү операциясын гана ишке киргизет (программалоо убактысы Таблица 5-1 боюнча 21-бет). EEPE бит тазалоо операциясы аяктаганга чейин коюлган бойдон калат. Түзмөк программалоо менен алек болуп турганда, башка EEPROM операцияларын жасоо мүмкүн эмес.
Жаз
Жайгашкан жерди жазуу үчүн колдонуучу даректи EEARга, ал эми маалыматтарды EEDRге жазышы керек. Эгерде EEPMn биттери 0b10 болсо, EEPE жазуу (EEMPE жазылгандан кийин төрт циклдин ичинде) жазуу операциясын гана ишке киргизет (программалоо убактысы төмөнкү бөлүмдө келтирилген) 5-беттеги 1-21-таблица). EEPE бит жазуу операциясы аяктаганга чейин коюлган бойдон калат. Эгерде жазыла турган жер жазууга чейин өчүрүлбөсө, сакталган маалыматтар жоголду деп эсептелүүгө тийиш. Аппарат программалоо менен алек болуп турганда, башка EEPROM операцияларын жасоо мүмкүн эмес.
Калибрленген осциллятор EEPROM кирүү убактысын аныктоо үчүн колдонулат. Осциллятордун жыштыгы бөлүмдө сүрөттөлгөн талаптардын чегинде экенин текшериңиз “OSCCAL – Осцилляторду калибрлөө реестри” 31-бетте.
Төмөнкү код мурункуamples EEPROMды өчүрүү, жазуу же атомдук жазуу үчүн бир жыйынды жана бир C функциясын көрсөтөт. ЭксampLessume үзгүлтүктөр башкарылат (мисалы, глобалдык үзгүлтүктөрдү өчүрүү менен), бул функцияларды аткарууда эч кандай үзгүлтүктөр болбойт.
Ассамблея коду Example |
EEPROM_write:
; Мурунку жазууну аяктоо үчүн күтүңүз sbic EECR,EEPE rjmp EEPROM_write ; Программалоо режимин коюу ldi r16, (0<<EEPM1)|(0<<EEPM0) EECR чыгып, r16 ; Дарек регистринде даректи (r18:r17) орнотуңуз EEARH чыгып, r18 out EEARL, r17 ; Маалымат реестрине маалыматтарды (r19) жазыңыз EEDR чыгып, r19 ; EEMPEге логикалык бирин жаз sbi EECR, EEMPE ; EEPE орнотуу менен eeprom жазууну баштаңыз sbi EECR,EEPE рет |
C Code Example |
Void EEPROM_write(кол коюлбаган char ucData, unsigned char ucData)
{ /* Мурунку жазууну бүтүргөнчө күтүңүз */ while(EECR & (1< ; /* Программалоо режимин коюу */ EECR = (0< /* Дарек жана маалымат регистрлерин орнотуу */ EEAR = ucAddress; EEDR = ucData; /* EEMPEге логикалык бирин жаз */ EECR |= (1< /* EEPE орнотуу менен eeprom жазууну баштаңыз */ EECR |= (1< } |
Кийинки код мурункуampLes EEPROM окуу үчүн жыйынды жана C функцияларын көрсөтөт. Эксamples assume үзгүлтүктөр бул функцияларды аткаруу учурунда эч кандай үзгүлтүккө учурабашы үчүн башкарылат.
Ассамблея коду Example |
EEPROM_окуу:
; Мурунку жазууну аяктоо үчүн күтүңүз sbic EECR,EEPE rjmp EEPROM_read ; Дарек регистринде даректи (r18:r17) орнотуңуз EEARH чыгып, r18 out EEARL, r17 ; EERE жазуу менен eeprom окууну баштаңыз sbi EECR,EERE ; Маалымат реестринен маалыматтарды окуу жылы r16,EEDR рет |
C Code Example |
unsigned char EEPROM_read(unsigned char ucAddress)
{ /* Мурунку жазууну бүтүргөнчө күтүңүз */ while(EECR & (1< ; /* Дарек реестрин орнотуу */ EEAR = ucAddress; /* EERE жазуу менен eeprom окууну баштаңыз */ EECR |= (1< /* Маалымат реестринен маалыматтарды кайтаруу */ кайтаруу EEDR; } |
EEPROM коррупциясынын алдын алуу
Төмөн VCC мезгилдеринде EEPROM маалыматтары бузулушу мүмкүн, анткени камсыздоо көлөмүtage CPU жана EEPROM туура иштеши үчүн өтө төмөн. Бул маселелер EEPROM колдонгон такта деңгээлиндеги системалар менен бирдей жана ошол эле дизайн чечимдери колдонулушу керек.
EEPROM маалыматтарынын бузулушуна эки жагдай себеп болушу мүмкүнtage өтө төмөн. Биринчиден, EEPROMга кадимки жазуу ырааттуулугу минималдуу көлөмдү талап кылатtagтуура иштөөгө д. Экинчиден, CPU өзү нускамаларды туура эмес аткарышы мүмкүн, эгерде камсыздоо көлөмүtage өтө төмөн.
Бул дизайн сунушун аткаруу менен EEPROM маалыматтарынын бузулушунан оңой кутулса болот:
Электр энергиясы жетишсиз болгон мезгилде AVR RESET активдүүлүгүн (төмөн) кармап туруңузtagд. Муну ички Brown-out Detector (BOD) иштетүү аркылуу кылса болот. Эгерде ички БДнын аныктоо деңгээли дал келбесе
зарыл болгон аныктоо деңгээли, тышкы төмөн VCC баштапкы абалга келтирүү коргоо схемасын колдонсо болот. Жазуу операциясы жүрүп жаткан учурда баштапкы абалга келтирүү орун алса, кубат менен камсыздоо волtagе жетиштүү.
I/O Memory
ATtiny25/45/85тин I/O мейкиндигинин аныктамасы көрсөтүлгөн 200-беттеги “Кыскача регистрация”.
Бардык ATtiny25/45/85 киргизүү/чыгаруулары жана перифериялык түзүлүштөр киргизүү/чыгаруу мейкиндигинде жайгаштырылат. Бардык киргизүү/чыгаруу жерлерине LD/LDS/LDD жана ST/STS/STD инструкциялары аркылуу кирүүгө болот, 32 жалпы максаттагы жумушчу регистрлер менен киргизүү/чыгаруу мейкиндигинин ортосунда маалыматтарды өткөрүп берүү. 0x00 – 0x1F дарек диапазонундагы киргизүү/чыгаруу регистрлери SBI жана CBI нускамаларын колдонуу менен түздөн-түз бит-жетилүү. Бул регистрлерде жалгыз биттердин мааниси SBIS жана SBIC инструкцияларын колдонуу менен текшерилет. Көбүрөөк маалымат алуу үчүн нускамалар топтому бөлүмүн караңыз. I/O конкреттүү IN жана OUT буйруктарын колдонууда 0x00 – 0x3F I/O даректери колдонулушу керек. LD жана ST инструкцияларын колдонуу менен I/O регистрлерин маалымат мейкиндиги катары даректегенде, бул даректерге 0x20 кошулушу керек.
Келечектеги түзмөктөр менен шайкештик үчүн, корголгон биттер, эгер мүмкүнчүлүк болсо, нөлгө жазылышы керек. Корголгон I / O эс тутумунун даректери эч качан жазылбашы керек.
Статус желектеринин айрымдары аларга логикалык жазуу менен тазаланат. CBI жана SBI инструкциялары көрсөтүлгөн битте гана иштей турганын жана ошондуктан мындай Статус Желектерин камтыган регистрлерде колдонулушу мүмкүн экенин эске алыңыз. CBI жана SBI нускамалары 0x00дөн 0x1Fге чейинки регистрлер менен гана иштейт.
Киргизүү/чыгаруу жана перифериялык башкаруу регистрлери кийинки бөлүмдөрдө түшүндүрүлөт.
Реестрдин сүрөттөмөсү
EEARH – EEPROM дарек реестри
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1F | – | – | – | – | – | – | – | EEAR8 | EEARH |
Окуу/Жазуу | R | R | R | R | R | R | R | R/W | |
Баштапкы маани | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X/0 |
Bits 7:1 – Res: Запастагы бит
Бул биттер келечекте колдонуу үчүн сакталган жана ар дайым нөл катары окулат.
0 бит – EEAR8: EEPROM дареги
Бул ATtiny85тин эң маанилүү EEPROM дареги бит. EEPROM азыраак түзмөктөрдө, башкача айтканда, ATtiny25/ATtiny45, бул бит сакталган жана ар дайым нөлдү окуйт. EEPROM дарек регистринин (EEAR) баштапкы мааниси аныкталбагандыктан, EEPROMга кирүүдөн мурун тийиштүү маанини жазыш керек.
EEARL – EEPROM дарек реестри
Bit
0x1E | EEAR7 | EEAR6 | EEAR5 | EEAR4 | EEAR3 | EEAR2 | EEAR1 | EEAR0 | EEARL |
Арткы/жазуу | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Баштапкы маани | X | X | X | X | X | X | X | X |
Bit 7 – EEAR7: EEPROM дареги
Бул ATtiny45тин эң маанилүү EEPROM дареги. Азыраак EEPROM, башкача айтканда ATtiny25 бар түзмөктөрдө бул бит сакталган жана ар дайым нөлдү окуйт. EEPROM дарек регистринин (EEAR) баштапкы мааниси аныкталбагандыктан, EEPROMга кирүүдөн мурун тийиштүү маани жазылышы керек.
Биттер 6:0 – EEAR[6:0]: EEPROM дареги
Бул EEPROM дарек реестринин (төмөн) биттери. EEPROM маалымат байттары 0…(128/256/512-1) диапазонунда сызыктуу даректелген. EEAR баштапкы мааниси аныкталбагандыктан, EEPROMга кирүү үчүн тийиштүү маанини жазыш керек.
EEDR – EEPROM маалыматтар реестри
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1D | EEDR7 | EEDR6 | EEDR5 | EEDR4 | EEDR3 | EEDR2 | EEDR1 | EEDR0 | EEDR |
Окуу/Жазуу | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Баштапкы маани | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
EEPROM жазуу операциясы үчүн EEDR реестри EEAR реестри берген даректе EEPROMга жазыла турган маалыматтарды камтыйт. EEPROM окуу операциясы үчүн EEDR файлдан окулган маалыматтарды камтыйт
EEAR берген дарек боюнча EEPROM.
5.5.4 EECR – EEPROM башкаруу реестри |
|||||||||
Бит 7 6 5 | 4 | 3 | 2 | 1 | 0 | ||||
0x1C – | – | EEPM1 | EEPM0 | EERIE | EEMPE | EEPE | EERE | EECR | |
Окуу/Жазуу R R R/W | R/W | R/W | R/W | R/W | R/W | ||||
Баштапкы маани 0 0 X | X | 0 | 0 | X | 0 |
Bit 7 – Res: Запастагы бит
Бул бит келечекте колдонуу үчүн сакталган жана ATtiny0/25/45те ар дайым 85 катары окулат. Келечектеги AVR түзмөктөрүнө шайкеш келүү үчүн, бул битти ар дайым нөлгө жазыңыз. Окуп чыккандан кийин, бул бир аз маска.
Bit 6 – Res: Запастагы бит
Бул бит ATtiny25/45/85 сакталган жана ар дайым нөл катары окулат.
5:4 бит – EEPM[1:0]: EEPROM программалоо режиминин биттери
EEPROM Программалоо режиминин биттеринин жөндөөсү EEPE жазууда кайсы программалоо аракети ишке ашырыла тургандыгын аныктайт. Маалыматтарды бир атомдук операцияда программалоо (эски маанини өчүрүү жана жаңы маанини программалоо) же Өчүрүү жана жазуу операцияларын эки башка операцияга бөлүү мүмкүн. Ар кандай режимдер үчүн программалоо убакыттары көрсөтүлгөн Таблица 5-1. EEPE орнотулганда, EEPMn'ге ар кандай жазуулар этибарга алынбайт. Баштапкы абалга келтирүү учурунда, EEPROM программалоо менен алек болбосо, EEPMn биттери 0b00гө баштапкы абалга келтирилет.
Таблица 5-1. EEPROM режиминин биттери
EEPM1 | EEPM0 | Программалоо убактысы | Операция |
0 | 0 | 3.4 мс | Бир операцияда өчүрүү жана жазуу (Атомдук операция) |
0 | 1 | 1.8 мс | Өчүрүү гана |
1 | 0 | 1.8 мс | Жазуу гана |
1 | 1 | – | Келечекте колдонуу үчүн сакталган |
3-бит – EERIE: EEPROM даяр үзгүлтүккө учуроо
Бирге EERIE жазуу, SREG ичиндеги I-бит орнотулган болсо, EEPROM даяр үзгүлтүккө учуратууну иштетет. EERIE нөлгө жазуу үзүлүүнү өчүрөт. EEPROM даяр үзгүлтүксүз эстутум программалоого даяр болгондо туруктуу үзгүлтүктөрдү жаратат.
2-бит – EEMPE: EEPROM Мастер программасын иштетүү
EEMPE бити EEPEди бирөөнө жазуу эффективдүү болобу же жокпу аныктайт.
EEMPE орнотулганда, EEPEди төрт саат циклинин ичинде коюу EEPROMды тандалган даректе программалайт. Эгерде EEMPE нөл болсо, EEPE жөндөө эч кандай натыйжа бербейт. EEMPE программалык камсыздоо аркылуу бирине жазылганда, аппараттык камсыздоо төрт саат циклинен кийин битти нөлгө чейин тазалайт.
Bit 1 – EEPE: EEPROM программасын иштетүү
EEPROM программасын иштетүү сигналы EEPE бул EEPROMга программалоону иштетүү сигналы. EEPE жазылганда, EEPROM EEPMn бит орнотууларына ылайык программаланат. EEPEге логикалык бит жазуудан мурун EEMPE бити бирине жазылышы керек, антпесе EEPROM жазуусу болбойт. Жазууга мүмкүндүк алуу убактысы бүткөндө, EEPE бит аппараттык камсыздоо тарабынан тазаланат. EEPE орнотулгандан кийин, CPU кийинки нускама аткарылганга чейин эки циклге токтойт.
Бит 0 – EERE: EEPROM окууну иштетүү
EEPROM окууну иштетүү сигналы - EERE - бул EEPROM үчүн окуу стробо. EEAR реестринде туура дарек орнотулганда, EEPROM окуусун баштоо үчүн EERE бити бирине жазылышы керек. EEPROM окуу мүмкүнчүлүгү бир нускаманы алат жана суралган маалыматтар дароо жеткиликтүү болот. EEPROM окуганда, CPU кийинки нускама аткарылганга чейин төрт циклге токтойт. Колдонуучу окуу операциясын баштоодон мурун EEPE битин сураш керек. Эгерде жазуу операциясы аткарылып жатса, EEPROMду окуу да, EEAR реестрин өзгөртүү да мүмкүн эмес.
Системалык саат жана саат параметрлери
Саат системалары жана алардын бөлүштүрүлүшү
CPU Саат
CPU сааты AVR ядросунун иштешине тиешелүү системанын бөлүктөрүнө багытталат. МисampМындай модулдар жалпы максаттуу реестр болуп саналат File, Статус реестри жана Стек көрсөткүчүн кармап турган Маалымат эстутуму. CPU саатын токтотуу ядронун жалпы операцияларды жана эсептөөлөрдү аткаруусуна тоскоол болот.
I/O сааты – clkI/O
Киргизүү/чыгаруу сааты таймер/эсептегич сыяктуу киргизүү/чыгаруу модулдарынын көпчүлүгү тарабынан колдонулат. Киргизүү/чыгаруу саатын Тышкы үзгүлтүккө учуратуу модулу да колдонот, бирок кээ бир тышкы үзгүлтүктөр асинхрондук логика менен аныкталаарын эске алыңыз, мындай үзгүлтүктөрдү киргизүү/чыгаруу сааты токтоп калса да аныктоого мүмкүндүк берет.
Жаркылдаган саат – clkFLASH
Flash сааты Flash интерфейсинин иштешин көзөмөлдөйт. Flash сааты адатта CPU сааты менен бир убакта активдүү болот.
ADC сааты – clkADC
ADC атайын саат домени менен камсыз кылынат. Бул санариптик схемалар тарабынан пайда болгон чууну азайтуу үчүн CPU жана киргизүү/чыгаруу сааттарын токтотууга мүмкүндүк берет. Бул ADC конверсиясынын так натыйжаларын берет.
Тез перифериялык саат түзүү үчүн ички PLL – clkPCK
ATtiny25/45/85 ичиндеги ички PLL булак киргизүүдөн 8x көбөйтүлгөн саат жыштыгын жаратат. Демейки боюнча, PLL булак катары ички, 8.0 МГц RC осцилляторунун чыгышын колдонот. Же болбосо, PLLCSR бит LSM коюлса, PLL экиге бөлүнгөн RC осцилляторунун чыгышын колдонот. Ошентип, PLL чыгаруу, тез перифериялык саат 64 MHz болуп саналат. Тез перифериялык саат же андан алдын ала масштабдалган саатты Таймер/Счетчик1 үчүн саат булагы же системалык саат катары тандаса болот. Караңыз 6-2-сүрөт. PLLCSR LSM орнотулганда тез перифериялык сааттын жыштыгы экиге бөлүнөт, натыйжада тактык жыштыгы 32 МГц болот. Эскертүү, эгерде PLLCLK системалык саат катары колдонулса, LSM орнотуу мүмкүн эмес.
Сүрөт 6-2. PCK саат системасы.
PLL RC осцилляторунда кулпуланган жана RC осцилляторун OSCCAL реестри аркылуу тууралоо бир эле учурда перифериялык ылдам саатты тууралайт. Бирок, RC осциллятору 8 МГцден жогору жыштыкка алынган күндө да, тез перифериялык тактык жыштык 85 МГц (эң начар учурда) каныккан жана максималдуу жыштыкта термелүү бойдон кала берет. Бул учурда PLL мындан ары RC осциллятор сааты менен кулпуланган эмес экенин белгилей кетүү керек. Ошондуктан, PLLди туура иштөө диапазонунда кармап туруу үчүн OSCCAL тууралоолорун 8 МГцден жогору жыштыкка албоо сунушталат.
Ички PLL төмөнкү учурларда иштетилет:
PLLCSR реестриндеги PLLE бит коюлган.
CKSEL сактагычы '0001'ге программаланган.
CKSEL сактагычы '0011'ге программаланган.
PLLCSR бит PLOCK PLL кулпуланганда коюлат. Ички RC осциллятору да, PLL да өчүрүү жана күтүү режиминде өчүрүлөт.
ATtiny15 шайкештик режиминде ички PLL
ATtiny25/45/85 ATtiny15 колдонуучулары үчүн миграциялык түзүлүш болгондуктан, артка шайкештик үчүн ATtiny15 шайкештик режими бар. ATtiny15 шайкештик режими CKSEL сактагычтарын '0011'ге программалоо аркылуу тандалат.
ATtiny15 шайкештик режиминде ички RC осцилляторунун жыштыгы 6.4 МГц чейин калибрленген жана PLL көбөйүү коэффициенти 4x болуп орнотулган. Караңыз 6-3-сүрөт. Бул жөндөөлөр менен саат системасы ATtiny15 менен шайкеш келет жана натыйжада тез перифериялык саат 25.6 МГц жыштыгына ээ (ATtiny15тегидей).
Сүрөт 6-3. ATtiny15 шайкештик режиминде PCK саат системасы.
Саат булактары
Түзмөктө төмөндө көрсөтүлгөндөй Flash Fuse биттери менен тандалуучу төмөнкү саат булагы параметрлери бар. Тандалган булактан саат AVR саат генераторуна киргизилет жана тиешелүү модулдарга багытталат.
Таблица 6-1. Аспаптын саатынын параметрлери тандаңыз
Түзмөктүн саатын тандоо | CKSEL[3:0](1) |
Тышкы саат (кара 26-бет) | 0000 |
Жогорку жыштыктагы PLL сааты (кара 26-бет) | 0001 |
Калибрленген ички осциллятор (кара 27-бет) | 0010(2) |
Калибрленген ички осциллятор (кара 27-бет) | 0011(3) |
Ички 128 кГц осциллятор (кара 28-бет) | 0100 |
Төмөн жыштыктагы кристаллдык осциллятор (кара 29-бет) | 0110 |
Кристалл осциллятору / Керамикалык резонатор (кара 29-бет) | 1000 – 1111 |
Резервге коюлган | 0101, 0111 |
Бардык сактагычтар үчүн “1” программаланбаган, ал эми “0” программаланган дегенди билдирет.
Бул параметр тандалган түзмөк менен жөнөтүлөт.
Бул ATtiny15 шайкештик режимин тандайт, мында системанын сааты төрткө бөлүнөт, натыйжада 1.6 МГц саат жыштыгы пайда болот. Көбүрөөк маалымат алуу үчүн караңыз “Калибрленген ички осциллятор” 27-бетте.
Ар бир саат тандоосу үчүн ар кандай тандоолор кийинки бөлүмдөрдө берилген. CPU кубаты өчүрүлгөндөн ойгонгондо, тандалган саат булагы ишке киргизүү убактысы үчүн колдонулат, бул нускаманы аткаруу башталганга чейин Осциллятордун туруктуу иштешин камсыз кылат. CPU баштапкы абалга келтирилип баштаганда, нормалдуу иштөөгө чейин кубаттуулуктун туруктуу деңгээлге жетишине мүмкүндүк берүүчү кошумча кечигүү пайда болот. Watchdog Oscillator баштоо убакыттын бул реалдуу убакыт бөлүгүн убакыт үчүн колдонулат. Ар бир тайм-аут үчүн колдонулган WDT осциллятор циклдеринин саны көрсөтүлгөн Таблица 6-2.
Таблица 6-2. Watchdog Oscillator Cycles саны
Typ Time-out | Циклдердин саны |
4 мс | 512 |
64 мс | 8K (8,192) |
Тышкы саат
Түзмөктү тышкы саат булагынан айдоо үчүн, CLKI сүрөттө көрсөтүлгөндөй айдалышы керек 6-4-сүрөт. Аппаратты тышкы саатта иштетүү үчүн CKSEL Fuses “00” деп программаланган болушу керек.
6-4-сүрөт. Сырткы саат дискинин конфигурациясы
Бул сааттын булагы тандалганда, ишке киргизүү убакыттары сүрөттө көрсөтүлгөндөй SUT сактагычтар тарабынан аныкталат Таблица 6-3.
Таблица 6-3. Сырткы сааттарды тандоо үчүн баштоо убакыттары
SUT[1:0] | Өчүрүлгөндөн баштап ишке киргизүү убактысы | Кайра коюудан кошумча кечигүү | Сунушталган колдонуу |
00 | 6 CK | 14CK | BOD иштетилди |
01 | 6 CK | 14CK + 4 мс | Тез көтөрүлүп жаткан күч |
10 | 6 CK | 14CK + 64 мс | Акырындык менен күч |
11 | Резервге коюлган |
Сырткы саатты колдонууда MCU туруктуу иштешин камсыз кылуу үчүн колдонулган сааттык жыштыктын капыстан өзгөрүшүнө жол бербөө керек. Бир саат циклинен экинчисине 2% ашык жыштыктын өзгөрүшү күтүүсүз жүрүм-турумга алып келиши мүмкүн. Сааттык жыштыктагы мындай өзгөрүүлөр учурунда MCU кайра орнотууда сакталышын камсыз кылуу талап кылынат.
Эскертүү, System Clock Presale туруктуу иштөөнү камсыз кылуу менен бирге, ички саат жыштыгынын иштөө убактысын өзгөртүү үчүн колдонулушу мүмкүн. кайрылыңыз 31-беттеги “Системанын саатын алдын ала өлчөөчү” чоо-жайы үчүн.
Жогорку жыштыктагы PLL сааты
Перифериялык таймер/эсептегич64 жана системалык сааттын булагы үчүн RC Осцилляторуна кулпуланган номиналдуу 1 МГц саат ылдамдыгын камсыз кылган ички PLL бар. Системалык сааттын булагы катары тандалганда, CKSEL сактагычтарын '0001'ге программалоо аркылуу, ал сүрөттө көрсөтүлгөндөй төрткө бөлүнөт. Таблица 6-4.
Таблица 6-4. Жогорку жыштыктагы PLL саатынын иштөө режимдери
CKSEL[3:0] | Номиналдык жыштык |
0001 | 16 МГц |
Бул саат булагы тандалганда, ишке киргизүү убакыттары сүрөттө көрсөтүлгөндөй SUT сактагычтары менен аныкталат Таблица 6-5.
Таблица 6-5. Жогорку жыштыктагы PLL саатын баштоо убакыттары
SUT[1:0] | Өчүрүлгөндөн баштап ишке киргизүү убактысы | Күйгүзүүнү баштапкы абалга келтирүүдөн кошумча кечигүү (VCC = 5.0V) | Сунушталган колдонуу |
00 | 14CK + 1K (1024) CK + 4 мс | 4 мс | BOD иштетилди |
Таблица 6-5. Жогорку жыштыктагы PLL саатын баштоо убакыттары
SUT[1:0] | Өчүрүлгөндөн баштап ишке киргизүү убактысы | Күйгүзүүнү баштапкы абалга келтирүүдөн кошумча кечигүү (VCC = 5.0V) | Сунушталган колдонуу |
01 | 14CK + 16K (16384) CK + 4 мс | 4 мс | Тез көтөрүлүп жаткан күч |
10 | 14CK + 1K (1024) CK + 64 мс | 4 мс | Акырындык менен күч |
11 | 14CK + 16K (16384) CK + 64 мс | 4 мс | Акырындык менен күч |
Калибрленген ички осциллятор
Демейки боюнча, Ички RC Oscillator болжол менен 8.0 МГц саатты камсыз кылат. Томtage жана температурага көз каранды, бул саат колдонуучу тарабынан абдан так калибрлениши мүмкүн. Караңыз «Калибрленген ички RC осцилляторунун акку- жарыш» 164-бетте жана «Ички осциллятор ылдамдыгы» 192-бетте көбүрөөк маалымат алуу үчүн. Аппарат программаланган CKDIV8 Fuse менен жөнөтүлгөн. Караңыз 31-беттеги “Системанын саатын алдын ала өлчөөчү” көбүрөөк маалымат алуу үчүн.
Бул саат CKSEL Fuses программасында көрсөтүлгөндөй системалык саат катары тандалышы мүмкүн 6-6-таблица беттеги
27. Тандалган болсо, ал эч кандай тышкы компоненттерсиз иштейт. Калыбына келтирүү учурунда аппараттык камсыздоо OSCCAL реестрине алдын ала программаланган калибрлөө маанисин жүктөйт жана ошону менен RC осцилляторун автоматтык түрдө калибрлейт. Бул калибрлөөнүн тактыгы Фабрика калибрлөөсүндө көрсөтүлгөн 21-беттеги 2-164-таблица.
OSCCAL реестрин SWден өзгөртүү менен, караңыз “OSCCAL – Осцилляторду калибрлөө реестри” 31-бетте, заводдук калибрлөөдөн жогору калибрлөө тактыгын алууга болот. Бул калибрлөөнүн тактыгы Колдонуучунун калибрлөөсүндө көрсөтүлөт 21-беттеги 2-164-таблица.
Бул осциллятор чип сааты катары колдонулганда, Watchdog осциллятору дагы эле Watchdog таймери жана баштапкы абалга келтирилген тайм-аут үчүн колдонулат. Алдын ала программаланган калибрлөө мааниси жөнүндө көбүрөөк маалымат алуу үчүн бөлүмдү караңыз «Кали- брациондук байттар” 150-бетте.
Ички осцилляторду CKSEL сактагычтарын "6.4" деп жазып, 0011 МГц саатты камсыз кылуу үчүн да орнотсо болот. Таблица 6-6 төмөндө. Бул жөндөө ATtiny15 шайкештик режими деп аталат жана ATtiny6.4тегидей 15 МГц калибрленген саат булагын камсыз кылуу үчүн арналган. ATtiny15 шайкештик режиминде PLL таймер/эсептегич6.4 үчүн 25.6 МГц перифериялык саат сигналын түзүү үчүн 1 МГцде иштеген ички осцилляторду колдонот (караңыз). “8-бит таймер/эсептегич1 дюйм ATtiny15 Mode” 95-бетте). Иштин бул режиминде 6.4 МГц саат сигналы ар дайым төрткө бөлүнүп, 1.6 МГц системалык саатты камсыз кылаарын эске алыңыз.
Таблица 6-6. Ички калибрленген RC осцилляторунун иштөө режимдери
CKSEL[3:0] | Номиналдык жыштык |
0010(1) | 8.0 МГц |
0011(2) | 6.4 МГц |
Бул параметр тандалган түзмөк менен жөнөтүлөт.
Бул жөндөө ATtiny15 Шайкештик режимин тандайт, мында системанын сааты төрткө бөлүнөт, натыйжада 1.6 МГц тактык жыштыгы пайда болот.
Калибрленген 8 МГц ички осциллятор сааттын булагы катары тандалганда, ишке киргизүү убакыттары төмөндө көрсөтүлгөндөй SUT сактагычтары тарабынан аныкталат. Таблица 6-7 төмөндө.
Таблица 6-7. Ички калибрленген RC осциллятор саатын ишке киргизүү убакыттары
SUT[1:0] | Өчүрүлгөндөн баштап ишке киргизүү убактысы | Кайра коюудан кошумча кечигүү (VCC = 5.0V) | Сунушталган колдонуу |
00 | 6 CK | 14CK(1) | BOD иштетилди |
01 | 6 CK | 14CK + 4 мс | Тез көтөрүлүп жаткан күч |
10(2) | 6 CK | 14CK + 64 мс | Акырындык менен күч |
11 | Резервге коюлган |
1. Эгерде RSTDISBL сактагычы программаланган болсо, программалоо режимин киргизүүнү камсыз кылуу үчүн бул ишке киргизүү убактысы 14CK + 4 мс чейин көбөйөт.
2. Бул параметр тандалган аппарат менен жөнөтүлөт.
ATtiny15 шайкештик режиминде ишке киргизүү убакыттары сүрөттө көрсөтүлгөндөй SUT сактагычтары менен аныкталат Таблица 6-8 төмөндө.
Таблица 6-8. Ички калибрленген RC осциллятор саатын ишке киргизүү убакыттары (ATtiny15 режиминде)
SUT[1:0] | Өчүрүлгөндөн баштап ишке киргизүү убактысы | Кайра коюудан кошумча кечигүү (VCC = 5.0V) | Сунушталган колдонуу |
00 | 6 CK | 14CK + 64 мс | |
01 | 6 CK | 14CK + 64 мс | |
10 | 6 CK | 14CK + 4 мс | |
11 | 1 CK | 14CK(1) |
Эскертүү: RSTDISBL сактагычы программаланган болсо, программалоо режимин киргизүүнү камсыздоо үчүн бул ишке киргизүү убактысы 14CK + 4 мс чейин көбөйөт.
Кыскача айтканда, ATtiny15 шайкештик режими жөнүндө көбүрөөк маалыматты бөлүмдөрдөн тапса болот "Порт B (PB5:PB0)" күйгүзүлгөн 2-бет, “ATtiny15 шайкештик режиминдеги ички PLL” 24-бетте, “ATtiny8 режиминде 1-бит таймер/эсептегич15” күйгүзүлгөн 95-бет, “DebugWIRE чектөөлөрү” 140-бетте, “Калибрлөө байттары” 150-бетте жана таблицада “Саатты алдын ала өлчөөчү Тандоо” 33-бетте.
Ички 128 кГц осциллятор
128 кГц ички осциллятор 128 кГц саатты камсыз кылган аз кубаттуулуктагы осциллятор. жыштыгы номиналдуу 3V жана 25°C. Бул саат CKSEL Fuses "0100" чейин программалоо аркылуу системалык саат катары тандалышы мүмкүн.
Бул сааттын булагы тандалганда, ишке киргизүү убакыттары сүрөттө көрсөтүлгөндөй SUT сактагычтар тарабынан аныкталат Таблица 6-9.
Таблица 6-9. 128 кГц ички осциллятордун ишке киргизүү убакыттары
SUT[1:0] | Өчүрүлгөндөн баштап ишке киргизүү убактысы | Кайра коюудан кошумча кечигүү | Сунушталган колдонуу |
00 | 6 CK | 14CK(1) | BOD иштетилди |
01 | 6 CK | 14CK + 4 мс | Тез көтөрүлүп жаткан күч |
10 | 6 CK | 14CK + 64 мс | Акырындык менен күч |
11 | Резервге коюлган |
Эскертүү: RSTDISBL сактагычы программаланган болсо, программалоо режимин киргизүүнү камсыздоо үчүн бул ишке киргизүү убактысы 14CK + 4 мс чейин көбөйөт.
Төмөн жыштыктагы кристаллдык осциллятор
Аспап үчүн саат булагы катары 32.768 кГц саат кристалын колдонуу үчүн, CKSEL сактагычтарын '0110' абалына коюу менен Төмөн жыштыктагы Кристалл Осцилляторду тандоо керек. Кристалл сүрөттө көрсөтүлгөндөй туташтырылышы керек 6-5-сүрөт. 32.768 кГц кристалл үчүн ылайыктуу жүк сыйымдуулугун табуу үчүн, өндүрүүчүнүн маалымат жадыбалына кайрылыңыз.
Бул осциллятор тандалганда, ишке киргизүү убакыттары сүрөттө көрсөтүлгөндөй SUT сактагычтары менен аныкталат Таблица 6-10.
Таблица 6-10. Төмөн жыштыктагы кристаллдык осциллятор саатын тандоо үчүн ишке киргизүү убакыттары
SUT[1:0] | Өчүрүлгөндөн баштап ишке киргизүү убактысы | Кайра коюудан кошумча кечигүү (VCC = 5.0V) | Сунушталган колдонуу |
00 | 1K (1024) CK(1) | 4 мс | Тез өсүүчү кубаттуулук же BOD иштетилди |
01 | 1K (1024) CK(1) | 64 мс | Акырындык менен күч |
10 | 32K (32768) CK | 64 мс | Ишке киргизүүдө туруктуу жыштык |
11 | Резервге коюлган |
Эскертүү: Бул параметрлерди иштетүүдө жыштыктын туруктуулугу маанилүү болбосо гана колдонулушу керек.
Төмөн жыштыктагы Crystal Oscillator ички жүк сыйымдуулугун камсыз кылат, карагыла Таблица 6-11 ар бир TOSC пинде.
Таблица 6-11. Төмөн жыштыктагы кристаллдык осциллятордун сыйымдуулугу
Түзмөк | 32 kHz Osc. Type | Капкак (Xtal1/Tosc1) | Капкак (Xtal2/Tosc2) |
ATtiny25/45/85 | System Osc. | 16 пФ | 6 пФ |
Кристалл осциллятору / Керамикалык резонатор
XTAL1 жана XTAL2 инвертирлөөнүн тиешелүүлүгүнө жараша киргизүү жана чыгаруу болуп саналат ampКөрсөтүлгөндөй, чиптеги осциллятор катары колдонуу үчүн конфигурацияланган көтөргүч 6-5-сүрөт. Же кварц кристалы же керамикалык резонатор колдонулушу мүмкүн.
C1 жана C2 ар дайым кристаллдар жана резонаторлор үчүн бирдей болушу керек. Конденсаторлордун оптималдуу мааниси колдонулуп жаткан кристаллга же резонаторго, адашкан сыйымдуулуктун көлөмүнө жана чөйрөнүн электромагниттик ызы-чуусунан көз каранды. Кристаллдар менен колдонуу үчүн конденсаторлорду тандоо боюнча кээ бир баштапкы көрсөтмөлөр келтирилген Таблица 6-12 төмөндө. Керамикалык резонаторлор үчүн өндүрүүчү тарабынан берилген конденсаторлордун маанилери колдонулушу керек.
Таблица 6-12. Кристалл осцилляторунун иштөө режимдери
CKSEL[3:1] | Жыштык диапазону (МГц) | Кристаллдар менен колдонуу үчүн C1 жана C2 конденсаторлору үчүн сунушталган диапазон (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 |
Эскертүү: Бул параметр кристаллдар менен колдонулбашы керек, бир гана керамикалык резонаторлор менен.
Осциллятор үч башка режимде иштей алат, алардын ар бири белгилүү бир жыштык диапазону үчүн оптималдаштырылган. Иштөө режими CKSEL [3:1] сактагычтары тарабынан көрсөтүлгөндөй тандалат Таблица 6-12.
CKSEL0 Fuse менен бирге SUT[1:0] Сактагычтар бөлүмдө көрсөтүлгөндөй ишке киргизүү убакыттарын тандайт. Таблица 6-13.
Таблица 6-13. Crystal Oscillator саатын тандоо үчүн ишке киргизүү убакыттары
CKSEL0 | SUT[1:0] | Өчүрүлгөндөн баштап ишке киргизүү убактысы | Кайра коюудан кошумча кечигүү | Сунушталган колдонуу |
0 | 00 | 258 CK(1) | 14CK + 4 мс | Керамикалык резонатор, тез көтөрүлүүчү күч |
0 | 01 | 258 CK(1) | 14CK + 64 мс | Керамикалык резонатор, акырындык менен көтөрүлүп жаткан күч |
0 | 10 | 1K (1024) CK(2) | 14CK | Керамикалык резонатор, BOD иштетилген |
0 | 11 | 1K (1024)CK(2) | 14CK + 4 мс | Керамикалык резонатор, тез көтөрүлүүчү күч |
1 | 00 | 1K (1024)CK(2) | 14CK + 64 мс | Керамикалык резонатор, акырындык менен көтөрүлүп жаткан күч |
1 | 01 | 16K (16384) CK | 14CK | Crystal Oscillator, BOD иштетилген |
1 | 10 | 16K (16384) CK | 14CK + 4 мс | Crystal Oscillator, тез өсүүчү күч |
1 | 11 | 16K (16384) CK | 14CK + 64 мс | Crystal Oscillator, акырындык менен көтөрүлүп жаткан күч |
Эскертүүлөр
Бул опциялар аппараттын максималдуу жыштыгына жакын иштебей турганда жана ишке киргизүүдө жыштыктын туруктуулугу колдонмо үчүн маанилүү болбосо гана колдонулушу керек. Бул параметрлер кристаллдар үчүн ылайыктуу эмес.
Бул параметрлер керамикалык резонаторлор менен колдонууга арналган жана ишке киргизүүдө жыштыктын туруктуулугун камсыздайт. Аппараттын максималдуу жыштыгына жакын иштебей турганда жана ишке киргизүүдө жыштыктын туруктуулугу колдонмо үчүн маанилүү болбосо, аларды кристаллдар менен да колдонсо болот.
Демейки саат булагы
Аппарат CKSEL = “0010”, SUT = “10” жана CKDIV8 программаланган менен жөнөтүлгөн. Демейки саат булагынын жөндөөсү 8 МГц ылдамдыкта иштеген Ички RC Осциллятору болуп саналат жана эң узак ишке киргизүү убактысы жана баштапкы система сааты 8 алдын ала шкалаланып, натыйжада 1.0 МГц система сааты пайда болот. Бул демейки жөндөө бардык колдонуучулар Системадагы же Жогорку көлөмдү колдонуу менен каалаган саат булагын жөндөөнү камсыздайт.tage Программист.
Системалык саатты алдын ала масштабдагыч
ATtiny25/45/85 системалык саатын орнотуу менен бөлүүгө болот “CLKPR – Саатты алдын ала реестр” 32-бетте. Бул өзгөчөлүк кайра иштетүү кубаттуулугу үчүн талап аз болгондо, энергия керектөөнү азайтуу үчүн колдонулушу мүмкүн. Бул бардык саат булагы параметрлери менен колдонулушу мүмкүн жана ал CPU жана бардык синхрондуу перифериялык түзүлүштөрдүн саат жыштыгына таасирин тийгизет. clkI/O, clkADC, clkCPU жана clkFLASH төмөндө көрсөтүлгөндөй факторго бөлүнөт. 6-беттеги 15-33-таблица.
Которуу убактысы
Алдын ала шкалалоочу орнотуулардын ортосунда которуштурууда, Системалык Саатты Алдын ала шкалалоочу саат тутумунда эч кандай мүчүлүштүктөр болбошун жана эч кандай аралык жыштык мурунку жөндөөлөргө туура келген саат жыштыгынан да, жаңы жөндөөлөргө туура келген саат жыштыгынан да жогору болбошун камсыздайт.
Алдын ала масштабдагычты ишке ашырган толкундук эсептегич бөлүнбөгөн сааттын жыштыгында иштейт, ал CPU саатынын жыштыгынан тезирээк болушу мүмкүн. Демек, алдын ала шкалалардын абалын аныктоо мүмкүн эмес - ал окула турган болсо да, ал эми сааттын бир бөлүгүнөн экинчисине өтүү үчүн талап кылынган так убакытты так айтуу мүмкүн эмес.
CLKPS маанилери жазылган учурдан тартып жаңы саат жыштыгы активдүү болгонго чейин T1 + T2 жана T1 + 2*T2 ортосунда өтөт. Бул аралыкта 2 активдүү саат четтери чыгарылат. Бул жерде, T1 - мурунку саат мезгили, ал эми T2 - жаңы алдын ала шкалалоочу жөндөөлөргө туура келген мезгил.
Саат чыгаруу буфери
Аппарат системалык саатты CLKO пинине чыгара алат (XTAL2 пин катары колдонулбаганда). Чыгууну иштетүү үчүн, CKOUT Fuse программаланышы керек. Бул режим чип сааты системадагы башка схемаларды башкаруу үчүн колдонулганда ылайыктуу. Баштапкы абалга келтирүү учурунда саат чыгарылбай турганын жана сактагыч программаланганда киргизүү/чыгаруу пининин нормалдуу иштеши жокко чыгарыларын эске алыңыз. Ички RC осциллятору, WDT осциллятору, PLL жана тышкы саатты (CLKI) саат CLKOда чыгарылганда тандаса болот. Кристалл осцилляторлору (XTAL1, XTAL2) CLKO боюнча саат чыгаруу үчүн колдонулушу мүмкүн эмес. Системалык сааттын алдын ала масштабы колдонулса, ал бөлүнгөн система сааты чыгарылат.
Реестрдин сүрөттөмөсү
OSCCAL – Осцилляторду калибрлөө реестри
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x31 | CAL7 | CAL6 | CAL5 | CAL4 | CAL3 | CAL2 | CAL1 | CAL0 | OSCCAL |
Окуу/Жазуу | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Bits 7:0 – CAL[7:0]: Осциллятордун калибрлөө мааниси
Осциллятордун калибрлөө реестри процесстик вариацияларды осциллятордун жыштыгынан алып салуу үчүн калибрленген ички RC осцилляторун кесүү үчүн колдонулат. Алдын ала программаланган калибрлөө мааниси чипти баштапкы абалга келтирүү учурунда бул регистрге автоматтык түрдө жазылат, мында көрсөтүлгөндөй Заводдук калибрленген жыштык 21-беттеги 2-164-таблица. Колдонмо программалык камсыздоо бул реестрди осциллятордун жыштыгын өзгөртүү үчүн жаза алат. Осциллятор жыштыктарда көрсөтүлгөндөй калибрлениши мүмкүн 21-беттеги 2-164-таблица. Бул диапазондон тышкары калибрлөө кепилдик берилбейт.
Эскерте кетсек, бул осциллятор EEPROM жана Flash жазуу мүмкүнчүлүгүн убакыт үчүн колдонулат жана бул жазуу убакыттары ошого жараша таасир этет. Эгер EEPROM же Flash жазылган болсо, 8.8 МГцден жогору калибрлебеңиз. Болбосо, EEPROM же Flash жазуусу иштебей калышы мүмкүн.
CAL7 бит осциллятордун иштөө диапазонун аныктайт. Бул битти 0гө коюу эң төмөнкү жыштык диапазонун берет, бул битти 1ге коюу эң жогорку жыштык диапазонун берет. Эки жыштык диапазону бири-бирине дал келет, башкача айтканда OSCCAL = 0x7F жөндөөсү OSCCAL = 0x80ге караганда жогору жыштыкты берет.
CAL[6:0] биттери тандалган диапазондогу жыштыкты тууралоо үчүн колдонулат. 0x00 жөндөөсү ошол диапазондогу эң төмөнкү жыштыкты берет, ал эми 0x7F параметри диапазондогу эң жогорку жыштыкты берет.
MCU туруктуу иштешин камсыз кылуу үчүн калибрлөө маанисин кичине өзгөртүү керек. Бир циклден экинчисине 2% ашык жыштыктын өзгөрүшү күтүүсүз жүрүм-турумга алып келиши мүмкүн. OSCCALдагы өзгөртүүлөр ар бир калибрлөө үчүн 0x20 ашпоого тийиш. Сааттык жыштыктагы мындай өзгөрүүлөр учурунда MCU кайра орнотууда сакталышын камсыз кылуу талап кылынат
Таблица 6-14. Ички RC Oscillator жыштык диапазону
OSCCAL Маани | Номиналдуу жыштыкка карата типтүү эң төмөнкү жыштык | Номиналдуу жыштыкка карата типтүү эң жогорку жыштык |
0x00 | 50% | 100% |
0x3F | 75% | 150% |
0x7F | 100% | 200% |
CLKPR - Сааттын алдын ала реестри
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x26 | CLKPCE | – | – | – | CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | CLKPR |
Окуу/Жазуу | R/W | R | R | R | R/W | R/W | R/W | R/W |
Баштапкы маани 0 0 0 0 Bit Description караңыз
Bit 7 – CLKPCE: Саатты алдын ала масштабдагыч өзгөртүүнү иштетүү
CLKPS биттерин өзгөртүүнү иштетүү үчүн CLKPCE бити логикага жазылышы керек. CLKPCE бит CLKPRдагы башка биттер бир эле учурда нөлгө жазылганда гана жаңыланат. CLKPCE ал жазылгандан кийин же CLKPS биттери жазылгандан кийин төрт циклден кийин аппараттык камсыздоо тарабынан тазаланат. Бул тайм-аут мезгилинин ичинде CLKPCE битин кайра жазуу тайм-аут мезгилин узартпайт жана CLKPCE битин тазалабайт.
Bits 6:4 – Res: Запастагы бит
Бул биттер ATtiny25/45/85те сакталган биттер жана ар дайым нөл катары окулат.
Биттер 3:0 – CLKPS[3:0]: Саатты алдын ала өлчөөчү биттерди тандоо 3 – 0
Бул биттер тандалган саат булагы менен ички система саатынын ортосундагы бөлүү факторун аныктайт. Бул биттерди колдонмонун талаптарын канааттандыруу үчүн саат жыштыгын өзгөртүү үчүн иштөө убактысын жазууга болот. Бөлүүчү негизги сааттын киргизүүсүн MCUга бөлгөндө, бөлүү фактору колдонулганда бардык синхрондуу перифериялык түзүлүштөрдүн ылдамдыгы азаят. Бөлүү факторлору келтирилген Таблица 6-15.
Сааттын жыштыгынын кокусунан өзгөрүшүнө жол бербөө үчүн, CLKPS биттерин өзгөртүү үчүн атайын жазуу процедурасын аткаруу керек:
Clock Prescaler Change Enable (CLKPCE) биттерин бирине жана CLKPRдагы бардык башка биттерди нөлгө жазыңыз.
Төрт циклдин ичинде CLKPCEге нөлдү жазып жатканда CLKPSке керектүү маанини жазыңыз.
Жазуу процедурасы үзгүлтүккө учурабаганына ынануу үчүн алдын ала шкалалоочу жөндөөлөрдү өзгөртүүдө үзгүлтүктөрдү өчүрүү керек.
CKDIV8 Fuse CLKPS биттеринин баштапкы маанисин аныктайт. Эгерде CKDIV8 программаланбаган болсо, CLKPS биттери “0000” абалына келтирилет. Эгерде CKDIV8 программаланган болсо, CLKPS биттери "0011" абалына кайтарылып, ишке киргизүүдө сегиз бөлүү коэффициентин берет. Бул функция тандалган саат булагы учурдагы иштөө шарттарында аппараттын максималдуу жыштыгынан жогору жыштыкка ээ болсо колдонулушу керек. CKDIV8 Fuse жөндөөсүнө карабастан CLKPS биттерине каалаган маанини жазууга болорун эске алыңыз. Колдонмо программалык камсыздоосу жетиштүү бөлүү факторунун болушун камсыз кылышы керек
тандалган саат булагы учурдагы иштөө шарттарында аппараттын максималдуу жыштыгынан жогору жыштыкка ээ болсо тандалат. Аппарат программаланган CKDIV8 Fuse менен жөнөтүлгөн.
Таблица 6-15. Саатты алдын ала өлчөөчү тандоо
CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | Саатты бөлүү фактору |
0 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 1 | 2 |
0 | 0 | 1 | 0 | 4 |
0 | 0 | 1 | 1 | 8 |
0 | 1 | 0 | 0 | 16 |
0 | 1 | 0 | 1 | 32 |
0 | 1 | 1 | 0 | 64 |
0 | 1 | 1 | 1 | 128 |
1 | 0 | 0 | 0 | 256 |
1 | 0 | 0 | 1 | Резервге коюлган |
1 | 0 | 1 | 0 | Резервге коюлган |
1 | 0 | 1 | 1 | Резервге коюлган |
1 | 1 | 0 | 0 | Резервге коюлган |
1 | 1 | 0 | 1 | Резервге коюлган |
1 | 1 | 1 | 0 | Резервге коюлган |
1 | 1 | 1 | 1 | Резервге коюлган |
Эскертүү: Алдын ала шкалалоочу ATtiny15 шайкештик режиминде өчүрүлгөн жана CLKPRга жазуу да, CKDIV8 сактагычты программалоо да системанын саатына эч кандай таасир этпейт (ал ар дайым 1.6 МГц болот).
Кубатты башкаруу жана уйку режимдери
Жогорку өндүрүмдүүлүк жана тармактагы алдыңкы коддун эффективдүүлүгү AVR микроконтроллерлерин аз кубаттуулуктагы колдонмолор үчүн идеалдуу тандоо кылат. Мындан тышкары, уйку режимдери тиркемеге MCUдагы пайдаланылбаган модулдарды өчүрүп, ошону менен электр энергиясын үнөмдөйт. AVR колдонуучуга электр энергиясын керектөөнү колдонмонун талаптарына ылайыкташтырууга мүмкүндүк берген ар кандай уйку режимдерин камсыз кылат.
Уйку режимдери
6-беттеги 1-23-сүрөт ATtiny25/45/85те ар кандай саат системаларын жана алардын бөлүштүрүлүшүн көрсөтөт. Бул көрсөткүч ылайыктуу уйку режимин тандоого жардам берет. Таблица 7-1 ар кандай уйку режимдерин жана алардын ойгонуу булактарын көрсөтөт.
Таблица 7-1. Ар кандай уйку режимдериндеги активдүү саат домендери жана ойготуу булактары
Активдүү Саат Домендери | Осцилляторлор | Ойгонуу булактары | ||||||||||
Уйку режими | clkCPU | clkFLASH | clkIO | clkADC | clkPCK | Негизги саат булагы иштетилди | INT0 жана Pin өзгөртүү | SPM/EEPROM
Даяр |
USI баштоо шарты |
ADC | Башка I/O | Watchdog Үзүлүү |
Бош | X | X | X | X | X | X | X | X | X | X | ||
ADC Noise Reduction | X | X | X(1) | X | X | X | X | |||||
Өчүрүү | X(1) | X | X |
Эскертүү: INT0 үчүн бир гана деңгээлдеги үзгүлтүк.
Үч уйку режиминин бирине кирүү үчүн MCUCRдеги SE бит логикалык бирине жазылып, SLEEP буйругу аткарылышы керек. MCUCR реестриндеги SM[1:0] биттери SLEEP инструкциясы менен кайсы уйку режимин (Бош туруу, ADC ызы-чуусун азайтуу же өчүрүү) жандырууну тандайт. Караңыз Таблица 7-2 кыскача үчүн.
MCU уйку режиминде болгондо иштетилген үзгүлтүккө учураса, MCU ойгонот. Андан кийин MCU ишке киргизүү убактысынан тышкары төрт циклге токтойт, үзгүлтүккө учуратуу тартибин аткарат жана SLEEPден кийинки нускамадан аткарууну улантат. Реестрдин мазмуну File жана SRAM түзмөк уйкудан ойгонгондо өзгөрүлбөйт. Эгерде баштапкы абалга келтирүү уйку режиминде орун алса, MCU ойгонуп, Векторду калыбына келтирүүдөн ишке ашырат.
Эскертүү: эгер ойгонуу үчүн деңгээлди иштеткен үзгүлтүк колдонулса, өзгөртүлгөн деңгээл MCUди ойготуу үчүн (жана MCU үзгүлтүккө учуратуу кызматынын тартибине кириши үчүн) бир нече убакытка кармалышы керек. Караңыз «Тышкы үзгүлтүккө учуратуулар» 49-бетте чоо-жайы үчүн.
Бекер режим
SM[1:0] биттери 00гө жазылганда, SLEEP инструкциясы MCUды Бош режимге киргизет, CPU токтойт, бирок Аналогдук Салыштыргыч, ADC, USI, Таймер/Счетчик, Watchdog жана үзгүлтүккө учуратуу тутумунун ишин улантууга мүмкүндүк берет. тамактануу. Бул уйку режими негизинен clkCPU жана clkFLASHти токтотуп, башка сааттарды иштетүүгө мүмкүндүк берет.
Күтүү режими MCUга тышкы үзгүлтүктөрдөн, ошондой эле Таймердин ашып кетиши сыяктуу ички үзгүлтүктөрдөн ойгонууга мүмкүнчүлүк берет. Эгерде Аналогдук Салыштыргычтын үзгүлтүкүнөн ойгонуу талап кылынбаса, Аналогдук Салыштыргычты ACD битин орнотуу менен өчүрүүгө болот. “ACSR – Аналогдук салыштыруучу башкаруу жана статус реестри” 120-бетте. Бул Күтүү режиминде электр кубатын керектөөнү азайтат. Эгерде ADC иштетилсе, бул режим киргизилгенде конверсия автоматтык түрдө башталат.
ADC Noise Reduction Mode
SM[1:0] биттери 01ге жазылганда, SLEEP инструкциясы MCUди ADC ызы-чуусун азайтуу режимине киргизет, CPU токтойт, бирок ADC, тышкы үзгүлтүктөр жана Watchdog ишин улантууга мүмкүндүк берет (эгер иштетилген болсо). Бул уйку режими clkI/O, clkCPU жана clkFLASHти токтотуп, башка сааттарды иштетүүгө мүмкүндүк берет.
Бул ADC үчүн ызы-чуу чөйрөсүн жакшыртат жана жогорку резолюциядагы өлчөөлөрдү жүргүзүүгө мүмкүндүк берет. Эгерде ADC иштетилсе, бул режим киргизилгенде конверсия автоматтык түрдө башталат. ADC Conversion Complete үзгүлтүгүнөн тышкары, Тышкы баштапкы абалга келтирүү, Watchdog баштапкы абалга келтирүү, Браун-чыгарууну баштапкы абалга келтирүү, SPM/EEPROM даяр үзгүлтүккө учуроо, INT0 боюнча тышкы деңгээлдеги үзгүлтүк же пин өзгөртүү үзгүлтүктөрү MCUди ADC ызы-чуусун азайтуудан ойгото алат. режими.
Өчүрүү режими
SM[1:0] биттери 10го жазылганда, SLEEP инструкциясы MCUди өчүрүү режимине киргизет. Бул режимде Oscillator токтотулат, ал эми тышкы үзгүлтүктөр, USI старт абалын аныктоо жана Watchdog ишин улантат (эгер иштетилген болсо). Тышкы баштапкы абалга келтирүү, Watchdog баштапкы абалга келтирүү, Brown-out Reset, USI баштоо абалын үзгүлтүккө учуроо, INT0 боюнча тышкы деңгээлдеги үзгүлтүк же пин өзгөртүү үзгүлтүктөрү гана MCUди ойгото алат. Бул уйку режими бардык түзүлгөн сааттарды токтотуп, асинхрондук модулдарды гана иштетүүгө мүмкүндүк берет.
Программанын BOD өчүрүү
Brown-out Detector (BOD) BODLEVEL сактагычтары менен иштетилгенде (караңыз 20-беттеги 4-148-таблица), БД камсыз кылууну активдуу контролдоодоtagд уйку мезгилинде. Кээ бир түзмөктөрдө кубатту өчүрүү режиминде программалык камсыздоо аркылуу BODди өчүрүү менен энергияны үнөмдөөгө болот. Уйку режиминин кубаттуулугун керектөө андан кийин BOD глобалдык сактагычтар менен өчүрүлгөндө бирдей деңгээлде болот.
Эгерде BOD программалык камсыздоо тарабынан өчүрүлгөн болсо, BOD функциясы уйку режимине киргенден кийин дароо өчүрүлөт. Уйкудан ойгонгондо, BOD автоматтык түрдө кайра иштетилет. Бул VCC деңгээли уйку мезгилинде төмөндөп кеткен учурда коопсуз иштөөнү камсыз кылат.
BOD өчүрүлгөндө, уйку режиминен ойгонуу убактысы RESET режиминен ойгонуу убактысы менен бирдей болот. Колдонуучу ойгонуу убакыттарын кол менен конфигурациялашы керек, мында MCU кодду аткарууну улантканга чейин диапазондук шилтеменин баштоого убактысы бар жана BOD туура иштеши керек. Таблицада SUT[1:0] жана CKSEL[3:0] сактагыч биттерин караңыз 149-беттеги “Төмөнкү байт”
BOD өчүрүү MCU башкаруу реестринин BODS (BOD Sleep) битинде башкарылат, караңыз "MCUCR - MCU Control Каттоо” 37-бетте. Бул битти бирге жазуу Power-Town режиминде BODди өчүрөт, ал эми нөлдү жазуу BOD активдүү бойдон калат. Демейки жөндөө нөл, башкача айтканда BOD активдүү.
BODS битине жазуу убакыт берилген ырааттуулук жана иштетүү бит менен башкарылат, караңыз "MCUCR - MCU Control Regis- тер” 37-бетте.
Чектөөлөр
BOD өчүрүү функциясы төмөнкү түзмөктөрдө гана ишке ашырылган:
ATtiny25, E версиясы жана жаңыраактары
ATtiny45, D версиясы жана жаңыраактары
ATtiny85, версия C жана жаңыраак
Түзөтүүлөр аппараттын пакетинде белгиленет жана аларды төмөнкүчө жайгаштырууга болот:
8P3 жана 8S2 пакеттеринин астыңкы жагы
Пакеттин үстүнкү жагы 20M1
Электр кубатын азайтуу реестри
Энергияны азайтуу реестри (PRR), караңыз “PRR – Энергияны азайтуу реестри” 38-бетте, жеке перифериялык түзүлүштөргө саатты токтотуу менен электр энергиясын керектөөнү азайтуу ыкмасын камсыз кылат. Перифериялык түзүлүштүн учурдагы абалы тоңуп калган жана киргизүү/чыгаруу регистрлерин окуу же жазуу мүмкүн эмес. Саатты токтоткондо перифериялык жабдык колдонгон ресурстар бош бойдон калат, ошондуктан перифериялык түзүлүш көпчүлүк учурларда саатты токтотуудан мурун өчүрүлүшү керек. PRRдеги битти тазалоо аркылуу жасалган модулду ойготуу, модулду өчүрүүгө чейинки абалга келтирет.
Модулдун өчүрүлүшү жалпы энергия керектөөнү олуттуу кыскартуу үчүн Күтүлүүчү режимде жана Активдүү режимде колдонулушу мүмкүн. Бардык башка уйку режимдеринде саат мурунтан эле токтоп калган. Караңыз 177-беттеги “I/O модулдарынын камсыздоо току” мисалы үчүнamples.
Энергияны керектөөнү минималдаштыруу
AVR көзөмөлдөнүүчү тутумда электр энергиясын керектөөнү минималдаштырууга аракет кылып жатканда эске алуу керек болгон бир нече маселелер бар. Жалпысынан алганда, уйку режимдерин мүмкүн болушунча көбүрөөк колдонуу керек, ал эми уйку режими аппараттын функцияларынын мүмкүн болушунча азыраак иштеши үчүн тандалышы керек. Керексиз бардык функциялар өчүрүлүшү керек. Атап айтканда, төмөнкү модулдар мүмкүн болушунча аз электр керектөөсүнө жетүү үчүн аракет кылып жатканда өзгөчө эске алуу керек болушу мүмкүн.
Аналогдуктан санарипке конвертер
Эгер иштетилсе, ADC бардык уйку режимдеринде иштетилет. Энергияны үнөмдөө үчүн, ADC ар кандай уйку режимине кирүү алдында өчүрүлүшү керек. ADC өчүрүлүп кайра күйгүзүлгөндө, кийинки конверсия кеңейтилген конверсия болот. кайрылыңыз “Аналогду санарипке конвертер” 122-бетте ADC иштеши боюнча маалымат алуу үчүн.
Аналогдук компаратор
Күтүү режимине киргенде, Аналогдук салыштыргыч колдонулбаса, өчүрүлүшү керек. ADC Noise Reduction режимине киргенде, Аналогдук салыштыргыч өчүрүлүшү керек. Башка уйку режимдеринде Аналогдук салыштыргыч автоматтык түрдө өчүрүлөт. Бирок, Analog Comparator ички Vol колдонууга орнотулган болсоtage Шилтеме киргизүү катары, Аналогдук салыштыргыч бардык уйку режимдеринде өчүрүлүшү керек. Болбосо, ички томtage Шилтеме уйку режиминен көз карандысыз иштетилет. кайрылыңыз “Аналогдук салыштыргыч” 119-бетте Аналогдук салыштыргычты кантип конфигурациялоо керектиги жөнүндө маалымат алуу үчүн.
Браун-чыгуучу детектор
Эгерде Brown-out Detector тиркемеде кереги жок болсо, бул модулду өчүрүү керек. Эгерде Brown-out Detector BODLEVEL Fuses тарабынан иштетилсе, ал бардык уйку режимдеринде иштетилет, демек, ар дайым кубаттуулукту керектейт. Терең уйку режимдеринде, бул учурдагы керектөөгө олуттуу салым кошот. Караңыз «Браун-out Detec- ция» 41-бетте жана “Программалык камсыздоону өчүрүү” 35-бетте Brown-out Detector кантип конфигурациялоо керектиги жөнүндө маалымат алуу үчүн.
Ички томtage Шилтеме
The Internal Voltage Шилтеме Brown-out Detection, Analog Comparator же ADC тарабынан керек болгондо иштетилет. Эгерде бул модулдар жогорудагы бөлүмдөрдө сүрөттөлгөндөй өчүрүлгөн болсо, ички тtagэлектрондук маалымдама өчүрүлөт жана ал энергияны керектебейт. Кайра күйгүзүлгөндө, колдонуучу чыгарууну колдонуудан мурун шилтемени иштетүүгө уруксат бериши керек. Эгерде маалымдама уйку режиминде күйгүзүлсө, чыгарууну дароо колдонсо болот. кайрылыңыз «Ички томtage Шилтеме” 42-бетте баштоо убактысы жөнүндө маалымат алуу үчүн.
Watchdog Timer
Колдонмодо Watchdog Timer керек болбосо, бул модулду өчүрүү керек. Watchdog Timer иштетилген болсо, ал бардык уйку режимдеринде иштетилет, демек, ар дайым кубаттуулукту керектейт. Терең уйку режимдеринде, бул учурдагы керектөөгө олуттуу салым кошот. кайрылыңыз «Күзөтчү таймер» 42-бетте Watchdog Таймерди кантип конфигурациялоо керектиги жөнүндө маалымат алуу үчүн.
Порт Pins
Уйку режимине киргенде, бардык порт пиндери минималдуу кубаттуулукту колдонууга конфигурацияланышы керек. Эң негизгиси, эч кандай төөнөгүчтөр резистивдүү жүктөрдү айдабасын камсыз кылуу. Киргизүү/чыгаруу сааты (clkI/O) жана ADC сааты (clkADC) экөө тең токтогон уйку режимдеринде аппараттын киргизүү буферлери өчүрүлөт. Бул эч кандай энергия керектелбейт деп кепилдик берет
керек эмес учурда киргизүү логикасы менен. Кээ бир учурларда, киргизүү логикасы ойгонуу шарттарын аныктоо үчүн керек жана
анда ал иштетилет. бөлүмгө кайрылыңыз “Санарип киргизүүнү иштетүү жана уйку режимдери” 57-бетте Кайсы төөнөгүчтөр иштетилгени тууралуу маалымат алуу үчүн. Киргизүү буфери иштетилсе жана киргизүү сигналы калкып калса же VCC/2ге жакын аналогдук сигнал деңгээли болсо, киргизүү буфери ашыкча кубаттуулукту колдонот.
Аналогдук киргизүү төөнөгүчтөрү үчүн санариптик киргизүү буфери ар дайым өчүрүлүшү керек. Киргизүүчү пиндеги VCC/2ге жакын аналогдук сигнал деңгээли активдүү режимде да олуттуу токту жаратышы мүмкүн. Санарип киргизүү буферлерин Санарип киргизүүнү өчүрүү реестрине (DIDR0) жазуу аркылуу өчүрүүгө болот. кайрылыңыз “DIDR0 – Санарип киргизүүнү өчүрүү реестри 0” 121-бетте чоо-жайы үчүн.
Реестрдин сүрөттөмөсү
MCUCR - MCU башкаруу реестри
MCU башкаруу реестри кубаттуулукту башкаруу үчүн башкаруу биттерин камтыйт.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Окуу/Жазуу | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Баштапкы маани | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Бит 7 – BODS: BOD Уйку
BOD өчүрүү функциясы кээ бир түзмөктөрдө гана бар. Караңыз «Чектөөлөр» 36-бетте.
Уйку учурунда BOD өчүрүү үчүн (караңыз 7-беттеги 1-34-таблица) BODS бити логикага жазылышы керек. Бул убакыттын ырааттуулугу жана MCUCRдеги BODSE иштетүү бити менен башкарылат. Биринчиден, BODS жана BODSE экөө тең бирге коюлушу керек. Экинчиден, төрт саат циклинин ичинде BODS бирге коюлушу керек жана BODSE нөлгө коюлушу керек. BODS бит коюлгандан кийин үч саат цикли менен активдүү болот. Чыныгы уйку режими үчүн BODди өчүрүү үчүн BODS активдүү болуп турганда уйку көрсөтмөсү аткарылышы керек. BODS бит үч саат циклинен кийин автоматтык түрдө тазаланат.
Sleeping BOD ишке ашырылбаган түзмөктөрдө бул бит колдонулбайт жана ар дайым нөлдү окуйт.
5-бит – SE: Уйкуну иштетүү
SLEEP инструкциясы аткарылганда MCU уйку режимине кириши үчүн SE бити логикага жазылууга тийиш. MCU уйку режимине кирбеши үчүн, эгерде бул программисттин максаты болбосо, Sleep Enable (SE) битине SLEEP инструкциясы аткарылардын алдында бирге жазуу жана ойгонгондон кийин дароо тазалоо сунушталат.
Bits 4:3 – SM[1:0]: Уйку режими 1 жана 0 биттерин тандоо
Бул биттер көрсөтүлгөндөй үч жеткиликтүү уйку режиминин арасынан тандашат Таблица 7-2.
Таблица 7-2. Уйку режимин тандоо
SM1 | SM0 | Уйку режими |
0 | 0 | Бош |
0 | 1 | ADC Noise Reduction |
1 | 0 | Өчүрүү |
1 | 1 | Резервге коюлган |
2-бит – BODSE: BOD уйку режимин иштетүү
BOD өчүрүү функциясы кээ бир түзмөктөрдө гана бар. Караңыз «Чектөөлөр» 36-бетте.
BODSE бити BODS битинин сүрөттөмөсүндө түшүндүрүлгөндөй, BODS башкаруу битинин орнотулушун камсыздайт. BOD өчүрүү убакыттын ырааттуулугу менен башкарылат.
Бул бит программалык камсыздоону өчүрүү ишке ашырылбаган түзмөктөрдө колдонулбайт жана ал түзмөктөрдө нөл катары окулат.
PRR – Энергияны азайтуу реестри
Энергияны азайтуу реестри перифериялык саат сигналдарын өчүрүүгө уруксат берүү менен электр энергиясын керектөөнү азайтуу ыкмасын камсыз кылат.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x20 | – | – | – | – | PRTIM1 | PRTIM0 | ПРУСИ | PRADC | PRR |
Окуу/Жазуу | R | R | R | R | R/W | R/W | R/W | R/W | |
Баштапкы маани | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bits 7:4 – Res: Запастагы бит
Бул биттер ATtiny25/45/85те сакталган биттер жана ар дайым нөл катары окулат.
3-бит – PRTIM1: Кубатты азайтуу таймери/эсептегич1
Бул битке логиканы жазуу Timer/Counter1 модулун өчүрөт. Таймер/Счетчик1 иштетилгенде, операция өчүрүлгөнгө чейинкидей уланат.
2-бит – PRTIM0: Кубатты азайтуу таймери/эсептегич0
Бул битке логиканы жазуу Timer/Counter0 модулун өчүрөт. Таймер/Счетчик0 иштетилгенде, операция өчүрүлгөнгө чейинкидей уланат.
Bit 1 – PRUSI: Power Reduction USI
Бул битке логиканы жазуу модулга саатты токтотуу менен USIди өчүрөт. USI кайра ойгонгондо, туура иштешин камсыз кылуу үчүн USI кайра инициализацияланышы керек.
Бит 0 – PRADC: Power Reduction ADC
Бул битке логиканы жазуу ADCди өчүрөт. Өчүрүүдөн мурун ADC өчүрүлүшү керек. Белгилей кетсек, ADC сааты аналогдук компаратордун кээ бир бөлүктөрүндө да колдонулат, бул аналогдук компараторду бул бит жогору болгондо колдонууга болбойт дегенди билдирет.
Системаны башкаруу жана баштапкы абалга келтирүү
AVR баштапкы абалга келтирилүүдө
Калыбына келтирүү учурунда бардык киргизүү/чыгаруу регистрлери баштапкы маанилерине коюлат жана программа кайра орнотуу векторунан ишке киришет. Калыбына келтирүү векторуна жайгаштырылган нускама RJMP – Салыштырмалуу секирүү – баштапкы абалга келтирүү тартибине инструкция болушу керек. Эгерде программа үзүлүү булагын эч качан иштетпесе, Үзүлүү векторлору колдонулбайт жана бул жерлерде кадимки программа коду жайгаштырылышы мүмкүн. Схемадагы схема 8-1-сүрөт баштапкы абалга келтирүү логикасын көрсөтөт. Калыбына келтирүү схемасынын электрдик параметрлери келтирилген “Тутум жана баштапкы абалга келтирүү мүнөздөмөлөрү” 165-бетте.
Figure 8-1 Логиканы кайра орнотуу
AVRдын киргизүү/чыгаруу порттору баштапкы абалга келтирилген булак активдүү болгондо дароо баштапкы абалга келтирилет. Бул иштөө үчүн эч кандай саат булагын талап кылбайт.
Бардык баштапкы абалга келтирүү булактары аракетсиз болуп калгандан кийин, кечиктирүү эсептегичи чакырылып, ички баштапкы абалга келтирүүнү узартат. Бул нормалдуу иштөө башталганга чейин кубаттуулукту туруктуу деңгээлге жеткирүүгө мүмкүндүк берет. Кечиктирүүнү эсептегичтин тайм-аут мезгили колдонуучу тарабынан SUT жана CKSEL Fuses аркылуу аныкталат. Кечиктирүү мезгили үчүн ар кандай тандоолор көрсөтүлгөн «Саат Булактар» 25-бетте.
Булактарды баштапкы абалга келтирүү
ATtiny25/45/85 баштапкы абалга келтирүүнүн төрт булагы бар:
Күйгүзүлгөн абалга кайтаруу. MCU баштапкы абалга келтирилетtage Power-on Reset босогосунан (VPOT) төмөн.
Тышкы баштапкы абалга келтирүү. RESET пининде импульстун минималдуу узундугунан узакка төмөн деңгээл болгондо MCU баштапкы абалга келтирилет.
Watchdog Reset. Watchdog таймеринин мөөнөтү бүтүп, Watchdog иштетилгенде MCU баштапкы абалга келтирилет.
Brown-out Reset. MCU баштапкы абалга келтирилетtage VCC Brown-out Reset босогосунан (VBOT) төмөн жана Brown-out Detector иштетилген.
Күйгүзүлгөн баштапкы абалга келтирүү
Power-on Reset (POR) импульс Чипти аныктоо схемасы тарабынан түзүлөт. аныктоо деңгээли аныкталат «Си- жана мүнөздөмөлөрдү баштапкы абалга келтирүү” 165-бетте. POR VCC аныктоо деңгээлинен төмөн болгондо иштетилет. POR схемасы Баштапкы абалга келтирүүнү баштоо үчүн, ошондой эле камсыздоо көлөмүндөгү катаны аныктоо үчүн колдонулушу мүмкүн.tage.
Күйгүзүлгөндө баштапкы абалга келтирүү (POR) схемасы түзмөк күйгүзүлгөндөн кийин баштапкы абалга келтирилишин камсыздайт. Күйгүзүлгөндө баштапкы абалга келтирүү босогосуна жетүү тtage кечиктирүү эсептегичти чакырат, ал VCC жогорулагандан кийин аппарат RESET режиминде канча убакытка чейин сакталаарын аныктайт. RESET сигналы VCC аныктоо деңгээлинен төмөн түшкөндө эч кандай кечиктирбестен кайра иштетилет.
Сүрөт 8-2. MCU ишке киргизүү, RESET VCC менен байланышкан
ИЧКИ КАЙРЫЛУУ
8-3-сүрөт. MCU ишке киргизүү, RESET Сырттан узартылган
Тышкы баштапкы абалга келтирүү
Тышкы баштапкы абалга келтирүү иштетилген болсо, RESET пининдеги төмөнкү деңгээл менен түзүлөт. Импульстун минималдуу туурасынан узунураак импульстарды кайра коюу (караңыз “Тутум жана баштапкы абалга келтирүү мүнөздөмөлөрү” 165-бетте) саат иштебесе дагы, баштапкы абалга келтирүүнү жаратат. Кыскараак импульстар баштапкы абалга келтирүүгө кепилдик берилбейт. Колдонулган сигнал Калыбына келтирүү босогосуна жеткендеtage – VRST – анын оң жагында, кечиктирүү эсептегичи Тайм-ауттун мөөнөтү аяктагандан кийин MCUди баштайт.
8-4-сүрөт. Иш учурунда тышкы баштапкы абалга келтирүү
Күңүрттү аныктоо
ATtiny25/45/85 иш учурунда VCC деңгээлин туруктуу триггер деңгээлине салыштыруу аркылуу көзөмөлдөө үчүн On-chip Brown-out Detection (BOD) схемасына ээ. BOD үчүн триггердин деңгээлин BODLEVEL Fuses тандаса болот. Триггердин деңгээли күрөң чыгууну аныктоону камсыз кылуу үчүн гистерезиске ээ. Аныктоо деңгээлиндеги гистерезис VBOT+ = VBOT + VHYST/2 жана VBOT- = VBOT – VHYST/2 деп чечмелениши керек.
BOD иштетилгенде жана VCC триггер деңгээлинен төмөн мааниге чейин төмөндөйт (VBOT-жылы 8-5-сүрөт), Brown-out Reset дароо иштетилет. VCC триггер деңгээлинен жогору көтөрүлгөндө (VBOT+ in 8-5-сүрөт), кечиктирүү эсептегичи tTOUT Тайм-аут мезгили аяктагандан кийин MCUды баштайт.
BOD схемасы VCCтин төмөндөшүн гана аныктайт, эгерде томtage триггер деңгээлинен ылдыйда tBOD берилгенден көпкө чейин калат “Тутум жана баштапкы абалга келтирүү мүнөздөмөлөрү” 165-бетте.
Watchdog Reset
Watchdog убактысы бүтүп калганда, ал бир CK циклинин узактыгына кыска кайра коюу импульсун жаратат. Бул импульстун түшүүчү четинде кечигүү таймери Тайм-Аут мезгилин tTOUT санай баштайт. кайрылыңыз «Күзөтчү таймер» 42-бетте Watchdog Таймеринин иштеши тууралуу маалымат алуу үчүн.
Тtage Шилтеме иштетүү сигналдары жана ишке киргизүү убактысы
Томtagэлектрондук маалымдама аны колдонуу ыкмасына таасир эте турган ишке киргизүү убактысына ээ. Ишке киргизүү убактысы көрсөтүлгөн “Тутум жана баштапкы абалга келтирүү мүнөздөмөлөрү” 165-бетте. Электр кубатын үнөмдөө үчүн шилтеме дайыма күйгүзүлө бербейт. Реферат төмөнкү учурларда күйүп турат:
BOD иштетилгенде (BODLEVEL[2:0] Fuse биттерин программалоо менен).
Качан тилке шилтемеси Аналогдук салыштыргычка туташтырылганда (ACSRде ACBG битин орнотуу менен).
ADC иштетилгенде.
Ошентип, BOD иштетилбегенде, ACBG битин орноткондон кийин же ADCти иштеткенден кийин, колдонуучу Аналогдук салыштыргычтан же ADCден чыгууну колдонуудан мурун шилтемени баштоого дайыма уруксат бериши керек. Өчүрүү режиминде энергия керектөөнү азайтуу үчүн, колдонуучу өчүрүү режимине кирээрден мурун маалымдама өчүк болушун камсыз кылуу үчүн жогорудагы үч шарттан кача алат.
Watchdog Timer
Watchdog таймери 128 кГц жыштыкта иштеген чиптеги осциллятордон иштейт. Watchdog Timer алдын ала масштабын башкаруу менен, Watchdog Reset аралыгын сүрөттө көрсөтүлгөндөй жөнгө салууга болот 8-беттеги 3-46-таблица. WDR – Watchdog Reset – нускамасы Watchdog Таймерин баштапкы абалга келтирет. Watchdog таймери өчүрүлгөндө жана чипти баштапкы абалга келтирүү пайда болгондо да баштапкы абалга келтирилет. Калыбына келтирүү мезгилин аныктоо үчүн он түрдүү саат циклин тандаса болот. Эгерде баштапкы абалга келтирүү мөөнөтү башка Watchdog баштапкы абалга келтирилбестен бүтсө, ATtiny25/45/85 баштапкы абалга келтирилип, Векторду калыбына келтирүүдөн ишке ашырылат. Watchdog Reset боюнча убакыттын чоо-жайы үчүн, караңыз 8-беттеги 3-46-таблица.
Watchdog таймерин кайра орнотуунун ордуна үзгүлтүккө учуратууга да конфигурациялоого болот. Күчтү өчүрүүдөн ойгонуу үчүн Күзөтчүнү колдонууда бул абдан пайдалуу болушу мүмкүн.
Watchdogту атайылап өчүрүүнүн же күтүүсүздөн тайм-аут мезгилинин өзгөрүшүнө жол бербөө үчүн WDTON сактагычы менен эки башка коопсуздук деңгээли 1-бетте көрсөтүлгөндөй тандалат. Таблица 8-1 кайрылыңыз «Шарттарды өзгөртүү үчүн убакыттын ырааттуулугу Күзөтчү таймердин фигурасы” 43-бетте чоо-жайы үчүн.
Таблица 8-1. WDT Конфигурациясы WDTONдун Фузер Орнотууларынын Функциясы катары
ВДТОН | Коопсуздук деңгээли | WDT баштапкы абалы | WDT кантип өчүрүү керек | Тайм-аутту кантип өзгөртүү керек |
Программаланбаган | 1 | Өчүрүлгөн | Убактылуу ырааттуулук | Эч кандай чектөөлөр |
Программаланган | 2 | Иштетилди | Ар дайым иштетилген | Убактылуу ырааттуулук |
8-7-сүрөт. Watchdog Timer
Watchdog таймеринин конфигурациясын өзгөртүү үчүн убакыттын ырааттуулугу
Конфигурацияны өзгөртүү ырааттуулугу эки коопсуздук деңгээлинин ортосунда бир аз айырмаланат. Ар бир деңгээл үчүн өзүнчө процедуралар сүрөттөлөт.
Коопсуздуктун 1-деңгээли: Бул режимде Watchdog Таймери адегенде өчүрүлгөн, бирок WDE битинин бирине эч кандай чектөөсүз жазуу менен иштетилиши мүмкүн. Иштетилген Watchdog Таймерди өчүрүү үчүн убакыттын ырааттуулугу керек. Иштетилген Watchdog таймерин өчүрүү үчүн төмөнкү процедураны аткаруу керек:
Ошол эле операцияда WDCE жана WDEге логикалык бирди жазыңыз. Логика WDE битинин мурунку маанисине карабастан WDEге жазылууга тийиш.
Кийинки төрт саат циклинин ичинде, ошол эле операцияда WDE жана WDP биттерин каалагандай жазыңыз, бирок WDCE бит тазаланган менен.
Коопсуздуктун 2-деңгээли: Бул режимде Watchdog Таймери ар дайым иштетилет жана WDE бит дайыма бир катары окулат. Watchdog Тайм-аут мезгилин өзгөртүүдө убакыттын ырааттуулугу керек. Watchdog тайм-аутун өзгөртүү үчүн төмөнкү процедураны аткаруу керек:
Ошол эле операцияда WDCE жана WDEге логикалык бирди жазыңыз. WDE ар дайым орнотулганына карабастан, убакыт ырааттуулугун баштоо үчүн WDE бирине жазылышы керек.
Кийинки төрт саат циклинин ичинде, ошол эле операцияда, WDP биттерин каалагандай жазыңыз, бирок WDCE бит тазаланган менен. WDE битине жазылган маани мааниге ээ эмес.
Code Example
Төмөнкү код мурункуample WDTди өчүрүү үчүн бир жыйынды жана бир C функциясын көрсөтөт. Эксample үзгүлтүктөр башкарылат деп болжолдойт (мисалы, глобалдык үзгүлтүктөрдү өчүрүү аркылуу), бул функцияларды аткарууда эч кандай үзгүлтүктөр болбойт.
Ассамблея коду Example(1) |
WDT_off:
wdr ; MCUSRдеги WDRFди тазалоо лди r16, (0< MCUSR чыгып, r16 ; WDCE жана WDEге логикалык бирин жазыңыз ; Күтүлбөгөн жерден Күзөтчүнүн баштапкы абалга келтирилишине жол бербөө үчүн эски алдын ала шкалалоочу жөндөөнү сактаңыз r16, WDTCR ori r16, (1< WDTCR чыгып, r16 ; WDT өчүрүү лди r16, (0< WDTCR чыгып, r16 рет |
C Code Example(1) |
Void WDT_off(жараксыз)
{ _WDR(); /* MCUSRдеги WDRFди тазалоо */ MCUSR = 0x00 /* WDCE жана WDEге логикалык бирин жаз */ WDTCR |= (1< /* WDT өчүрүү */ WDTCR = 0x00; } |
Эскертүү: 1. Караңыз «Код Examples” 6-бетте.
Реестрдин сүрөттөмөсү
MCUSR - MCU статусунун реестри
MCU Статус Реестри кайсы баштапкы абалга келтирилген булак MCU баштапкы абалга келтирилгени тууралуу маалымат берет.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x34 | – | – | – | – | WDRF | BORF | EXTRF | PORF | MCUSR |
Окуу/Жазуу | R | R | R | R | R/W | R/W | R/W | R/W |
Баштапкы маани 0 0 0 0 Bit Description караңыз
Bits 7:4 – Res: Запастагы бит
Бул биттер ATtiny25/45/85те сакталган биттер жана ар дайым нөл катары окулат.
3-бит – WDRF: Watchdog Flag баштапкы абалга келтирүү
Бул бит Watchdog баштапкы абалга келтирилгенде коюлат. Бит күйгүзүлгөндөн кийин баштапкы абалга келтирилет, же желекчеге логикалык нөлдү жазуу менен.
2-бит – BORF: Браун-чыгып кайра орнотуу желек
Бул бит Браун өчүрүү баштапкы абалга келтирилгенде коюлат. Бит күйгүзүлгөндөн кийин баштапкы абалга келтирилет, же желекчеге логикалык нөлдү жазуу менен.
1-бит – EXTRF: Тышкы баштапкы абалга келтирүү желеги
Бул бит Тышкы баштапкы абалга келтирилгенде коюлат. Бит күйгүзүлгөндөн кийин баштапкы абалга келтирилет, же желекчеге логикалык нөлдү жазуу менен.
Bit 0 – PORF: күйгүзүлгөндө баштапкы абалга келтирилген желек
Бул бит күйгүзүлгөндө баштапкы абалга келтирилгенде коюлат. Бит желекке логикалык нөлдү жазуу менен гана баштапкы абалга келтирилет.
Баштапкы абалга келтирүү шарттарын аныктоо үчүн баштапкы абалга келтирүү желектерин колдонуу үчүн, колдонуучу MCUSR программасын мүмкүн болушунча эртерээк окуп чыгып, баштапкы абалга келтириши керек. Эгерде реестр башка баштапкы абалга келтирилгенге чейин тазаланса, баштапкы абалга келтирүүнүн булагын Калыбына келтирүү желектерин текшерүү аркылуу табууга болот.
WDTCR - Watchdog Таймер башкаруу реестри
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x21 | WDIF | WDIE | WDP3 | WDCE | WDE | WDP2 | WDP1 | WDP0 | WDTCR |
Окуу/Жазуу | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Баштапкы маани | 0 | 0 | 0 | 0 | X | 0 | 0 | 0 |
Bit 7 – WDIF: Watchdog таймооту үзгүлтүккө учуратуу желекчеси
Бул бит Watchdog Таймеринде тайм-аут болгондо жана Watchdog Таймери үзгүлтүккө конфигурацияланганда коюлат. WDIF тиешелүү үзгүлтүктөрдү иштетүү векторун аткарууда аппараттык камсыздоо тарабынан тазаланат. Же болбосо, WDIF желекке логикалык жазууну жазуу менен тазаланат. SREG жана WDIEде I-бит коюлганда, Watchdog Time-out Interrupt аткарылат.
6-бит - WDIE: Watchdog таймаутунун үзгүлтүккө учурашын иштетүү
Бул бит бирине жазылганда, WDE тазаланат жана Статус реестриндеги I-бит коюлганда, Watchdog Time-out Interrupt иштетилет. Бул режимде Күтүүчү Таймерде тайм-аут болуп калса, баштапкы абалга келтирүүнүн ордуна тиешелүү үзгүлтүк аткарылат.
Эгерде WDE орнотулса, WDIE тайм-аут болгондо жабдык тарабынан автоматтык түрдө тазаланат. Бул үзгүлтүктү колдонууда Watchdog Reset коопсуздугун сактоо үчүн пайдалуу. WDIE бит тазалангандан кийин, кийинки тайм-аут баштапкы абалга келтирүүнү жаратат. Watchdog баштапкы абалга келтирбөө үчүн, WDIE ар бир үзгүлтүктөн кийин коюлушу керек.
Таблица 8-2. Watchdog таймер конфигурациясы
WDE | WDIE | Watchdog Timer State | Тайм-аут боюнча аракет |
0 | 0 | Токтотту | Жок |
0 | 1 | чуркоо | Үзүлүү |
1 | 0 | чуркоо | Калыбына келтирүү |
1 | 1 | чуркоо | Үзүлүү |
Bit 4 - WDCE: Watchdog өзгөртүү иштетүү
Бул бит WDE бити логикалык нөлгө жазылганда коюлушу керек. Болбосо, Watchdog иштебейт. Бирине жазылгандан кийин, аппараттык камсыздоо бул битти төрт саат циклинен кийин тазалайт. Watchdog өчүрүү процедурасы үчүн WDE битинин сыпаттамасын караңыз. Бул бит да алдын ала масштабдагы биттерди өзгөртүүдө коюлушу керек. Караңыз «Убакыттын ырааттуулугу Watchdog таймеринин конфигурациясын өзгөртүү үчүн” 43-бетте.
3-бит – WDE: Watchdog иштетүү
WDE логикалык бирине жазылганда, Watchdog Timer иштетилет, ал эми WDE логикалык нөлгө жазылса, Watchdog Timer функциясы өчүрүлөт. WDE WDCE битинде логикалык деңгээл биринчи болгондо гана тазаланышы мүмкүн. Иштетилген Watchdog таймерин өчүрүү үчүн төмөнкү процедураны аткаруу керек:
Ошол эле операцияда WDCE жана WDEге логикалык бирди жазыңыз. Логиканы өчүрүү операциясы башталганга чейин бирге коюлганына карабастан, WDEге жазылышы керек.
Кийинки төрт саат циклинин ичинде WDEге 0 логикасын жазыңыз. Бул Watchdogту өчүрөт.
Коопсуздуктун 2-деңгээлинде, жогоруда сүрөттөлгөн алгоритм менен да Watchdog таймерин өчүрүү мүмкүн эмес. Караңыз “Күзөтүүчү таймердин конфигурациясын өзгөртүү үчүн убакыттын ырааттуулугу” 43-бетте.
1-коопсуздук деңгээлинде, WDE MCUSRдагы WDRF тарабынан жокко чыгарылат. Караңыз “MCUSR – MCU Статус Реестри” 44-бетте WDRF сүрөттөө үчүн. Бул WDRF коюлганда, WDE ар дайым орнотулганын билдирет. WDEди тазалоо үчүн, WDRF жогоруда сүрөттөлгөн процедура менен Watchdogту өчүрүүдөн мурун тазаланышы керек. Бул өзгөчөлүк бузулууга алып келген шарттарда бир нече баштапкы абалга келтирүүнү жана катадан кийин коопсуз ишке киргизүүнү камсыздайт.
Эскертүү: Эгер күзөтчү таймер тиркемеде колдонулбаса, аппаратты инициализациялоодо кароолчу өчүрүү процедурасынан өтүү маанилүү. Эгерде Watchdog кокусунан иштетилген болсо, мисалыampКачып кеткен көрсөткүч же күрөң чыгып кеткен шартта, аппарат баштапкы абалга келтирилет, бул өз кезегинде жаңы күзөтчүнүн баштапкы абалга келтирилишине алып келет. Мындай абалды болтурбоо үчүн, колдонмо программалык камсыздоосу инициализация тартибинде дайыма WDRF желегин жана WDE башкаруу биттерин тазалап турушу керек.
Бит 5, 2:0 – WDP[3:0]: Watchdog Timer Prescaler 3, 2, 1 жана 0
WDP[3:0] биттери Watchdog Таймери иштетилгенде алдын ала шкалалоону аныктайт. Ар кандай алдын ала масштабдоо маанилери жана аларга тиешелүү Таймут мезгили көрсөтүлгөн Таблица 8-3.
Таблица 8-3. Watchdog Timer Prescale Select
WDP3 | WDP2 | WDP1 | WDP0 | WDT осциллятор циклдеринин саны | VCC = 5.0V боюнча типтүү тайм-аут |
0 | 0 | 0 | 0 | 2K (2048) цикл | 16 мс |
0 | 0 | 0 | 1 | 4K (4096) цикл | 32 мс |
0 | 0 | 1 | 0 | 8K (8192) цикл | 64 мс |
0 | 0 | 1 | 1 | 16K (16384) цикл | 0.125 с |
0 | 1 | 0 | 0 | 32K (32764) цикл | 0.25 с |
0 | 1 | 0 | 1 | 64K (65536) цикл | 0.5 с |
0 | 1 | 1 | 0 | 128K (131072) цикл | 1.0 с |
0 | 1 | 1 | 1 | 256K (262144) цикл | 2.0 с |
1 | 0 | 0 | 0 | 512K (524288) цикл | 4.0 с |
1 | 0 | 0 | 1 | 1024K (1048576) цикл | 8.0 с |
Таблица 8-3. Watchdog Таймер алдын ала тандоо (уландысы)
WDP3 | WDP2 | WDP1 | WDP0 | WDT осциллятор циклдеринин саны | VCC = 5.0V боюнча типтүү тайм-аут |
1 | 0 | 1 | 0 | Резервге коюлган(1) | |
1 | 0 | 1 | 1 | ||
1 | 1 | 0 | 0 | ||
1 | 1 | 0 | 1 | ||
1 | 1 | 1 | 0 | ||
1 | 1 | 1 | 1 |
Эскертүү: 1. Эгерде тандалган болсо, 0b1010 төмөн жарактуу орнотуулардын бири колдонулат.
Үзгүлтүктөр
Бул бөлүмдө ATtiny25/45/85те аткарылган үзгүлтүктөр менен иштөөнүн өзгөчөлүктөрү сүрөттөлөт. AVR үзгүлтүктөрүн башкаруунун жалпы түшүндүрмөсү үчүн, караңыз 12-беттеги "Кайра коюу жана үзгүлтүккө учуратуу".
ATtiny25/45/85теги үзгүлтүктүү векторлор
ATtiny25/45/85 үзүлүү векторлору сүрөттөлгөн Таблица 9-1төмөндө.
Таблица 9-1. Векторлорду баштапкы абалга келтирүү жана үзгүлтүккө учуратуу
Вектор № | Программанын дареги | Булак | Interrupt Definition |
1 | 0x0000 | RESET | Тышкы пин, күйгүзүлгөн баштапкы абалга келтирүү, күрөңдү кайра коюу, кароолчунун баштапкы абалына келтирүү |
2 | 0x0001 | INT0 | Тышкы үзгүлтүккө суроо-талап 0 |
3 | 0x0002 | PCINT0 | Pin өзгөртүү үзгүлтүккө суроо 0 |
4 | 0x0003 | TIMER1_COMPA | Таймер/Счетчик1 Салыштыруу A дал келүү |
5 | 0x0004 | TIMER1_OVF | Таймер/эсептегич1 ашыкча |
6 | 0x0005 | TIMER0_OVF | Таймер/эсептегич0 ашыкча |
7 | 0x0006 | EE_RDY | EEPROM даяр |
8 | 0x0007 | ANA_COMP | Аналогдук компаратор |
9 | 0x0008 | ADC | ADC конверсиясы аяктады |
10 | 0x0009 | TIMER1_COMPB | Таймер/Счетчик1 Б дал келүү |
11 | 0x000A | TIMER0_COMPA | Таймер/Счетчик0 Салыштыруу A дал келүү |
12 | 0x000B | TIMER0_COMPB | Таймер/Счетчик0 Б дал келүү |
13 | 0x000C | WDT | Watchdog Тайм-аут |
14 | 0x000D | USI_START | USI START |
15 | 0x000E | USI_OVF | USI Overflow |
Эгерде программа үзүлүү булагын эч качан иштетпесе, Үзүлүү векторлору колдонулбайт жана бул жерлерде кадимки программа коду жайгаштырылышы мүмкүн.
ATtiny25/45/85 ичинде үзгүлтүккө учураган вектордук даректер үчүн типтүү жана жалпы орнотуу программанын мурунку бөлүгүндө көрсөтүлгөн.ampле төмөндө.
Ассамблея коду Example | ||
.org 0x0000 | ;Кийинки даректи коюу | билдирүү |
rjmp RESET | ; Дарек 0x0000 | |
rjmp INT0_ISR | ; Дарек 0x0001 | |
rjmp PCINT0_ISR | ; Дарек 0x0002 | |
rjmp TIM1_COMPA_ISR | ; Дарек 0x0003 | |
rjmp TIM1_OVF_ISR | ; Дарек 0x0004 | |
rjmp TIM0_OVF_ISR | ; Дарек 0x0005 | |
rjmp EE_RDY_ISR | ; Дарек 0x0006 | |
rjmp ANA_COMP_ISR | ; Дарек 0x0007 | |
rjmp ADC_ISR | ; Дарек 0x0008 | |
rjmp TIM1_COMPB_ISR | ; Дарек 0x0009 | |
rjmp TIM0_COMPA_ISR | ; Дарек 0x000A | |
rjmp TIM0_COMPB_ISR | ; Дарек 0x000B | |
rjmp WDT_ISR | ; Дареги 0x000C | |
rjmp USI_START_ISR | ; Дарек 0x000D | |
rjmp USI_OVF_ISR | ; Дарек 0x000E | |
КАЛТЫРУУ: | ; Негизги программанын башталышы | |
; Дарек 0x000F | ||
… |
Эскертүү: Караңыз «Код Examples” 6-бетте.
Тышкы үзгүлтүктөр
Тышкы үзгүлтүктөр INT0 пин же PCINT[5:0] пиндеринин каалаганы менен ишке ашырылат. Иштетилген болсо, INT0 же PCINT[5:0] пиндери чыгуулар катары конфигурацияланган күндө да үзгүлтүккө учураарын байкаңыз. Бул өзгөчөлүк программалык үзгүлтүктү жаратуу жолун камсыз кылат. Пинди өзгөртүү үзгүлтүккө учураса, PCI иштетилген PCINT[5:0] пин которуштуруулар иштетилет. PCMSK реестринин көзөмөлү, кайсы пиндер пинди өзгөртүү үзгүлтүккө учурашына өбөлгө түзөт. PCINT[5:0] боюнча пин өзгөртүү үзгүлтүктөрү асинхрондуу түрдө аныкталат. Бул бул үзгүлтүктөр бөлүктү Күтүү режиминен башка уйку режимдеринен да ойготуу үчүн колдонулушу мүмкүн экенин билдирет.
INT0 үзгүлтүккө учурашы төмөндөө же көтөрүлүп жаткан четине же төмөн деңгээлге алып келиши мүмкүн. Бул MCU башкаруу реестринин спецификациясында көрсөтүлгөндөй орнотулган - MCUCR. INT0 үзгүлтүккө учурашы иштетилгенде жана деңгээл иштетилгендей конфигурацияланганда, пин төмөн кармалып турганда үзгүлтүккө учурайт. INT0 боюнча төмөндөө же көтөрүлүп жаткан чектин үзгүлтүктөрүн таануу үчүн I/O саатынын болушу талап кылынарын эске алыңыз. «Саат системалары жана аларды бөлүштүрүү». 23-бет.
Төмөн деңгээлдеги үзгүлтүккө учуроо
INT0 боюнча төмөнкү деңгээлдеги үзгүлтүк асинхрондук түрдө аныкталды. Бул бул үзгүлтүккө бөлүктү Күтүү режиминен башка уйку режимдеринен да ойготуу үчүн колдонулушу мүмкүн экенин билдирет. I/O сааты Күтүү режиминен башка бардык уйку режимдеринде токтойт.
Көңүл буруңуз, эгер деңгээлдеги триггерленген үзгүлтүк кубаты өчүрүлгөндөн ойгонуу үчүн колдонулса, талап кылынган деңгээл MCU деңгээлдин үзгүлтүккө учурашы үчүн ойготууну аяктоосу үчүн жетиштүү узакка кармалышы керек. Эгерде деңгээл Ишке киргизүү убактысы аяктаганга чейин жоголсо, MCU дагы эле ойгонот, бирок үзгүлтүккө учурабайт. Ишке киргизүү убактысы SUT жана CKSEL сактагычтары тарабынан сүрөттөлгөндөй аныкталат “Системанын сааты жана Сааттын параметрлери” 23-бетте.
Эгерде үзгүлтүккө учуратуу пининдеги төмөнкү деңгээл аппарат ойгонгонго чейин алынып салынса, анда программанын аткарылышы үзгүлтүккө учуратуу кызматынын тартибине бурулбайт, бирок SLEEP буйругунан кийинки нускамадан уланат.
Pin Change үзгүлтүккө учуроо
Мурункуampпин өзгөртүү үзгүлтүккө учуроо le көрсөтүлгөн 9-1-сүрөт.
Реестрдин сүрөттөмөсү
MCUCR - MCU башкаруу реестри
Үзүлүүнү башкаруунун тышкы реестри А үзгүлтүктөрдү сезүү үчүн башкаруу биттерин камтыйт.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Окуу/Жазуу | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Баштапкы маани | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bits 1:0 – ISC0[1:0]: Interrupt Sense Control 0 бит 1 жана бит 0
Тышкы үзүлүү 0, эгерде SREG I желеги жана тиешелүү үзүлүү маскасы орнотулган болсо, INT0 тышкы пин менен активдештирилет. Үзгүлтүктү активдештирген тышкы INT0 пининдеги деңгээл жана четтер аныкталат Таблица 9-2. INT0 пининдеги маани sampчеттерин аныктоо алдында алып келген. Чет же өчүрүү үзгүлтүктөрү тандалган болсо, бир саат мезгилинен узакка созулган импульстар үзгүлтүккө учурайт. Кыска импульстар үзгүлтүккө учуроо үчүн кепилдик берилбейт. Төмөнкү деңгээлдеги үзгүлтүк тандалган болсо, төмөнкү деңгээл үзгүлтүккө учуроо үчүн учурда аткарылып жаткан нускама аяктаганга чейин кармалышы керек.
Таблица 9-2. Interrupt 0 Sense Control
ISC01 | ISC00 | Description |
0 | 0 | INT0 төмөн деңгээли үзгүлтүккө учуроо өтүнүчүн жаратат. |
0 | 1 | INT0 боюнча ар кандай логикалык өзгөртүү үзгүлтүккө учуратуу өтүнүчүн жаратат. |
1 | 0 | INT0 түшүп жаткан чети үзгүлтүккө учуроо өтүнүчүн жаратат. |
1 | 1 | INT0дун өсүп жаткан чети үзгүлтүккө учуроо өтүнүчүн жаратат. |
GIMSK - Жалпы үзгүлтүккө маска реестри
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3B | – | INT0 | PCIe | – | – | – | – | – | GIMSK |
Окуу/Жазуу | R | R/W | R/W | R | R | R | R | R | |
Баштапкы маани | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bits 7, 4:0 – Res: Reserved Bits
Бул биттер ATtiny25/45/85те сакталган биттер жана ар дайым нөл катары окулат.
Bit 6 – INT0: Тышкы үзгүлтүккө суроо 0 Иштет
INT0 бит коюлганда (бир) жана Статус реестриндеги (SREG) I-бит коюлганда (бир), тышкы пин үзгүлтүккө учуратуу иштетилет. MCU башкаруу реестриндеги (MCUCR) Interrupt Sense Control0 биттери 1/0 (ISC01 жана ISC00) тышкы үзгүлтүктүн INT0 пининин көтөрүлүп жана/же түшкөн четинде же сезилген деңгээлде иштетилгенин аныктайт. INT0 чыгаруу катары конфигурацияланса да, пиндеги аракет үзгүлтүккө учуроо өтүнүчүн жаратат. Тышкы үзүлүү суроо-талабынын 0 тиешелүү үзгүлтүккө учурашы INT0 үзүлүү векторунан аткарылат.
Bit 5 - PCIE: Pin өзгөртүү үзгүлтүккө иштетүү
PCIE бит коюлганда (бир) жана Статус реестриндеги (SREG) I-бит коюлганда (бир), пин өзгөртүү үзгүлтүккө учуратуу иштетилет. Ар кандай иштетилген PCINT[5:0] пининдеги кандайдыр бир өзгөртүү үзгүлтүккө алып келет. Pin өзгөртүү үзгүлтүккө суроо-талаптын тиешелүү үзгүлтүктөрү PCI үзгүлтүккө учуратуу векторунан аткарылат. PCINT[5:0] пиндер PCMSK0 Реестри тарабынан жекече иштетилет.
GIFR – Жалпы үзүлүү желектеринин реестри
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3A | – | INTF0 | PCIF | – | – | – | – | – | GIFR |
Окуу/Жазуу | R | R/W | R/W | R | R | R | R | R | |
Баштапкы маани | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bits 7, 4:0 – Res: Reserved Bits
Бул биттер ATtiny25/45/85те сакталган биттер жана ар дайым нөл катары окулат.
Бит 6 – INTF0: Тышкы үзүлүү желеги 0
INT0 пининдеги чет же логикалык өзгөрүү үзгүлтүккө учуратуу өтүнүчүн козгогондо, INTF0 коюлат (бир). Эгерде SREGдеги I-бит жана GIMSKдагы INT0 бит (бир) коюлса, MCU тиешелүү Үзүлүү векторуна секирип кетет. Үзгүлтүккө учуратуу тартиби аткарылганда желек тазаланат. Же болбосо, желек ага логикалык жазуу менен тазаланышы мүмкүн. INT0 деңгээл үзгүлтүккө учурашы катары конфигурацияланганда бул желек ар дайым тазаланат.
Бит 5 – PCIF: Pin өзгөртүү үзгүлтүккө желеги
Кандайдыр бир PCINT[5:0] пининдеги логикалык өзгөрүү үзгүлтүккө учуратуу өтүнүчүн козгогондо, PCIF орнотулат (бир). Эгерде SREGдеги I-бит жана GIMSKдагы PCIE бит коюлса (бир), MCU тиешелүү Үзүлүү векторуна секирет. Үзгүлтүккө учуратуу тартиби аткарылганда желек тазаланат. Же болбосо, желек ага логикалык жазуу менен тазаланышы мүмкүн.
PCMSK - Pin өзгөртүү маскасы реестри
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x15 | – | – | PCINT5 | PCINT4 | PCINT3 | PCINT2 | PCINT1 | PCINT0 | PCMSK |
Окуу/Жазуу | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Баштапкы маани | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bits 7:6 – Res: Запастагы бит
Бул биттер ATtiny25/45/85те сакталган биттер жана ар дайым нөл катары окулат.
Bits 5:0 – PCINT[5:0]: Pin Change Enable Mask 5:0
Ар бир PCINT[5:0] бит тиешелүү киргизүү/чыгаруу пининде пинди өзгөртүү үзгүлтүккө учуратуу иштетилгенин тандайт. Эгерде PCINT[5:0] коюлса жана GIMSKдагы PCIE бит коюлса, тиешелүү киргизүү/чыгаруу пининде пин өзгөртүү үзгүлтүккө учуратуу иштетилет. Эгерде PCINT[5:0] тазаланса, тиешелүү киргизүү/чыгаруу пининдеги пин өзгөртүү үзгүлтүккө учурашы өчүрүлөт.
I/O порттору
Introduction
Бардык AVR порттору жалпы санариптик киргизүү/чыгаруу порту катары колдонулганда чыныгы Окуу-Өзгөртүү-Жазуу функциясына ээ. Бул бир порт пининин багытын SBI жана CBI көрсөтмөлөрү менен башка пиндин багытын кокусунан өзгөртпөстөн өзгөртүүгө болот дегенди билдирет. Ушул эле нерсе дисктин маанисин өзгөртүүдө (эгерде чыгаруу катары конфигурацияланса) же тартылуучу резисторлорду иштетүүдө/өчүрүүдө (эгер киргизүү катары конфигурацияланса) колдонулат. Ар бир чыгуу буфери симметриялуу диск өзгөчөлүктөрүнө ээ, ошондой эле жогорку чөгөт жана булак мүмкүнчүлүктөрү бар. PIN драйвери LED дисплейлерин түздөн-түз башкаруу үчүн жетиштүү күчтүү. Бардык порт төөнөгүчтөрүндө өзүнчө тандалып алынуучу резисторлор барtagд инварианттык каршылык. Бардык киргизүү/чыгаруу төөнөгүчтөрүндө көрсөтүлгөндөй VCC жана Жерге коргоо диоддору бар 10-1-сүрөт. кайрылыңыз «Электрдик мүнөздөмөлөр» 161-бетте параметрлердин толук тизмеси үчүн.
10-1-сүрөт. I/O Pin эквиваленттүү схемасы
Бул бөлүмдөгү бардык регистрлер жана бит шилтемелери жалпы формада жазылган. Кичинекей "x" порттун номерлөө тамгасын, ал эми кичине тамга "n" бит санын билдирет. Бирок, программада регистрди же бит аныктамаларын колдонууда так форма колдонулушу керек. Мисалы үчүнample, PORTB3 бит үчүн. В портунда 3, бул жерде жалпысынан PORTxn катары документтештирилет. Физикалык киргизүү/чыгаруу регистрлери жана бит жайгашкан жерлери тизмеленген "Каттоо сүрөттөмөсү" күйгүзүлгөн 64-бет.
Ар бир порт үчүн үч киргизүү/чыгарма эстутум дареги бөлүнгөн, ар бири Берилиштер реестри – PORTx, маалымат багыттарынын реестри – DDRx жана порт киргизүү пиндери – PINx үчүн. Port Input Pins I/O жайгашкан жери окуу үчүн гана, ал эми Маалымат реестри жана Маалымат багыты реестри окуу/жазуу. Бирок, PINx реестринде логикалык бир битти жазуу, Маалымат реестриндеги тиешелүү битте которуштурууга алып келет. Мындан тышкары, MCUCRдеги Pull-up Disable – PUD бит коюлганда бардык порттордогу бардык төөнөгүчтөр үчүн тартуу функциясын өчүрөт.
Киргизүү/чыгаруу портун жалпы санариптик киргизүү/чыгаруу катары колдонуу бөлүмүндө сүрөттөлгөн “Порттор жалпы санариптик киргизүү/чыгаруу” бетте 53. Көпчүлүк порт төөнөгүчтөрү аппараттагы перифериялык функциялар үчүн кошумча функциялар менен мультиплекстелген. Ар бир альтернативдик функция порттун пинине кантип тоскоол болоору бөлүмүндө сүрөттөлөт “Альтернативдик порт функциялары” 57-бетте. Кошумча функциялардын толук сүрөттөлүшү үчүн модулдун айрым бөлүмдөрүнө кайрылыңыз.
Кээ бир порт пиндеринин альтернативдик функциясын иштетүү порттун башка пиндерин жалпы санарип киргизүү/чыгаруу катары колдонууга таасирин тийгизбей турганын эске алыңыз.
Порттар жалпы санариптик киргизүү/чыгаруу катары
Порттор кошумча ички тартмалары бар эки багыттуу киргизүү/чыгаруу порттору. 10-2-сүрөт бир I/O-порт пининин функционалдуу сүрөттөлүшүн көрсөтөт, бул жерде жалпысынан Pxn деп аталат.
10-2-сүрөт. Жалпы санариптик киргизүү/чыгаруу(1)
Pin конфигурацияланууда
Ар бир порт пин үч регистр биттен турат: DDxn, PORTxn жана PINxn. көрсөтүлгөндөй "Каттоо сүрөттөмөсү" күйгүзүлгөн 64-бет, DDxn биттерине DDRx I/O дарегинде, PORTxn биттерине PORTx I/O дарегинде жана PINxn биттерине PINx I/O дарегинде кирүүгө болот.
DDRx реестриндеги DDxn бит бул пиндин багытын тандайт. Эгерде DDxn логикалык түрдө жазылган болсо, Pxn чыгаруу пин катары конфигурацияланат. Эгерде DDxn логикалык нөл деп жазылган болсо, Pxn киргизүү пин катары конфигурацияланат.
PIN киргизүү пин катары конфигурацияланганда PORTxn логикалык түрдө жазылган болсо, тартылуучу резистор иштетилет. Тартылган резисторду өчүрүү үчүн, PORTxn логикалык нөл деп жазылышы керек же пин чыгуучу пин катары конфигурацияланышы керек. Эч кандай саат иштебесе дагы, баштапкы абалга келтирүү шарты активдүү болгондо порт пиндери үч жолу көрсөтүлөт.
Эгерде PORTxn пин чыгуучу пин катары конфигурацияланганда логикалык бир деп жазылган болсо, порттун пин бийик (бир) айдалат. PIN чыгаруу пин катары конфигурацияланганда PORTxn логикалык нөл деп жазылса, порт пин төмөн (нөл) айдалат.
Pin которуштуруу
PINxn'ге логикалык жазуу жазуу, DDRxn маанисине көз каранды эмес, PORTxn маанисин которот. SBI инструкциясы порттогу бир битти которуу үчүн колдонулушу мүмкүн экенин эске алыңыз.
Киргизүү жана чыгаруу ортосунда которулуу
Үч абалдын ({DDxn, PORTxn} = 0b00) жана жогорку чыгаруунун ({DDxn, PORTxn} = 0b11) ортосунда которуштуруп жатканда, же тартылуу иштетилген {DDxn, PORTxn} = 0b01) же төмөнкү чыгаруу менен аралык абал ({DDxn, PORTxn} = 0b10) болушу керек. Адатта, көтөрүү күйгүзүлгөн абал толугу менен алгылыктуу, анткени жогорку импеданттык чөйрө күчтүү бийик айдоочу менен тартылуунун ортосундагы айырманы байкабайт. Эгер андай болбосо, MCUCR реестриндеги PUD бит бардык порттордогу бардык тартмаларды өчүрүү үчүн коюлушу мүмкүн.
Тартуу менен киргизүү менен аз чыгарууну алмаштыруу бир эле көйгөйдү жаратат. Колдонуучу үч абалды ({DDxn, PORTxn} = 0b00) же чыгыштын жогорку абалын ({DDxn, PORTxn} = 0b10) аралык кадам катары колдонушу керек.
Таблица 10-1 пин мааниси үчүн башкаруу сигналдарын жалпылайт.
Таблица 10-1. Порт пин конфигурациялары
DDxn | PORTxn | PUD
(MCUCR менен) |
I/O | Тартуу | Комментарий |
0 | 0 | X | Киргизүү | Жок | Tri-state (Hi-Z) |
0 | 1 | 0 | Киргизүү | Ооба | Pxn токтун булагы, эгерде ext. төмөн тартты. |
0 | 1 | 1 | Киргизүү | Жок | Tri-state (Hi-Z) |
1 | 0 | X | Чыгуу | Жок | Чыгуу аз (чуучу) |
1 | 1 | X | Чыгуу | Жок | Чыгуу жогорку (булак) |
Pin маанисин окуу
Data Direction бит DDxn жөндөөсүнө көз каранды эмес, порт пин PINxn Register бит аркылуу окуса болот. көрсөтүлгөндөй 10-2-сүрөт, PINxn регистринин бити жана мурунку бекиткич синхронизаторду түзөт. Бул физикалык пин ички сааттын четине жакын маанини өзгөртсө, метастабилдүүлүктү болтурбоо үчүн керек, бирок кечиктирүүнү да киргизет. 10-3-сүрөт тышкы колдонулган пин маанисин окуп жатканда синхрондоштуруунун убакыт диаграммасын көрсөтөт. Максималдуу жана минималдуу таралуу кечигүүлөрү тиешелүүлүгүнө жараша tpd,max жана tpd,min деп белгиленет.
Системалык сааттын биринчи кулаган четинен көп өтпөй башталган саат мезгилин карап көрөлү. Саат төмөн болгондо кулпу жабылат, ал эми саат жогору болгондо тунук болуп калат, муну “SYNC LATCH” сигналынын көлөкөлүү аймагы көрсөткөн. Системанын сааты азайганда сигналдын мааниси бекитилет. Ал кийинки оң сааттын четинде PINxn реестрине киргизилет. tpd, max жана tpd,min деген эки жебе көрсөткөндөй, пиндеги сигналдын бир өтүшү ырастоо убактысына жараша ½ жана 1½ системалык саат мезгилине чейин кечигип калат.
Программанын дайындалган пин маанисин кайра окуп жатканда, көрсөтүлгөндөй, жок нускамасы киргизилиши керек 10-4-сүрөт. Чыгуу инструкциясы “SYNC LATCH” сигналын сааттын оң четине орнотот. Бул учурда, синхронизатор аркылуу кечигүү tpd бир системалык саат мезгили болуп саналат.
Төмөнкү код мурункуample порт B пиндерин 0 жана 1 бийик, 2 жана 3 төмөн коюуну көрсөтөт жана порт пиндерин 4-5ке чейин киргизүү катары аныктайт, 4-пин XNUMX үчүн ыйгарылат. Натыйжадагы пин маанилери кайра окулат, бирок мурда талкуулангандай, кээ бир пиндерге жакында дайындалган маанини кайра окуй алуу үчүн nop инструкциясы камтылган.
Ассамблея коду Example(1) |
…
; Тартууларды аныктап, натыйжаларды жогору коюңуз ; Порт пиндери үчүн багыттарды аныктаңыз ldi r16,(1<<PB4)|(1<<PB1)|(1<<PB0) ldi r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0) out PORTB,r16 чыгып DDRB,r17 ; Синхрондоштуруу үчүн nop киргизиңиз жок ; Порт пиндерин окуу r16, PINB менен … |
Эскертүү: Монтаждоо программасы үчүн эки убактылуу регистр 0, 1 жана 4 пиндеринде 2 жана 3 биттерин төмөнкү жана 0 жана 1 биттерин кайра аныктоочу багыт биттери туура орнотулганга чейин орнотулган убакытты азайтуу үчүн колдонулат. XNUMX күчтүү жогорку айдоочулар катары.
C Code Example |
unsigned char i;
… /* Тартууларды аныктап, натыйжаларды жогору коюу */ /* Порт пиндери үчүн багыттарды аныктоо */ PORTB = (1< DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0); /* Синхрондоштуруу үчүн nop киргизүү*/ _NOP(); /* Порт пиндерин окуу */ i = PINB; … |
Санарип киргизүүнү иштетүү жана Уйку режимдери
көрсөтүлгөндөй 10-2-сүрөт, санариптик киргизүү сигналы cl болушу мүмкүнampШмитт-триггердин киришинде жерге орнотулган. Сүрөттө SLEEP деп белгиленген сигнал, кээ бир кириш сигналдары калкып калса же VCC/2ге жакын аналогдук сигнал деңгээли болсо, кубаттуулуктун көп керектелишине жол бербөө үчүн өчүрүү режиминде MCU Уйку контроллери тарабынан орнотулат.
Тышкы үзгүлтүккө учуроочу пиндер катары иштетилген порт төөнөгүчтөрү үчүн SLEEP жокко чыгарылды. Эгерде тышкы үзгүлтүккө суроо-талап иштетилбесе, SLEEP бул пиндер үчүн да активдүү болот. SLEEP да сүрөттөлгөндөй башка ар кандай кошумча функциялар менен жокко чыгарылат “Альтернативдик порт функциялары” 57-бетте.
Эгерде тышкы үзгүлтүк иштетилбеген учурда "Өсүп жаткан жээкте үзгүлтүккө учуратуу, түшүүчү четтеги үзгүлтүккө же PINдагы ар кандай логикалык өзгөртүү" катары конфигурацияланган асинхрондуу тышкы үзүлүү пининде логикалык жогорку деңгээл (“бир”) бар болсо, анда тышкы үзгүлтүккө тиешелүү Тышкы үзүлүү желекчеси пайда болот. cl катары жогоруда аталган Уйку режиминен кайра баштаганда орнотулатampбул уйку режиминде иштөө талап кылынган логикалык өзгөрүүнү жаратат.
Туташтырылбаган Pins
Кээ бир төөнөгүчтөр колдонулбай калса, бул төөнөгүчтөрдүн аныкталган деңгээлге ээ болушун камсыздоо сунушталат. Санариптик киргизүүлөрдүн көбү жогоруда сүрөттөлгөндөй терең уйку режимдеринде өчүрүлгөн болсо да, санариптик киргизүүлөр иштетилген бардык башка режимдерде (Калыбына келтирүү, Активдүү режим жана Бош режимде) учурдагы керектөөнү азайтуу үчүн калкып жүрүүчү киргизүүлөрдөн качуу керек.
Колдонулбаган төөнөгүчтүн аныкталган деңгээлин камсыз кылуунун эң жөнөкөй ыкмасы - бул ички тартууну иштетүү. Бул учурда, кайра орнотуу учурунда тартма өчүрүлөт. Эгерде баштапкы абалга келтирүү учурунда аз энергия керектөө маанилүү болсо, анда тышкы тарткычты же ылдый тартууну колдонуу сунушталат. Колдонулбаган төөнөгүчтөрдү VCC же GNDге түздөн-түз туташтыруу сунушталбайт, анткени пин кокусунан чыгыш катары конфигурацияланса, бул ашыкча токторду алып келиши мүмкүн.
Альтернативдүү порт функциялары
Көпчүлүк порт төөнөгүчтөрү жалпы санариптик киргизүү/чыгаруулардан тышкары, башка функцияларга ээ. 10-5-сүрөт порттун пин башкаруу сигналдарын жөнөкөйлөтүлгөндөн кантип көрсөтөт 10-2-сүрөт башка функциялар менен жокко чыгарылышы мүмкүн. Жооптуу сигналдар бардык порт пиндеринде болбошу мүмкүн, бирок бул көрсөткүч AVR микроконтроллер үй-бүлөсүндөгү бардык порт пиндерине тиешелүү жалпы сүрөттөмө катары кызмат кылат.
Таблица 10-2. Альтернативдик функциялар үчүн жокко чыгаруу сигналдарынын жалпы сүрөттөлүшү
Сигнал аты | Толук аты | Description |
PUOE | Жогору тартууну жокко чыгарууну иштетүү | Бул сигнал коюлган болсо, тартууну иштетүү PUOV сигналы менен башкарылат. Бул сигнал тазаланган болсо, тартуу качан иштетилген
{DDxn, PORTxn, PUD} = 0b010. |
ПУОВ | Жогору тартуу мааниси | Эгерде PUOE коюлса, DDxn, PORTxn жана PUD Регистр биттеринин жөндөөлөрүнө карабастан, PUOV орнотулганда/тазаланганда тартылуу иштетилет/өчүрүлөт. |
DDOE | Маалымат багытын жокко чыгарууну иштетүү | Бул сигнал коюлса, Output Driver Enable DDOV сигналы менен башкарылат. Бул сигнал тазаланса, Чыгуу драйвери DDxn Register бити менен иштетилет. |
ДДОВ | Маалымат багытын жокко чыгаруу мааниси | Эгерде DDOE орнотулган болсо, DDxn Регистр битинин жөндөөсүнө карабастан, DDOV орнотулганда/тазаланганда Output Driver иштетилет/өчүрүлөт. |
PVOE | Порт маанисин жокко чыгарууну иштетүү | Бул сигнал коюлса жана Output Driver иштетилсе, порттун мааниси PVOV сигналы менен башкарылат. Эгерде PVOE тазаланса жана Чыгуу драйвери иштетилсе, порттун мааниси PORTxn Регистр бити менен башкарылат. |
ПВОВ | Port Value Override Value | Эгерде PVOE коюлса, PORTxn Регистр битинин жөндөөсүнө карабастан, порттун мааниси PVOV деп коюлат. |
PTOE | Port Toggle Override иштетүү | Эгерде PTOE коюлса, PORTxn Регистр бити тескериленет. |
DIEOE | Санарип киргизүүнү иштетүү жокко чыгарууну иштетүү | Бул бит коюлган болсо, Digital Input Enable DIEOV сигналы менен башкарылат. Бул сигнал тазаланган болсо, Санарип киргизүүнү иштетүү MCU абалы (Нормалдуу режим, уйку режими) менен аныкталат. |
ДИЕОВ | Санарип киргизүү Бааны жокко чыгарууну иштетүү | Эгерде DIEOE орнотулган болсо, MCU абалына карабастан (Нормалдуу режим, уйку режими) DIEOV орнотулган/тазаланганда Digital Input иштетилет/өчүрүлөт. |
DI | Санарип киргизүү | Бул башка функцияларга санариптик киргизүү. Сүрөттө сигнал шмитт-триггердин чыгышына туташтырылган, бирок синхронизатордон мурун. Санарип киргизүү саат булагы катары колдонулбаса, кошумча функциясы бар модуль өзүнүн синхронизаторун колдонот. |
AIO | Аналогдук киргизүү / чыгаруу | Бул альтернативдик функцияларга Аналогдук Киргизүү/Чыгуу. Сигнал түздөн-түз аянтка туташтырылган жана эки багыттуу колдонсо болот. |
Төмөнкү бөлүмдөр ар бир порт үчүн альтернативдик функцияларды кыскача сүрөттөйт жана кошумча функцияга жокко чыгаруучу сигналдарды байланыштырат. Кошумча маалымат алуу үчүн кошумча функциянын сүрөттөмөсүн караңыз.
В портунун альтернативдик функциялары
Кошумча функциясы бар Порт B төөнөгүчтөрү көрсөтүлгөн Таблица 10-3.
Таблица 10-3. Порт B Pins Альтернативдүү Функциялар
Порт Pin | Альтернативдик функция |
PB5 | ![]() RESET: PINди баштапкы абалга келтирүү dW: debugWIRE I/O ADC0: ADC Input Channel 0 PCINT5: Pin өзгөртүү үзгүлтүккө, булак 5 |
PB4 | XTAL2: Crystal Oscillator Output CLKO: System Clock Output ADC2: ADC Input Channel 2
OC1B: Таймер/Счетчик1 Салыштыруу B дал келүү Чыгуу PCINT4: Pin өзгөртүү үзгүлтүк 0, Булак 4 |
PB3 | XTAL1: Crystal Oscillator киргизүү CLKI: Тышкы саат киргизүү ADC3: ADC киргизүү канал 3
OC1B: Кошумча таймер/эсептегич1 Салыштыруу B дал келүү Чыгуу PCINT3: Pin өзгөртүү үзгүлтүк 0, булак 3 |
PB2 | SCK: Сериялык саат киргизүү ADC1: ADC киргизүү канал 1
T0: Таймер/Counter0 Саат Булагы USCK: USI Саат (Үч Зым режими) SCL : USI Саат (Эки Зым режими) INT0: Тышкы үзгүлтүк 0 Киргизүү PCINT2: Pin өзгөртүү үзгүлтүк 0, Булак 2 |
PB1 | MISO: SPI Башкы берилиштерин киргизүү/Кул берилиштерин чыгаруу AIN1: Аналогдук компаратор, терс киргизүү OC0B: Таймер/эсептегич0 Салыштыруу B дал келүү Чыгуу OC1A: Таймер/эсептегич1 салыштыруу A дал келүү Чыгуу DO: USI маалыматтарынын чыгышы (үч зым режими) PCINT1: PIN өзгөртүү үзгүлтүккө учурашы 0, Булак 1 |
PB0 | MOSI:: SPI Мастер Берилиштер Чыгуу/Кул маалымат Киргизүү AIN0: Аналогдук Салыштыргыч, Позитивдүү Киргизүү
OC0A: Таймер/Счетчик0 Салыштыруу A матчын чыгаруу OC1A: Кошумча таймер/эсептегич1 Салыштыруу A Чыгуу DI: USI маалыматтар киргизүү (үч зым режими) SDA: USI маалыматтарды киргизүү (эки зым режими) AREF: Тышкы аналогдук маалымдама PCINT0: Pin өзгөртүү үзгүлтүк 0, булак 0 |
Порт B, бит 5 – RESET/dW/ADC0/PCINT5
RESET: Сырткы баштапкы абалга келтирүү киргизүүсү активдүү төмөн жана RSTDISBL сактагычты программадан чыгаруу (“1”) менен иштетилген. PIN RESET пин катары колдонулганда, тартуу активдештирилет жана чыгаруу драйвери жана санарип киргизүү өчүрүлөт.
dW: DebugWIRE Enable (DWEN) Fuse программаланганда жана Lock биттери программаланбаганда, максаттуу түзүлүштөгү debugWIRE системасы иштетилет. RESET портунун пини зымдуу ЖАНА (ачык дренаждуу) эки багыттуу киргизүү/чыгаруу пин катары конфигурацияланган жана тартылуу иштетилген жана максат менен эмулятордун ортосундагы байланыш шлюзи болуп калат.
ADC0: Аналогдуктан санарипке конвертер, 0-канал.
PCINT5: Pin Change Interrupt булагы 5.
Порт B, бит 4 – XTAL2/CLKO/ADC2/OC1B/PCINT4
XTAL2: Chip Clock Oscillator пин 2. Ички калибрленүүчү RC Oscillator жана тышкы сааттан башка бардык чип саат булактары үчүн саат пин катары колдонулат. Саат пин катары колдонулганда, пинди киргизүү/чыгаруу пин катары колдонууга болбойт. Чип саатынын булагы катары ички калибрленүүчү RC осцилляторун же тышкы саатты колдонууда PB4 кадимки I/O пин катары кызмат кылат.
CLKO: Бөлүнгөн системалык саат PB4 пининде чыгарылышы мүмкүн. PORTB4 жана DDB4 жөндөөлөрүнө карабастан, CKOUT Fuse программаланган болсо, бөлүнгөн система сааты чыгарылат. Ал ошондой эле баштапкы абалга келтирүү учурунда чыгарылат.
ADC2: Аналогдуктан санарипке конвертер, 2-канал.
OC1B: Чыгуу Салыштыруу Дал келүү натыйжасы: PB4 пин чыгышы (DDB1 топтому) катары конфигурацияланганда Таймер/Счетчик4 Салыштыруу Б дал келүү үчүн тышкы чыгаруу катары кызмат кыла алат. OC1B пин ошондой эле PWM режиминин таймер функциясы үчүн чыгаруу пин болуп саналат.
PCINT4: Pin Change Interrupt булагы 4.
Порт B, бит 3 – XTAL1/CLKI/ADC3/OC1B/PCINT3
XTAL1: Chip Clock Oscillator пин 1. Ички калибрленүүчү RC осцилляторунан башка бардык чип саат булактары үчүн колдонулат. Саат пин катары колдонулганда, пинди киргизүү/чыгаруу пин катары колдонууга болбойт.
CLKI: Тышкы саат булагынан саат киргизүү, караңыз «Тышкы саат» 26-бетте.
ADC3: Аналогдуктан санарипке конвертер, 3-канал.
OC1B: Inverted Output Compare Match чыгышы: PB3 пин чыгышы (DDB1 топтому) катары конфигурацияланганда Таймер/Counter3 Compare Match B үчүн тышкы чыгаруу катары кызмат кыла алат. OC1B пин ошондой эле PWM режиминин таймер функциясы үчүн тескери чыгуучу пин болуп саналат.
PCINT3: Pin Change Interrupt булагы 3.
Порт B, бит 2 – SCK/ADC1/T0/USCK/SCL/INT0/PCINT2
SCK: Master Clock чыгаруу, SPI каналы үчүн Slave Clock киргизүү пин. SPI Кул катары иштетилгенде, бул пин DDB2 жөндөөсүнө карабастан киргизүү катары конфигурацияланат. SPI Мастер катары иштетилгенде, бул пиндин маалымат багыты DDPB2 тарабынан башкарылат. PIN SPI тарабынан киргизүүгө мажбур болгондо, тартылуу дагы эле PORTB2 бит тарабынан башкарылышы мүмкүн.
ADC1: Аналогдуктан санарипке конвертер, 1-канал.
T0: Таймер/Counter0 эсептегич булагы.
USCK: Үч зым режими универсалдуу сериялык интерфейс сааты.
SCL: USI эки сымдуу режими үчүн эки сымдуу режим Сериялык саат.
INT0: Тышкы үзүлүү булагы 0.
PCINT2: Pin Change Interrupt булагы 2.
Порт B, бит 1 – MISO/AIN1/OC0B/OC1A/DO/PCINT1
MISO: Мастер маалымат киргизүү, SPI каналы үчүн Slave маалымат чыгаруу пин. SPI Мастер катары иштетилгенде, бул пин DDB1 жөндөөсүнө карабастан киргизүү катары конфигурацияланат. SPI Кул катары иштетилгенде, бул пиндин маалымат багыты DDB1 тарабынан көзөмөлдөнөт. PIN SPI тарабынан киргизүүгө мажбур болгондо, тартылуу дагы эле PORTB1 бит тарабынан башкарылышы мүмкүн.
AIN1: Аналогдук салыштыруучу терс киргизүү. Санарип порт функциясынын Аналогдук компаратордун функциясына тоскоол болбошу үчүн порттун пинди ички тарткыч өчүрүлгөн киргизүү катары конфигурациялаңыз.
OC0B: Output Compare Match чыгаруу. PB1 пин таймер/эсептегич0 салыштыруу дал B үчүн тышкы чыгаруу катары кызмат кыла алат. PB1 пин бул функцияны аткаруу үчүн чыгаруу (DDB1 топтому (бир)) катары конфигурацияланышы керек. OC0B пин ошондой эле PWM режиминин таймер функциясы үчүн чыгаруу пин болуп саналат.
OC1A: Чыгуу Салыштыруу Дал келүү натыйжасы: PB1 пин чыгышы (DDB1 топтому) катары конфигурацияланганда Таймер/Счетчик1 Салыштыруу Б дал келүү үчүн тышкы чыгаруу катары кызмат кыла алат. OC1A пин ошондой эле PWM режиминин таймер функциясы үчүн чыгаруу пин болуп саналат.
DO: Үч-зым режими Universal Serial Interface Маалымат чыгаруу. Үч зым режими Маалыматтын чыгышы PORTB1 маанисин жокко чыгарат жана DDB1 маалымат багыты бит коюлганда (бир) портко айдалат. Багыт киргизилсе жана PORTB1 орнотулган болсо (бир) PORTB1 дагы эле тартууну иштетет.
PCINT1: Pin Change Interrupt булагы 1.
Порт B, бит 0 – MOSI/AIN0/OC0A/OC1A/DI/SDA/AREF/PCINT0
MOSI: SPI мастер маалыматтарынын чыгышы, SPI каналы үчүн Slave маалыматтарынын кириши. SPI Кул катары иштетилгенде, бул пин DDB0 жөндөөсүнө карабастан киргизүү катары конфигурацияланат. SPI Мастер катары иштетилгенде, бул пиндин маалымат багыты DDB0 тарабынан башкарылат. PIN SPI тарабынан киргизүүгө мажбур болгондо, тартууну PORTB0 бит менен башкара берсе болот.
AIN0: Аналогдук салыштыруучу оң киргизүү. Санарип порт функциясынын Аналогдук компаратордун функциясына тоскоол болбошу үчүн порттун пинди ички тарткыч өчүрүлгөн киргизүү катары конфигурациялаңыз.
OC0A: Output Compare Match чыгаруу. Чыгуу катары конфигурацияланганда (DDB0 топтому (бир)) PB0 пин таймер/эсептегич0 салыштыруу A дал келүүсү үчүн тышкы чыгаруу катары кызмат кыла алат. OC0A пин ошондой эле PWM режиминин таймер функциясы үчүн чыгаруу пин болуп саналат.
OC1A: Inverted Output Compare Match чыгышы: PB0 пин чыгышы (DDB1 топтому) катары конфигурацияланганда Таймер/Счетчик0 Салыштыруу Б дал келүү үчүн тышкы чыгаруу катары кызмат кыла алат. OC1A пин ошондой эле PWM режиминин таймер функциясы үчүн тескери чыгуучу пин болуп саналат.
SDA: эки зым режими Сериялык Interface маалыматтары.
AREF: ADC үчүн тышкы аналогдук шилтеме. PB0да пин тышкы шилтеме же ички Volt катары колдонулганда, тартуу жана чыгаруу драйвери өчүрүлөтtage AREF пининдеги тышкы конденсатор менен маалымдама.
DI: USI үч сымдуу режимде маалымат киргизүү. USI Үч зым режими кадимки порт функцияларын жокко чыгарбайт, андыктан пин DI функциясы үчүн киргизүү катары конфигурацияланышы керек.
PCINT0: Pin Change Interrupt булагы 0.
Таблица 10-4 жана Таблица 10-5 В портунун альтернативдик функцияларын сүрөттө көрсөтүлгөн жокко чыгаруучу сигналдар менен байланыштырыңыз Сүрөт 10-5 боюнча 58-бет.
Таблица 10-4. PBдагы альтернативдүү функциялар үчүн сигналдарды жокко чыгаруу[5:3]
Сигнал аты | PB5/RESET/ADC0/PCINT5 | PB4/ADC2/XTAL2/ OC1B/PCINT4 | PB3/ADC3/XTAL1/ OC1B/PCINT3 |
PUOE | ![]() |
0 | 0 |
ПУОВ | 1 | 0 | 0 |
DDOE | RSTDISBL(1) • DWEN(1) | 0 | 0 |
ДДОВ | debugWire Transmit | 0 | 0 |
PVOE | 0 | OC1B иштетүү | ![]() OC1B иштетүү |
ПВОВ | 0 | OC1B | OC1B |
PTOE | 0 | 0 | 0 |
DIEOE | ![]() RSTDISBL(1) + (PCINT5 • PCIE + ADC0D) |
PCINT4 • PCIE + ADC2D | PCINT3 • PCIE + ADC3D |
ДИЕОВ | ADC0D | ADC2D | ADC3D |
DI | PCINT5 киргизүү | PCINT4 киргизүү | PCINT3 киргизүү |
AIO | RESET киргизүү, ADC0 киргизүү | ADC2 киргизүү | ADC3 киргизүү |
Эскертүү: Сактагыч “0” болгондо (Программаланган).
Таблица 10-5. PBдагы альтернативдүү функциялар үчүн сигналдарды жокко чыгаруу[2:0]
Сигнал аты | PB2/SCK/ADC1/T0/ USCK/SCL/INT0/PCINT2 | PB1/MISO/DO/AIN1/ OC1A/OC0B/PCINT1 | PB0/MOSI/DI/SDA/AIN0/AR EF/OC1A/OC0A/
PCINT0 |
PUOE | USI_TWO_WIRE | 0 | USI_TWO_WIRE |
ПУОВ | 0 | 0 | 0 |
DDOE | USI_TWO_WIRE | 0 | USI_TWO_WIRE |
ДДОВ | (USI_SCL_HOLD + PORTB2) • DDB2 | 0 | ![]() ![]() (SDA + PORTB0) • DDB0 |
PVOE | USI_TWO_WIRE • DDB2 | OC0B иштетүү + OC1A иштетүү + USI_THREE_WIRE | ![]() OC0A иштетүү + OC1A иштетүү + (USI_TWO_WIRE DDB0) |
ПВОВ | 0 | OC0B + OC1A + DO | ![]() OC0A + OC1A |
PTOE | USITC | 0 | 0 |
DIEOE | PCINT2 • PCIE + ADC1D + USISIE | PCINT1 • PCIE + AIN1D | PCINT0 • PCIE + AIN0D + USISIE |
ДИЕОВ | ADC1D | AIN1D | AIN0D |
DI | T0/USCK/SCL/INT0/
PCINT2 киргизүү |
PCINT1 киргизүү | DI/SDA/PCINT0 киргизүү |
AIO | ADC1 киргизүү | Аналогдук салыштыруучу терс киргизүү | Аналогдук салыштыруучу оң киргизүү |
Реестрдин сүрөттөмөсү
MCUCR - MCU башкаруу реестри
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Окуу/Жазуу | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Баштапкы маани | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
6-бит – PUD: Тартуу өчүрүү
Бул бит бирине жазылганда, DDxn жана PORTxn регистрлери тартмаларды иштетүү үчүн конфигурацияланган болсо да, киргизүү/чыгаруу портторундагы тартмалар өчүрүлөт ({DDxn, PORTxn} = 0b01). Караңыз “Pin конфигурациялоо” 54-бетте бул өзгөчөлүк жөнүндө көбүрөөк маалымат алуу үчүн.
PORTB – Порт B маалыматтар реестри
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x18 | – | – | PORTB5 | PORTB4 | PORTB3 | PORTB2 | PORTB1 | PORTB0 | PORTB |
Окуу/Жазуу | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Баштапкы маани | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
DDRB - Порт B маалымат багыттарынын реестри
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x17 | – | – | DDB5 | DDB4 | DDB3 | DDB2 | DDB1 | DDB0 | DDRB |
Окуу/Жазуу | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Баштапкы маани | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
PINB – В портунун киргизүү Pins дареги
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x16 | – | – | PINB5 | PINB4 | PINB3 | PINB2 | PINB1 | PINB0 | PINB |
Окуу/Жазуу | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Баштапкы маани | 0 | 0 | Жок | Жок | Жок | Жок | Жок | Жок |
PWM менен 8-бит Таймер/Counter0
Өзгөчөлүктөрү
Эки көз карандысыз чыгаруу салыштыруу бирдиги
Кош буфердик чыгаруу регистрлерин салыштыруу
Салыштыруудагы таймерди тазалоо (автоматтык түрдө кайра жүктөө)
Glitch Free, Фазаны туура импульстун кеңдиги модулятору (PWM)
Өзгөрмө PWM мезгили
Жыштык генератору
Үч көз карандысыз үзүлүү булагы (TOV0, OCF0A жана OCF0B)
Бүттүview
Таймер/Counter0 - бул жалпы максаттагы 8-бит Таймер/Эсептегич модулу, эки көз карандысыз Чыгуу салыштыруу бирдиги жана PWM колдоосу менен. Бул так программаны аткаруу убактысын (окуяларды башкаруу) жана толкун генерациясын берет.
8 биттик таймер/эсептегичтин жөнөкөйлөштүрүлгөн блок диаграммасы көрсөтүлгөн 11-1-сүрөт. I/O пиндерин иш жүзүндө жайгаштыруу үчүн, караңыз “Pinout ATtiny25/45/85” 2-бетте. CPU жеткиликтүү I/O регистрлери, анын ичинде киргизүү/чыгаруу биттери жана киргизүү/чыгаруу пиндери калың тамга менен көрсөтүлгөн. Түзмөккө тиешелүү I/O реестри жана бит жайгашкан жерлери тизмеде келтирилген 77-беттеги “Регистрдин сүрөттөмөсү”.
Таймер/эсептегич (TCNT0) жана Чыгууларды салыштыруу регистрлери (OCR0A жана OCR0B) 8 биттик регистрлер. Үзгүлтүккө суроо-талап (сүрөттө Int.Req деп кыскартылган) сигналдарынын бардыгы Таймер үзгүлтүккө учуратуу желегинин регистринде (TIFR) көрүнүп турат. Бардык үзгүлтүктөр Таймер үзгүлтүккө учуроо маскасы реестри (TIMSK) менен жекече маскаланат. TIFR жана TIMSK сүрөттө көрсөтүлгөн эмес.
Таймер/эсептегичтин сааты ички, алдын ала шкалалоочу аркылуу же T0 пининдеги тышкы саат булагы аркылуу болушу мүмкүн. Саатты тандоо логикалык блогу таймер/эсептегич анын маанисин көбөйтүү (же азайтуу) үчүн сааттын кайсы булагын жана четин колдоноорун көзөмөлдөйт. Эч бир саат булагы тандалбаганда Таймер/Эсептегич активдүү эмес. Саатты тандоо логикасынын чыгышы таймер сааты (clkT0) деп аталат.
Кош буфердик Чыгууларды салыштыруу регистрлери (OCR0A жана OCR0B) ар дайым Таймер/Эсептегичтин мааниси менен салыштырылат. Салыштыруунун натыйжасы Толкун формасынын генератору тарабынан PWM же өзгөрмө жыштык чыгаруу үчүн Чыгуу салыштыруу пиндеринде (OC0A жана OC0B) колдонулушу мүмкүн. 69-беттеги “Чыгышты салыштыруу бирдиги” караңыз. чоо-жайы үчүн. Салыштыруу дал келүү окуясы ошондой эле Салыштыруу желегин (OCF0A же OCF0B) орнотот, ал Чыгуу Салыштыруу үзгүлтүккө суроо-талапты түзүү үчүн колдонулушу мүмкүн.
Аныктамалар
Бул бөлүмдө көптөгөн регистр жана бит шилтемелери жалпы түрдө жазылган. Кичинекей "n" таймер/эсептөөчүнүн номерин алмаштырат, бул учурда 0. Кичинекей "x" Чыгууну салыштыруу бирдигин алмаштырат, бул учурда A бирдигин салыштыруу же В бирдигин салыштыруу. Бирок регистрди же битти колдонууда аныктайт программада так форма колдонулушу керек, б.а. Таймер/Counter0 эсептегич маанисине жетүү үчүн TCNT0 ж.б.у.с.
Андагы аныктамалар Таблица 11-1 ошондой эле бардык документте кеңири колдонулат.
Таблица 11-1. Аныктамалар
Туруктуу | Description |
БОТТО | Эсептегич 0x00 болгондо ТӨМҮНГӨ жетет |
МАКС | Эсептегич 0xFF болгондо MAXimumга жетет (ондук 255) |
ТОП | Эсептөө ырааттуулугунда эң жогорку мааниге барабар болгондо, эсептегич ТОПко жетет. TOP мааниси 0xFF (MAX) туруктуу мааниси же OCR0A реестринде сакталган маани катары дайындалышы мүмкүн. Тапшырма иштөө режимине жараша болот |
Таймер/эсептегич Алдын ала өлчөөчү жана Саат булактары
Таймерди/эсептегичти сааттын ички же тышкы булагы аркылуу аныктоого болот. Сааттын булагы Таймер/Counter0 башкаруу регистринде (TCCR0B) жайгашкан Саатты тандоо (c) биттери менен башкарылуучу Саатты тандоо логикасы менен тандалат.
Prescaler менен ички саат булагы
Таймер/эсептегич0 системанын сааты менен түз саатталышы мүмкүн (CS0[2:0] = 1 коюу менен). Бул системанын тактык жыштыгына (fCLK_I/O) барабар максималдуу таймер/эсептегич тактык жыштыгы менен эң ылдам иштөөнү камсыз кылат. Же болбосо, алдын ала масштабдагычтан келген төрт таптауунун бирин сааттын булагы катары колдонсо болот. Алдын ала шкалаланган сааттын бир жыштыгы бар
Алдын ала масштабдагычты баштапкы абалга келтирүү
Алдын ала шкалалоочу эркин иштейт, башкача айтканда, ал Таймер/Счетчик0дун Саатты тандоо логикасына көз карандысыз иштейт. Алдын ала өлчөгүчкө таймердин/эсептегичтин тандоосу таасир этпегендиктен, алдын ала масштабдагычтын абалы алдын ала шкалаланган саат колдонулган кырдаалдарга таасирин тийгизет. Бир эксampалдын ала масштабдоочу артефакттын le таймер/эсептегич иштетилгенде жана алдын ала шкалалоочу тарабынан саатталат (6 > CS0[2:0] > 1). Таймер иштетилгенден баштап биринчи саноого чейин тутумдук саат циклдеринин саны 1ден N+1 системалык тактын циклине чейин болушу мүмкүн, мында N алдын ала масштабдагы бөлүүчүгө (8, 64, 256 же 1024) барабар.
Таймерди/эсептегичти программанын аткарылышын синхрондоштуруу үчүн Prescaler Reset колдонсо болот.
Тышкы саат булагы
T0 пинине колдонулган тышкы саат булагы таймер/эсептөөчү саат (clkT0) катары колдонулушу мүмкүн. T0 пин s болуп саналатampпин синхрондоштуруу логикасы боюнча ар бир системанын саат циклинде бир жолу жетектеген. Синхрондуу (сampled) сигнал андан кийин өткөрүлөт
чет детектору аркылуу. 11-2-сүрөт T0 синхронизациясынын жана чет детекторунун логикасынын функционалдык эквиваленттүү блок диаграммасын көрсөтөт. Регистрлер ички системалык сааттын (clkI/O) оң четинде такталган. Латч ички системалык сааттын жогорку мезгилинде ачык-айкын болот.
Чет детектору аныктаган ар бир оң (CS0[0:2] = 0) же терс (CS7[0:2] = 0) үчүн бир clkT6 импульсун жаратат.
OCR0x регистрлери импульстун кеңдигин модуляциялоо (PWM) режимдеринин каалаганын колдонууда кош буферделет. Салыштыруудагы нормалдуу жана Таза таймер (CTC) иштөө режимдери үчүн кош буферлөө өчүрүлгөн. Кош буферлөө OCR0x Салыштыруу регистрлеринин жаңыртууларын эсептөө ырааттуулугунун өйдө же ылдый жагына шайкештештирет. Синхрондоштуруу так узундуктагы, симметриялуу эмес PWM импульстарынын пайда болушуна жол бербейт, ошону менен чыгууну катасыз кылат.
OCR0x Каттоо мүмкүнчүлүгү татаал сезилиши мүмкүн, бирок бул андай эмес. Кош буферлөө иштетилгенде, CPU OCR0x буфердик регистрине кире алат, ал эми кош буферлөө өчүрүлгөн болсо, CPU түздөн-түз OCR0xке кире алат.
Күч чыгарууну салыштыруу
PWM эмес толкун формасын түзүү режимдеринде, компаратордун дал келүүсүн Force Output Compare (FOC0x) битине бир жазуу менен мажбурлоого болот. Салыштыруу дал келүүсүн мажбурлоо OCF0x желекчесин орнотпойт же таймерди кайра жүктөбөйт/таза албайт, бирок OC0x пин чыныгы Салыштыруу дал келген сыяктуу жаңыртылат (COM0x[1:0] бит орнотуулары OC0x пининин коюлганын, тазаланганын аныктайт же өчүрүлгөн).
TCNT0 Write менен дал келген бөгөт коюуну салыштырыңыз
TCNT0 реестрине процессордун бардык жазуу операциялары таймер токтоп турганда дагы кийинки таймердин саат циклинде пайда болгон Салыштыруу дал келүүсүн бөгөттөйт. Бул өзгөчөлүк Таймер/Эсептегич сааты иштетилгенде үзгүлтүккө учурабай OCR0xти TCNT0 менен бирдей мааниге киргизүүгө мүмкүндүк берет.
Чыгууларды салыштыруу бирдигин колдонуу
Иштин каалаган режиминде TCNT0 жазуу бир таймердин саат цикли үчүн бардык Салыштыруу дал келүүлөрүн бөгөттөп тургандыктан, Таймер/эсептегич иштеп жатканына же иштебегенине карабастан, Чыгуу Салыштыруу Бирдигин колдонууда TCNT0ду өзгөртүүдө тобокелдиктер бар. Эгерде TCNT0го жазылган маани OCR0x маанисине барабар болсо, Салыштыруу дал келүүсү өткөрүлбөй калат, натыйжада туура эмес толкун формасы пайда болот. Ошо сыяктуу эле, эсептегич ылдый санап жатканда TCNT0 маанисин BOTTOMга барабар деп жазбаңыз.
OC0x орнотуулары чыгуу үчүн порт пин үчүн Маалымат багыты реестрин орнотуудан мурун аткарылышы керек. OC0x маанисин коюунун эң оңой жолу - бул Force Output Compare (FOC0x) строб биттерин Кадимки режимде колдонуу. OC0x регистрлери Толкун формасын түзүү режимдери ортосунда алмашканда да өз баалуулуктарын сактайт.
COM0x[1:0] биттери салыштыруу мааниси менен бирге кош буферде эмес экенин эске алыңыз. COM0x[1:0] биттерин өзгөртүү дароо күчүнө кирет.
Дал келүү чыгаруу бирдигин салыштырыңыз
Чыгуу режимин салыштыруу (COM0x[1:0]) биттеринин эки функциясы бар. Waveform Generator COM0x[1:0] биттерин кийинки Салыштыруу дал келүүсүндө Чыгуу Салыштыруу (OC0x) абалын аныктоо үчүн колдонот. Ошондой эле, COM0x[1:0] биттери OC0x пин чыгаруу булагын көзөмөлдөйт. 11-6-сүрөт COM0x[1:0] бит жөндөөсүнөн таасир эткен логиканын жөнөкөйлөштүрүлгөн схемасын көрсөтөт. Сүрөттөгү киргизүү/чыгаруу регистрлери, киргизүү/чыгаруу биттери жана киргизүү/чыгаруу пиндери калың тамга менен көрсөтүлгөн. COM0x[1:0] биттери таасир эткен жалпы киргизүү/чыгаруу портун башкаруу регистрлеринин (DDR жана PORT) бөлүктөрү гана көрсөтүлгөн. OC0x абалына шилтеме жасоодо, шилтеме OC0x пинине эмес, ички OC0x реестрине тиешелүү. Эгер тутум кайра орнотулса, OC0x Реестри "0" абалына келтирилет.
OC0A/OC0B I/O пинине туташтырылганда, COM0A[1:0]/COM0B[1:0] биттеринин функциясы WGM0[2:0] бит жөндөөсүнө көз каранды. Таблица 11-2 WGM0[1:0] биттери кадимки же CTC режимине коюлганда (PWM эмес) COM0x[2:0] бит функционалдуулугун көрсөтөт.
Таблица 11-2. Чыгуу режимин, PWM эмес режимди салыштырыңыз
COM0A1 COM0B1 | COM0A0 COM0B0 | Description |
0 | 0 | Кадимки порт иштеши, OC0A/OC0B ажыратылган. |
0 | 1 | Салыштыруу матчында OC0A/OC0B которуштуруу |
1 | 0 | Салыштыруу дал келүүсүндө OC0A/OC0Bди тазалоо |
1 | 1 | Салыштыруу дал келүүсүнө OC0A/OC0B коюңуз |
Таблица 11-3 WGM0[1:0] биттери тез PWM режимине коюлганда COM0x[2:0] бит функционалдуулугун көрсөтөт.
Таблица 11-3. Чыгуу режимин, Fast PWM режимин салыштырыңыз(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Description |
0 | 0 | Кадимки порт иштеши, OC0A/OC0B ажыратылган. |
0 | 1 | Резервге коюлган |
1 | 0 | Салыштыруу дал келүүсүндө OC0A/OC0Bди тазалаңыз, OC0A/OC0B ылдый жагына орнотуңуз (инвертирлөө режими) |
1 | 1 | Салыштыруу дал келүүсүнө OC0A/OC0B коюңуз, ТӨМҮГҮНДӨ OC0A/OC0Bди тазалаңыз (инвертүү режими) |
Эскертүү: Өзгөчө жагдай OCR0A же OCR0B TOPге барабар болгондо жана COM0A1/COM0B1 коюлганда пайда болот. Бул учурда, салыштырма дал келүү этибарга алынбайт, бирок белгиленген же так ТӨМӨНҮ боюнча аткарылат. Караңыз “Fast PWM Mode” 73-бетте көбүрөөк маалымат алуу үчүн.
Таблица 11-4 WGM0[1:0] биттери фазалык туура PWM режимине коюлганда COM0x[2:0] бит функционалдуулугун көрсөтөт.
Таблица 11-4. Чыгуу режимин, фазаны туура PWM режимин салыштырыңыз(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Description |
0 | 0 | Кадимки порт иштеши, OC0A/OC0B ажыратылган. |
0 | 1 | Резервге коюлган |
1 | 0 | Эсептөөдө Салыштыруу дал келүүсүндө OC0A/OC0Bди тазалаңыз. Төмөн санаганда OC0A/OC0B салыштыруу дал келүүсүнө коюңуз. |
1 | 1 | Эсептөөдө OC0A/OC0B салыштыруу дал келүүсүнө коюңуз. Төмөн санаганда Салыштыруу дал келүүсүндө OC0A/OC0Bди тазалаңыз. |
Эскертүү: 1. Өзгөчө жагдай OCR0A же OCR0B TOPге барабар болгондо жана COM0A1/COM0B1 коюлганда пайда болот. Бул учурда, Салыштыруунун дал келүүсү этибарга алынбайт, бирок топтом же так ТОПто жасалат. Караңыз 74-бетте “Фазаны туура PWM режими” көбүрөөк маалымат алуу үчүн.
Bits 3:2 – Res: Запастагы бит
Бул биттер ATtiny25/45/85те сакталган биттер жана ар дайым нөл катары окулат.
Bits 1:0 – WGM0[1:0]: Толкун формасын түзүү режими
TCCR02B реестринде табылган WGM0 бит менен айкалышып, бул биттер эсептегичтин эсептөө ырааттуулугун, максималдуу (TOP) эсептегич маанисинин булагын жана толкун формасынын генерациясынын кандай түрүн колдонууну көзөмөлдөйт, караңыз Таблица 11-5. Таймер/эсептегич бирдиги тарабынан колдоого алынган иштөө режимдери: Кадимки режим (эсептегич), Салыштыруу дал келүү (CTC) режиминде таймерди тазалоо жана импульстун кеңдигин модуляциялоо (PWM) режиминин эки түрү (караңыз. "Иш режими" 71-бетте).
Таблица 11-5. Толкун формасын түзүү режиминин бит сүрөттөмөсү
Mode | WGM 02 | WGM 01 | WGM 00 | Таймер/эсептегич иштөө режими | ТОП | OCRx жаңыртуу саат | TOV желеги коюлган |
0 | 0 | 0 | 0 | Кадимки | 0xFF | Дароо | МАКС(1) |
1 | 0 | 0 | 1 | PWM, туура фаза | 0xFF | ТОП | БОТТО(2) |
2 | 0 | 1 | 0 | CTC | OCRA | Дароо | МАКС(1) |
3 | 0 | 1 | 1 | Fast PWM | 0xFF | БОТТО(2) | МАКС(1) |
4 | 1 | 0 | 0 | Резервге коюлган | – | – | – |
5 | 1 | 0 | 1 | PWM, туура фаза | OCRA | ТОП | БОТТО(2) |
6 | 1 | 1 | 0 | Резервге коюлган | – | – | – |
7 | 1 | 1 | 1 | Fast PWM | OCRA | БОТТО(2) | ТОП |
Bit 7 – FOC0A: Күчтүү чыгаруу Салыштыруу А
FOC0A бит WGM биттери PWM эмес режимди көрсөткөндө гана активдүү болот.
Бирок, келечектеги түзмөктөр менен шайкештикти камсыз кылуу үчүн, PWM режиминде иштегенде TCCR0B жазылганда, бул бит нөлгө коюлушу керек. FOC0A битине логикалык жазууну жазып жатканда, Waveform Generation бирдигинде дароо Салыштыруу дал келүүсү мажбурланат. OC0A чыгышы анын COM0A[1:0] бит орнотуусуна ылайык өзгөртүлөт. FOC0A бит строб катары ишке ашырылганына көңүл буруңуз. Демек, COM0A[1:0] биттеринде болгон маани, мажбурлап салыштыруунун таасирин аныктайт.
FOC0A стробо эч кандай үзгүлтүккө жол бербейт жана OCR0A TOP катары колдонуп CTC режиминде таймерди тазалабайт. FOC0A бит дайыма нөл катары окулат.
Бит 6 – FOC0B: Чыгууну күч менен салыштыруу B
FOC0B бит WGM биттери PWM эмес режимди көрсөткөндө гана активдүү болот.
Бирок, келечектеги түзмөктөр менен шайкештикти камсыз кылуу үчүн, PWM режиминде иштегенде TCCR0B жазылганда, бул бит нөлгө коюлушу керек. FOC0B битине логикалык жазууну жазып жатканда, Waveform Generation бирдигинде дароо Салыштыруу дал келүүсү мажбурланат. OC0B чыгышы анын COM0B[1:0] бит орнотуусуна ылайык өзгөртүлөт. FOC0B бит строб катары ишке ашырылганына көңүл буруңуз. Демек, COM0B[1:0] биттеринде болгон маани мажбурлап салыштыруунун таасирин аныктайт.
FOC0B стробу эч кандай үзгүлтүккө жол бербейт жана OCR0Bди TOP катары колдонуп CTC режиминде таймерди тазалабайт.
FOC0B бит дайыма нөл катары окулат.
Bits 5:4 – Res: Запастагы бит
Бул биттер ATtiny25/45/85те сакталган биттер жана ар дайым нөл катары окулат.
Bit 3 – WGM02: Толкун формасын түзүү режими
сүрөттөмөсүн караңыз “TCCR0A – Таймер/эсептегичти башкаруунун А реестри” 77-бетте.
Bits 2:0 – CS0[2:0]: Саатты тандоо
Үч Саатты тандоо биттери таймер/эсептегич тарабынан колдонула турган саат булагын тандайт.
Таблица 11-6. Саат Bit Description тандоо
CS02 | CS01 | CS00 | Description |
0 | 0 | 0 | Сааттын булагы жок (Таймер/Счетчик токтоп калды) |
0 | 0 | 1 | clkI/O/(Алдын ала масштабдоо жок) |
0 | 1 | 0 | clkI/O/8 (алдын ала масштабдагычтан) |
0 | 1 | 1 | clkI/O/64 (алдын ала масштабдагычтан) |
1 | 0 | 0 | clkI/O/256 (алдын ала масштабдагычтан) |
1 | 0 | 1 | clkI/O/1024 (алдын ала масштабдагычтан) |
1 | 1 | 0 | T0 пиндеги тышкы саат булагы. Саат кулаган четинде. |
1 | 1 | 1 | T0 пиндеги тышкы саат булагы. Саат көтөрүлүп жаткан четинде. |
Таймер/эсептегич0 үчүн тышкы пин режимдери колдонулса, T0 пининдеги өтүүлөр эсептегичтин саатын пин чыгаруу катары конфигурацияланган болсо да берет. Бул функция эсептөөнү программалык камсыздоого мүмкүндүк берет.
Эсептөө жана салыштыруу бирдиктери
Таймер/Счетчик1 жалпы операциясы асинхрондуу режимде сүрөттөлөт жана синхрондуу режимде иштөө бул эки режимдин ортосунда айырмачылыктар болгондо гана айтылат. 12-2-сүрөт Таймер/Counter 1 синхрондоштуруу регистринин блок диаграммасын жана регистрлердин ортосундагы синхрондоштуруу кечигүүлөрүн көрсөтөт. Сааттын бардык деталдары сүрөттө көрсөтүлгөн эмес экенин эске алыңыз. Таймер/Счетчик1 регистринин маанилери эсептегичтин иштешине таасирин тийгизгенге чейин киргизүү синхрондоштуруу кечигүүсүнө алып келген ички синхрондоштуруу регистрлеринен өтөт. TCCR1, GTCCR, OCR1A, OCR1B жана OCR1C регистрлерин реестр жазылгандан кийин кайра окууга болот. Киргизүү жана чыгаруу синхронизациясынан улам кайра окуу маанилери Таймер/Счетчик1 (TCNT1) реестри жана желекчелери (OCF1A, OCF1B жана TOV1) үчүн кечигип жатат.
Таймер/эсептегич1 жогорку резолюцияны жана төмөнкү масштабдоо мүмкүнчүлүктөрү менен жогорку тактыкты колдонот. Ал ошондой эле 8 МГц (же Төмөн Ылдамдык режиминде 64 МГц) саат ылдамдыгын колдонгон эки так, жогорку ылдамдыктагы, 32 биттик импульстун туурасы модуляторун колдоого алат. Бул режимде Таймер/Счетчик1 жана чыгарууну салыштыруу регистрлери бири-бирин кайталабаган инвертирленген жана инверттелген чыгуулары менен кош өзүнчө PWM катары кызмат кылат. кайрылыңыз 86-бет бул функциянын толук сүрөттөлүшү үчүн. Ошо сыяктуу эле, жогорку масштабдоо мүмкүнчүлүктөрү бул бирдикти төмөнкү ылдамдыктагы функциялар же сейрек аракеттери менен так убакыт функциялары үчүн пайдалуу кылат.
12-2-сүрөт. Таймер/эсептегич 1 Синхрондоштуруу регистринин блок диаграммасы.
Таймер/Счетчик1 жана алдын ала шкалалоочу процессорду каалаган саат булагынан иштетүүгө мүмкүндүк берет, ал эми прешкалалер асинхрондук режимде 64 МГц (же Төмөн ылдамдык режиминде 32 МГц) PCK саатында иштеп жатат.
Системанын тактык жыштыгы PCK жыштыгынын үчтөн биринен төмөн болушу керек экенин эске алыңыз. Асинхрондук Таймердин/Счетчиктин синхрондоштуруу механизми системанын сааты жогору болгондо PCKнын жок дегенде эки четине муктаж. Системалык сааттын жыштыгы өтө жогору болсо, маалымат же башкаруу баалуулуктары жоголуп кетүү коркунучу бар.
Төмөнкүлөр 12-3-сүрөт Таймер/Counter1 үчүн блок схемасын көрсөтөт.
Таблица 12-1. Салыштыруу режимин PWM режиминде тандоо
COM1x1 | COM1x0 | Чыгууга таасири салыштыруу Pins |
0 | 0 | OC1x туташкан эмес. OC1x туташкан эмес. |
0 | 1 | OC1x салыштыруу матчында тазаланды. TCNT1 = $00 качан орнотуңуз. OC1x салыштыруу матчына коюлган. TCNT1 = $00 болгондо тазаланат. |
1 | 0 | OC1x салыштыруу матчында тазаланды. TCNT1 = $00 болгондо коюу. OC1x туташкан эмес. |
1 | 1 | OC1x Салыштыруу матчына коюлган. TCNT1= $00 болгондо тазаланат. OC1x туташкан эмес. |
ADC мүнөздөмөлөрү
Таблица 21-8. ADC мүнөздөмөлөрү, бирдиктүү каналдар. TA = -40°Cден +85°Cге чейин
Символ | Параметр | Шарт | Мин | Typ | Макс | Бирдиктер |
Резолюция | 10 | Биттер | ||||
Абсолюттук тактык (INL, DNL жана Quantization, Gain and Offset каталарын кошкондо) | VREF = 4V, VCC = 4V,
ADC саат = 200 кГц |
2 | LSB | |||
VREF = 4V, VCC = 4V,
ADC саат = 1 МГц |
3 | LSB | ||||
VREF = 4V, VCC = 4V,
ADC саат = 200 кГц Noise Reduction Mode |
1.5 | LSB | ||||
VREF = 4V, VCC = 4V,
ADC саат = 1 МГц Noise Reduction Mode |
2.5 | LSB | ||||
Интегралдык сызыктуу эместик (INL) (офсеттик жана пайда калибрлөөдөн кийинки тактык) | VREF = 4V, VCC = 4V,
ADC саат = 200 кГц |
1 | LSB | |||
Дифференциалдык сызыктуу эместик (DNL) | VREF = 4V, VCC = 4V,
ADC саат = 200 кГц |
0.5 | LSB | |||
Gain Error | VREF = 4V, VCC = 4V,
ADC саат = 200 кГц |
2.5 | LSB | |||
Offset Error | VREF = 4V, VCC = 4V,
ADC саат = 200 кГц |
1.5 | LSB | |||
Конверсия убактысы | Free Running Conversion | 14 | 280 | .s | ||
Саат жыштыгы | 50 | 1000 | кГц | |||
VIN | Киргизүү көлөмүtage | GND | VREF | V | ||
Өткөрүү жөндөмүн киргизүү | 38.4 | кГц | ||||
AREF | Тышкы маалымдама томtage | 2.0 | VCC | V | ||
БУРА | Ички томtage Шилтеме | 1.0 | 1.1 | 1.2 | V | |
Ички 2.56V маалымдамасы (1) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | 32 | кΩ | ||||
ЖАМГЫР | Аналогдук киргизүү каршылыгы | 100 | MΩ | |||
ADC чыгаруу | 0 | 1023 | LSB |
Эскертүү: 1. Маанилер көрсөтмөлөр гана.
Таблица 21-9. ADC мүнөздөмөлөрү, дифференциалдык каналдар (Unipolar Mode). TA = -40°Cден +85°Cге чейин
Символ | Параметр | Шарт | Мин | Typ | Макс | Бирдиктер |
Резолюция | Пайда = 1x | 10 | Биттер | |||
Пайда = 20x | 10 | Биттер | ||||
Абсолюттук тактык (анын ичинде INL, DNL жана
Кванттоо, пайда жана офсеттик каталар) |
Пайда = 1x
VREF = 4V, VCC = 5V ADC сааты = 50 – 200 кГц |
10.0 | LSB | |||
Пайда = 20x
VREF = 4V, VCC = 5V ADC сааты = 50 – 200 кГц |
20.0 | LSB | ||||
Интегралдык сызыктуу эместик (INL) (Оффсеттен кийинки тактык жана пайданы калибрлөө) | Пайда = 1x
VREF = 4V, VCC = 5V ADC сааты = 50 – 200 кГц |
4.0 | LSB | |||
Пайда = 20x
VREF = 4V, VCC = 5V ADC сааты = 50 – 200 кГц |
10.0 | LSB | ||||
Gain Error | Пайда = 1x | 10.0 | LSB | |||
Пайда = 20x | 15.0 | LSB | ||||
Offset Error | Пайда = 1x
VREF = 4V, VCC = 5V ADC сааты = 50 – 200 кГц |
3.0 | LSB | |||
Пайда = 20x
VREF = 4V, VCC = 5V ADC сааты = 50 – 200 кГц |
4.0 | LSB | ||||
Конверсия убактысы | Free Running Conversion | 70 | 280 | .s | ||
Саат жыштыгы | 50 | 200 | кГц | |||
VIN | Киргизүү көлөмүtage | GND | VCC | V | ||
VDIFF | Киргизүү дифференциалдык томtage | VREF/Gain | V | |||
Өткөрүү жөндөмүн киргизүү | 4 | кГц | ||||
AREF | Тышкы маалымдама томtage | 2.0 | VCC – 1.0 | V | ||
БУРА | Ички томtage Шилтеме | 1.0 | 1.1 | 1.2 | V | |
Ички 2.56V маалымдамасы (1) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | Шилтеме киргизүү каршылыгы | 32 | кΩ | |||
ЖАМГЫР | Аналогдук киргизүү каршылыгы | 100 | MΩ | |||
ADC Conversion Output | 0 | 1023 | LSB |
Эскертүү: Маанилер көрсөтмөлөр гана.
Таблица 21-10. ADC мүнөздөмөлөрү, дифференциалдык каналдар (Биполярдык режим). TA = -40°Cден +85°Cге чейин
Символ | Параметр | Шарт | Мин | Typ | Макс | Бирдиктер |
Резолюция | Пайда = 1x | 10 | Биттер | |||
Пайда = 20x | 10 | Биттер | ||||
Абсолюттук тактык (анын ичинде INL, DNL жана
Кванттоо, пайда жана офсеттик каталар) |
Пайда = 1x
VREF = 4V, VCC = 5V ADC сааты = 50 – 200 кГц |
8.0 | LSB | |||
Пайда = 20x
VREF = 4V, VCC = 5V ADC сааты = 50 – 200 кГц |
8.0 | LSB | ||||
Интегралдык сызыктуу эместик (INL) (Оффсеттен кийинки тактык жана пайданы калибрлөө) | Пайда = 1x
VREF = 4V, VCC = 5V ADC сааты = 50 – 200 кГц |
4.0 | LSB | |||
Пайда = 20x
VREF = 4V, VCC = 5V ADC сааты = 50 – 200 кГц |
5.0 | LSB | ||||
Gain Error | Пайда = 1x | 4.0 | LSB | |||
Пайда = 20x | 5.0 | LSB | ||||
Offset Error | Пайда = 1x
VREF = 4V, VCC = 5V ADC сааты = 50 – 200 кГц |
3.0 | LSB | |||
Пайда = 20x
VREF = 4V, VCC = 5V ADC сааты = 50 – 200 кГц |
4.0 | LSB | ||||
Конверсия убактысы | Free Running Conversion | 70 | 280 | .s | ||
Саат жыштыгы | 50 | 200 | кГц | |||
VIN | Киргизүү көлөмүtage | GND | VCC | V | ||
VDIFF | Киргизүү дифференциалдык томtage | VREF/Gain | V | |||
Өткөрүү жөндөмүн киргизүү | 4 | кГц | ||||
AREF | Тышкы маалымдама томtage | 2.0 | VCC – 1.0 | V | ||
БУРА | Ички томtage Шилтеме | 1.0 | 1.1 | 1.2 | V | |
Ички 2.56V маалымдамасы (1) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | Шилтеме киргизүү каршылыгы | 32 | кΩ | |||
ЖАМГЫР | Аналогдук киргизүү каршылыгы | 100 | MΩ | |||
ADC Conversion Output | -512 | 511 | LSB |
Нускамалар жыйындысы
Мнемотехника | Операндтар | Description | Операция | Желектер | #Сааттар |
АРИФМЕТИКАЛЫК ЖАНА ЛОГИКАЛЫК НУСКАМАЛАР | |||||
КОШУУ | Rd, Rr | Эки реестр кошуу | Rd ← Rd + Rr | Z,C,N,V,H | 1 |
ADC | Rd, Rr | Carry эки регистр менен кошуңуз | Rd ← Rd + Rr + C | Z,C,N,V,H | 1 |
ADIW | Рдл, К | Word'ке дароо кошуу | Rdh:Rdl ← Rdh:Rdl + K | Z,C,N,V,S | 2 |
SUB | Rd, Rr | Эки реестрди алып салуу | Rd ← Rd – Rr | Z,C,N,V,H | 1 |
SUBI | Рд, К | Регистрден константты алып салуу | Рд ← Рд – К | Z,C,N,V,H | 1 |
SBC | Rd, Rr | Carry эки регистр менен кемитүү | Rd ← Rd – Rr – C | Z,C,N,V,H | 1 |
SBCI | Рд, К | Регден Carry Constant менен кемитүү. | Рд ← Рд – К – С | Z,C,N,V,H | 1 |
SBIW | Рдл, К | Word'тен дароо алып салуу | Rdh:Rdl ← Rdh:Rdl – К | Z,C,N,V,S | 2 |
ЖАНА | Rd, Rr | Логикалык ЖАНА регистрлер | Rd ← Rd ∙ Rr | З, Н, В | 1 |
АНДИ | Рд, К | Логикалык ЖАНА Регистр жана Туруктуу | Рд ← Рд ∙ К | З, Н, В | 1 |
OR | Rd, Rr | Логикалык ЖЕ регистрлер | Rd ← Rd v Rr | З, Н, В | 1 |
ORI | Рд, К | Логикалык ЖЕ Регистр жана Туруктуу | Рд ← Рд v К | З, Н, В | 1 |
EOR | Rd, Rr | Эксклюзивдүү ЖЕ регистрлер | Rd ← Rd ⊕ Rr | З, Н, В | 1 |
COM | Rd | Бирөөнү толуктоочу | Rd ← 0xFF − Rd | Z,C,N,V | 1 |
NEG | Rd | Эки толуктоочу | Rd ← 0x00 − Rd | Z,C,N,V,H | 1 |
SBR | Рд, К | Реестрге бит(терди) коюңуз | Рд ← Рд v К | З, Н, В | 1 |
CBR | Рд, К | Реестрдеги биттерди тазалоо | Rd ← Rd ∙ (0xFF – K) | З, Н, В | 1 |
INC | Rd | Көбөйтүү | Rd ← Rd + 1 | З, Н, В | 1 |
ДЕК | Rd | Азайтуу | Rd ← Rd − 1 | З, Н, В | 1 |
TST | Rd | Нөл же минус үчүн тест | Рд ← Рд ∙ Рд | З, Н, В | 1 |
CLR | Rd | Реестрди тазалоо | Рд ← Рд ⊕ Рд | З, Н, В | 1 |
SER | Rd | Реестрди орнотуу | Rd ← 0xFF | Жок | 1 |
ФИЛИАЛДЫН НУСКАМАСЫ | |||||
RJMP | k | Салыштырмалуу секирүү | PC ← PC + k + 1 | Жок | 2 |
IJMP | (Z) чейин кыйыр өтүү | PC ← Z | Жок | 2 | |
RCALL | k | Салыштырмалуу подпрограмма чалуу | PC ← PC + k + 1 | Жок | 3 |
ICALL | (Z) үчүн кыйыр чалуу | PC ← Z | Жок | 3 | |
RET | Субпротинанын кайтарылышы | PC ← STACK | Жок | 4 | |
RETI | Үзгүлтүккө кайтаруу | PC ← STACK | I | 4 | |
CPSE | Rd,Rr | Салыштырыңыз, эгер барабар болсо, өткөрүп жибериңиз | эгерде (Rd = Rr) PC ← PC + 2 же 3 | Жок | 1/2/3 |
CP | Rd,Rr | Салыштыруу | Rd − Rr | Z, N, V, C, H | 1 |
CPC | Rd,Rr | Карри менен салыштырыңыз | Rd − Rr − C | Z, N, V, C, H | 1 |
КБИ | Рд, К | Регистрди дароо менен салыштырыңыз | Рд − К | Z, N, V, C, H | 1 |
SBRC | Rr, b | Реестрдеги бит тазаланган болсо, өткөрүп жибериңиз | эгерде (Rr(b)=0) PC ← PC + 2 же 3 | Жок | 1/2/3 |
SBRS | Rr, b | Регистрдеги бит коюлган болсо, өткөрүп жибериңиз | эгерде (Rr(b)=1) PC ← PC + 2 же 3 | Жок | 1/2/3 |
SBIC | П, б | Эгерде I/O реестриндеги бит тазаланган болсо, өткөрүп жибериңиз | эгерде (P(b)=0) PC ← PC + 2 же 3 | Жок | 1/2/3 |
SBIS | П, б | Эгерде I/O реестриндеги бит коюлган болсо, өткөрүп жибериңиз | эгерде (P(b)=1) PC ← PC + 2 же 3 | Жок | 1/2/3 |
BRBS | с, к | Статус желек орнотулган болсо, филиал | эгерде (SREG(лер) = 1) анда PC←PC+k + 1 | Жок | 1/2 |
BRBC | с, к | Статус желек тазаланган болсо, филиал | эгерде (SREG(лер) = 0) анда PC←PC+k + 1 | Жок | 1/2 |
BREQ | k | Тармак бирдей болсо | эгерде (Z = 1) анда PC ← PC + k + 1 | Жок | 1/2 |
БРНЕ | k | Тармак бирдей болбосо | эгерде (Z = 0) анда PC ← PC + k + 1 | Жок | 1/2 |
BRCS | k | Carry Set болсо, филиал | эгерде (C = 1) анда PC ← PC + k + 1 | Жок | 1/2 |
BRCC | k | Ташуу тазаланган болсо, филиал | эгерде (C = 0) анда PC ← PC + k + 1 | Жок | 1/2 |
БРШ | k | Филиалы бирдей же жогору болсо | эгерде (C = 0) анда PC ← PC + k + 1 | Жок | 1/2 |
BRLO | k | Төмөндө болсо филиал | эгерде (C = 1) анда PC ← PC + k + 1 | Жок | 1/2 |
BRMI | k | Минус болсо филиал | эгерде (N = 1) анда PC ← PC + k + 1 | Жок | 1/2 |
BRPL | k | Филиал if Plus | эгерде (N = 0) анда PC ← PC + k + 1 | Жок | 1/2 |
BRGE | k | Тармак, эгерде чоң же барабар болсо, кол коюлган | эгерде (N ⊕ V= 0) болсо, анда PC ← PC + k + 1 | Жок | 1/2 |
BRLT | k | Филиал нөлдөн аз болсо, кол коюлган | эгерде (N ⊕ V= 1) болсо, анда PC ← PC + k + 1 | Жок | 1/2 |
BRHS | k | Жарым көтөрүп желек орнотулган болсо, филиал | эгерде (H = 1) анда PC ← PC + k + 1 | Жок | 1/2 |
BRHC | k | Жарым көтөрүп желек тазаланган болсо, филиал | эгерде (H = 0) анда PC ← PC + k + 1 | Жок | 1/2 |
BRTS | k | T Flag коюлган болсо, филиал | эгерде (T = 1) анда PC ← PC + k + 1 | Жок | 1/2 |
BRTC | k | Т желек тазаланган болсо, филиал | эгерде (T = 0) анда PC ← PC + k + 1 | Жок | 1/2 |
BRVS | k | Толуп кеткен желек орнотулган болсо, филиал | эгерде (V = 1) анда PC ← PC + k + 1 | Жок | 1/2 |
BRVC | k | Толуп кеткен желек тазаланган болсо, филиал | эгерде (V = 0) анда PC ← PC + k + 1 | Жок | 1/2 |
BRIE | k | Үзгүлтүк иштетилген болсо, филиал | эгерде ( I = 1) анда PC ← PC + k + 1 | Жок | 1/2 |
BRID | k | Үзгүлтүк өчүрүлгөн болсо, филиал | эгерде ( I = 0) анда PC ← PC + k + 1 | Жок | 1/2 |
БИТ ЖАНА БИТ-СЫНОО НУСКАМАЛАРЫ | |||||
SBI | П,б | I/O регистринде битти коюңуз | I/O(P,b) ← 1 | Жок | 2 |
CBI | П,б | Киргизүү/чыгаруу реестриндеги битти тазалоо | I/O(P,b) ← 0 | Жок | 2 |
LSL | Rd | Логикалык солго жылдыруу | Rd(n+1) ← Rd(n), Rd(0) ← 0 | Z,C,N,V | 1 |
LSR | Rd | Логикалык оңго жылдыруу | Rd(n) ← Rd(n+1), Rd(7) ← 0 | Z,C,N,V | 1 |
РОЛУ | Rd | Ташуу аркылуу солго айлантуу | Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) | Z,C,N,V | 1 |
ROR | Rd | Carry аркылуу оңго айлантуу | Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) | Z,C,N,V | 1 |
ASR | Rd | Арифметикалык оңго жылдыруу | Rd(n) ← Rd(n+1), n=0..6 | Z,C,N,V | 1 |
Мнемотехника | Операндтар | Description | Операция | Желектер | #Сааттар |
SWAP | Rd | Swap Nibbles | Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) | Жок | 1 |
BSET | s | Flag Set | SREG(лер) ← 1 | SREG(лер) | 1 |
BCLR | s | Flag Clear | SREG(лер) ← 0 | SREG(лер) | 1 |
BST | Rr, b | Бит дүкөнү Реестрден Т | T ← Rr(b) | T | 1 |
BLD | Рд, б | Тдан Регистрге бит жүктөө | Рд(б) ← Т | Жок | 1 |
SEC | Ташуу | C ← 1 | C | 1 | |
CLC | Clear Carry | C ← 0 | C | 1 | |
СЕН | Терс желек коюу | N ← 1 | N | 1 | |
CLN | Терс желекти тазалоо | N ← 0 | N | 1 | |
АЭА | Нөл желек коюу | Z ← 1 | Z | 1 | |
CLZ | Clear Zero Flag | Z ← 0 | Z | 1 | |
SEI | Глобалдык үзгүлтүктөрдү иштетүү | I ← 1 | I | 1 | |
CLI | Глобалдык үзгүлтүктү өчүрүү | I ← 0 | I | 1 | |
SES | Кол коюлган сыноо желегин коюу | S ← 1 | S | 1 | |
CLS | Кол коюлган сыноо желегин тазалоо | S ← 0 | S | 1 | |
SEV | Кошумча эки толуктоо. | V ← 1 | V | 1 | |
CLV | Таза эки толуктоо | V ← 0 | V | 1 | |
SET | SREGде T коюңуз | T ← 1 | T | 1 | |
CLT | SREGде T тазалоо | T ← 0 | T | 1 | |
Сех | SREGде жарым көтөрүү желегин орнотуңуз | H ← 1 | H | 1 | |
CLH | SREGдеги жарымды алып жүрүү желектерин тазалоо | H ← 0 | H | 1 | |
МААЛЫМАТТАРДЫ ӨТКӨРҮҮ НУСКАМАСЫ | |||||
MOV | Rd, Rr | Регистрлердин ортосунда жылдыруу | Rd ← Rr | Жок | 1 |
MOVW | Rd, Rr | Регистр Word көчүрүү | Rd+1:Rd ← Rr+1:Rr | Жок | 1 |
LDI | Рд, К | Дароо жүктөө | Рд ← К | Жок | 1 |
LD | Рд, X | Кыйыр жүктөө | Rd ← (X) | Жок | 2 |
LD | Rd, X+ | Жүктөө кыйыр жана Post-Inc. | Rd ← (X), X ← X + 1 | Жок | 2 |
LD | Рд, – X | Жүктөө кыйыр жана Pre-Dec. | X ← X – 1, Rd ← (X) | Жок | 2 |
LD | Рд, Ы | Кыйыр жүктөө | Rd ← (Y) | Жок | 2 |
LD | Rd, Y+ | Жүктөө кыйыр жана Post-Inc. | Rd ← (Y), Y ← Y + 1 | Жок | 2 |
LD | Рд, – Ы | Жүктөө кыйыр жана Pre-Dec. | Y ← Y – 1, Rd ← (Y) | Жок | 2 |
LDD | Rd,Y+q | Көчүрүү менен кыйыр жүк | Rd ← (Y + q) | Жок | 2 |
LD | Рд, З | Кыйыр жүктөө | Rd ← (Z) | Жок | 2 |
LD | Rd, Z+ | Жүктөө кыйыр жана Post-Inc. | Rd ← (Z), Z ← Z+1 | Жок | 2 |
LD | Рд, -З | Жүктөө кыйыр жана Pre-Dec. | Z ← Z – 1, Rd ← (Z) | Жок | 2 |
LDD | Rd, Z+q | Көчүрүү менен кыйыр жүк | Rd ← (Z + q) | Жок | 2 |
LDS | Рд, к | SRAMдан түз жүктөө | Rd ← (k) | Жок | 2 |
ST | X, Rr | Сактоо кыйыр | (X) ← Rr | Жок | 2 |
ST | X+, Rr | Дүкөн кыйыр жана Post-Inc. | (X) ← Rr, X ← X + 1 | Жок | 2 |
ST | – X, Rr | Кыйыр жана Декабрга чейинки дүкөн. | X ← X – 1, (X) ← Rr | Жок | 2 |
ST | Y, Rr | Сактоо кыйыр | (Y) ← Rr | Жок | 2 |
ST | Y+, Rr | Дүкөн кыйыр жана Post-Inc. | (Y) ← Rr, Y ← Y + 1 | Жок | 2 |
ST | – Y, Rr | Кыйыр жана Декабрга чейинки дүкөн. | Y ← Y – 1, (Y) ← Rr | Жок | 2 |
STD | Y+q,Rr | Көчүрүү менен кыйыр сактоо | (Y + q) ← Rr | Жок | 2 |
ST | Z, Rr | Сактоо кыйыр | (Z) ← Rr | Жок | 2 |
ST | Z+, Rr | Дүкөн кыйыр жана Post-Inc. | (Z) ← Rr, Z ← Z + 1 | Жок | 2 |
ST | -Z, Rr | Кыйыр жана Декабрга чейинки дүкөн. | Z ← Z – 1, (Z) ← Rr | Жок | 2 |
STD | Z+q,Rr | Көчүрүү менен кыйыр сактоо | (Z + q) ← Rr | Жок | 2 |
STS | k, Rr | Түздөн-түз SRAMга сактаңыз | (k) ← Rr | Жок | 2 |
LPM | Программанын эс тутумун жүктөө | R0 ← (Z) | Жок | 3 | |
LPM | Рд, З | Программанын эс тутумун жүктөө | Rd ← (Z) | Жок | 3 |
LPM | Rd, Z+ | Load Program Memory and Post-Inc | Rd ← (Z), Z ← Z+1 | Жок | 3 |
SPM | Программанын эс тутумун сактоо | (z) ← R1:R0 | Жок | ||
IN | Рд, П | Портто | Rd ← P | Жок | 1 |
OUT | P, Rr | Порт чыгып | P ← Rr | Жок | 1 |
PUSH | Rr | Стектеги регистрди басыңыз | STACK ← Rr | Жок | 2 |
POP | Rd | Stack'тен катталуу | Rd ← STACK | Жок | 2 |
MCU БАШКАРУУ НУСКАМАСЫ | |||||
ЖОК | Операция жок | Жок | 1 | ||
УЙКУ | Уйку | (Уйку функциясы үчүн атайын сыпаттаманы караңыз) | Жок | 1 | |
WDR | Watchdog Reset | (WDR/Timer үчүн атайын сүрөттөмөлөрдү караңыз) | Жок | 1 | |
BREAK | Тыныгуу |
Ылдамдык (МГц) (1) | Supply Voltage (V) | Температура диапазону | Пакет (2) | Заказ коду (3) |
10 | 1.8 – 5.5 | өнөр жай
(-40 ° Cден + 85 ° Cге чейин) (4) |
8P3 | ATtiny45V-10PU |
8S2 | ATtiny45V-10SU ATtiny45V-10SUR ATtiny45V-10SH ATtiny45V-10SHR | |||
8X | ATtiny45V-10XU ATtiny45V-10XUR | |||
20М1 | ATtiny45V-10MU ATtiny45V-10MUR | |||
20 | 2.7 – 5.5 | өнөр жай
(-40 ° Cден + 85 ° Cге чейин) (4) |
8P3 | ATtiny45-20PU |
8S2 | ATtiny45-20SU ATtiny45-20SUR
ATtiny45-20SH ATtiny45-20SHR |
|||
8X | ATtiny45-20XU ATtiny45-20XUR | |||
20М1 | ATtiny45-20MU ATtiny45-20MUR |
Эскертүү: 1. Ылдамдыкка каршы кубаттоо үчүнtage, бөлүмүн карагыла 21.3 «Ылдамдык» 163-бетте.
Бардык пакеттер Pb-эркин, галогендүү жана толугу менен жашыл жана алар коркунучтуу заттарды чектөө боюнча европалык директивага (RoHS) ылайык келет.
Код көрсөткүчтөрү
H: NiPdAu коргошун бүтүрүү
U: жалтырабаган калай
R: лента жана ролик
Бул аппараттар пластинка түрүндө да берилиши мүмкүн. Сураныч, буйрутма боюнча кеңири маалымат жана минималдуу өлчөмдөр үчүн жергиликтүү Atmel сатуу кеңсесине кайрылыңыз.
Erratum
Errata ATtiny25
Бул бөлүмдөгү кайра карап чыгуу каты ATtiny25 түзмөгүн кайра карап чыгууну билдирет.
Rev D – F
Белгилүү каталар жок.
Аян B – C
EEPROM окуу аз камсыз кылуу көлөмүндө иштебей калышы мүмкүнtage / төмөнкү саат жыштыгы
EEPROM окуу аз камсыз кылуу көлөмүндө иштебей калышы мүмкүнtage / төмөнкү саат жыштыгы
EEPROMды төмөнкү саат жыштыктарында жана/же аз камсыз кылууда окууга аракет кылууtage жараксыз маалыматтарды алып келиши мүмкүн.
Көйгөйдү оңдоо/Чыгарма
Сааттын жыштыгы 1 МГцтен төмөн болгондо EEPROMды колдонбоңузtage 2V төмөн. Эгерде иштөө жыштыгын 1 МГцден жогору көтөрүү мүмкүн болбосо, анда т.бtage 2V жогору болушу керек. Ошо сыяктуу эле, эгерде камсыз кылуу томtage 2V жогору көтөрүүгө мүмкүн эмес, анда иштөө жыштыгы 1MHz ашык болушу керек.
Бул өзгөчөлүк температурага көз каранды экендиги белгилүү, бирок ал мүнөздөлгөн эмес. Көрсөтмөлөр бөлмө температурасы үчүн гана берилген.
Аян А.
с эмесampалып барды.
Errata ATtiny45
Бул бөлүмдөгү кайра карап чыгуу каты ATtiny45 түзмөгүн кайра карап чыгууну билдирет.
Аян F – Г
Белгилүү каталар жок
Аян D – Е
EEPROM окуу аз камсыз кылуу көлөмүндө иштебей калышы мүмкүнtage / төмөнкү саат жыштыгы
EEPROM окуу аз камсыз кылуу көлөмүндө иштебей калышы мүмкүнtage / төмөнкү саат жыштыгы
EEPROMды төмөнкү саат жыштыктарында жана/же аз камсыз кылууда окууга аракет кылууtage жараксыз маалыматтарды алып келиши мүмкүн.
Көйгөйдү оңдоо/Чыгарма
Сааттын жыштыгы 1 МГцтен төмөн болгондо EEPROMды колдонбоңузtage 2V төмөн. Эгерде иштөө жыштыгын 1 МГцден жогору көтөрүү мүмкүн болбосо, анда т.бtage 2V жогору болушу керек. Ошо сыяктуу эле, эгерде камсыз кылуу томtage 2V жогору көтөрүүгө мүмкүн эмес, анда иштөө жыштыгы 1MHz ашык болушу керек.
Бул өзгөчөлүк температурага көз каранды экендиги белгилүү, бирок ал мүнөздөлгөн эмес. Көрсөтмөлөр бөлмө температурасы үчүн гана берилген.
Аян B – C
PLL кулпуланган эмес
Колдонмонун кодунан окулган EEPROM Lock Bit Mode 3 иштебейт
EEPROM окуу аз камсыз кылуу көлөмүндө иштебей калышы мүмкүнtage / төмөнкү саат жыштыгы
Таймер эсептегич 1 OC1B- XOC1B боюнча PWM чыгаруу генерациясы туура иштебейт
PLL кулпуланган эмес
6.0 МГц төмөн жыштыктарда PLL кулпуланбайт
Көйгөйдү оңдоо / Чечүү
PLL колдонуп жатканда, 6.0 МГц же андан жогору иштетиңиз.
Колдонмонун кодунан окулган EEPROM Lock Bit Mode 3 иштебейт
LB2 жана LB1 Memory Lock Bits 3 режимине программаланганда, EEPROM окуу колдонмо кодунан иштебейт.
Көйгөйдү оңдоо/айлануу
Колдонмо кодун EEPROMдан окуу керек болгондо, Lock Bit Protection Mode 3 режимин койбоңуз.
EEPROM окуу аз камсыз кылуу көлөмүндө иштебей калышы мүмкүнtage / төмөнкү саат жыштыгы
EEPROMды төмөнкү саат жыштыктарында жана/же аз камсыз кылууда окууга аракет кылууtage жараксыз маалыматтарды алып келиши мүмкүн.
Көйгөйдү оңдоо/Чыгарма
Сааттын жыштыгы 1 МГцтен төмөн болгондо EEPROMды колдонбоңузtage 2V төмөн. Эгерде иштөө жыштыгын 1 МГцден жогору көтөрүү мүмкүн болбосо, анда т.бtage 2V жогору болушу керек. Ошо сыяктуу эле, эгерде камсыз кылуу томtage 2V жогору көтөрүүгө мүмкүн эмес, анда иштөө жыштыгы 1MHz ашык болушу керек.
Бул өзгөчөлүк температурага көз каранды экендиги белгилүү, бирок ал мүнөздөлгөн эмес. Көрсөтмөлөр бөлмө температурасы үчүн гана берилген.
Таймер эсептегич 1 OC1B – XOC1B боюнча PWM чыгаруу генерациясы туура иштебейт
Таймер Counter1 PWM чыгышы OC1B-XOC1B туура иштебейт. Башкаруу биттери, COM1B1 жана COM1B0 тиешелүүлүгүнө жараша COM1A1 жана COM1A0 режиминде болгондо гана, OC1B-XOC1B чыгышы туура иштейт.
Көйгөйдү оңдоо/айлануу
Жалгыз чечүүчү жол COM1A[1:0] жана COM1B[1:0] башкаруу биттерине бирдей башкаруу жөндөөсүн колдонуу, маалымат баракчасындагы 14-4 таблицаны караңыз. Tiny45 rev D үчүн көйгөй чечилди.
Аян А.
Өтө жогорку кубаттуулукту азайтуучу энергия керектөө
DebugWIRE үзгүлтүккө бир кадам таштаганда байланышты жоготот
PLL кулпуланган эмес
Колдонмонун кодунан окулган EEPROM Lock Bit Mode 3 иштебейт
EEPROM окуу аз камсыз кылуу көлөмүндө иштебей калышы мүмкүнtage / төмөнкү саат жыштыгы
Өтө жогорку кубаттуулукту азайтуучу энергия керектөө
Үч жагдай электр энергиясын керектөөнүн өтө жогору болушуна алып келет. Булар:
Сырткы саат сактагычтар тарабынан тандалат, бирок I/O PORT дагы эле чыгаруу катары иштетилген.
EEPROM кубаты өчүрүлгөнгө чейин окулат.
VCC 4.5 вольт же андан жогору.
Disclaimer: Бул документтеги маалымат Atmel өнүмдөрүнө байланыштуу берилген. Эч кандай лицензия, ачык же кыйыр түрдө, эстоппел аркылуу же башка жол менен, кандайдыр бир интеллектуалдык менчик укугуна бул документ тарабынан же Atmel өнүмдөрүн сатууга байланыштуу берилбейт. АТМЕЛДЕ ОРНАЛГАН САТУУНУН ШАРТТАРЫ ЖАНА ШАРТТАРЫ БЕЛГИЛЕНГЕНДЕН тышкаркы WEBSITE, ATMEL ЭЧ КАНДАЙ ЖООПКЕРЧИЛИКТИ ОЗУНА АЛБАЙТ ЖАНА ОЗУНУН ПРОДУКЦИЯЛАРЫНА ТИЕШЕЛУУ ЭЧ КАНДАЙ КЕПИЛДИКТЕРДЕН баш тартпайт БУЗУУ. ЭЧ КАЧАН АТМЕЛ ТҮЗ, КЫЙЫР, КЫЙЫРЛЫК, ЖАЗАЛУУЧУ, АТАЙЫН ЖЕ КОКУСТУК ЗЫЯНДАР ҮЧҮН ЖООПКЕРЧИЛИКТИ ТАРТБАЙТ КОЛДОНУУДАН ЖЕ КОЛДОНУУГО ЖОК БУЛ ДОКУМЕНТ, АТМЕЛГЕ МЫНДАЙ ЗЫЯНДАР БОЛУШУ ЖӨНҮНДӨ ЭКЕН.
Atmel бул документтин мазмунунун тактыгына же толуктугуна эч кандай кепилдик бербейт жана спецификацияларга жана өнүмдөрдүн сыпаттамаларына эскертүүсүз каалаган убакта өзгөртүү киргизүү укугун өзүнө калтырат. Atmel бул жерде камтылган маалыматты жаңыртуу боюнча эч кандай милдеттенме албайт. Эгерде атайын башкача каралбаса, Atmel өнүмдөрү унаа колдонмолоруна ылайыктуу эмес жана колдонулбайт. Atmel өнүмдөрү жашоону колдоо же колдоо үчүн арналган тиркемелерде компоненттер катары колдонууга арналбаган, уруксат берилген же кепилдикке ээ эмес.