8-розрядний мікроконтролер AVR Atmel із внутрішньосистемним програмованим флеш-пам’яттю 2/4/8 КБ
особливості
- Високопродуктивний 8-розрядний мікроконтролер AVR® з низьким енергоспоживанням
- Розширена архітектура RISC
- 120 потужних вказівок - виконання найбільш частотного циклу
- 32 х 8 робочих реєстрів загального призначення
- Повністю статична робота
- Енергонезалежні програми та пам’яті даних
- 2/4 / 8K байт вбудованої в систему програмованої програми Flash Flash
- Витривалість: 10,000 XNUMX циклів запису/стирання
- 128/256/512 байт Внутрішньосистемний програмований EEPROM
- Витривалість: 100,000 XNUMX циклів запису/стирання
- 128/256/512 байт Внутрішня SRAM
- Блокування програмування для самопрограмування Flash-програми та захисту даних EEPROM
Периферійні особливості
- 8-бітний таймер / лічильник з прескалером і двома ШІМ-каналами
- 8-розрядний високошвидкісний таймер / лічильник з окремим прескалером
- 2 високочастотні ШІМ-виходи з окремими регістрами порівняння вихідних даних
- Програмований генератор мертвих часів
- USI - універсальний послідовний інтерфейс з детектором стану запуску
- 10-розрядний АЦП
4 одноканальні канали
2 диференціальні пари каналів АЦП з програмованим коефіцієнтом посилення (1x, 20x)
Вимірювання температури
Програмований сторожовий таймер з окремим вбудованим генератором
Вбудований аналоговий компаратор
Спеціальні функції мікроконтролера
debugWIRE вбудована система налагодження
Внутрішньосистемний програмований через порт SPI
Зовнішні та внутрішні джерела переривань
Режими холостого ходу, режими зменшення шуму АЦП та режими відключення живлення
Покращена схема скидання живлення
Програмована схема виявлення коричневого виходу
Внутрішній калібрований генератор
Введення / виведення та пакети
Шість програмованих ліній вводу-виводу
8-контактний PDIP, 8-контактний SOIC, 20-контактний QFN / MLF та 8-контактний TSSOP (тільки ATtiny45 / V)
Робочий випtage
- 1.8 - 5.5 В для ATtiny25V / 45V / 85V
- 2.7 - 5.5 В для ATtiny25 / 45/85
Оцінка швидкості
- ATtiny25 В / 45 В / 85 В: 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 мкА
Режим відключення:
Конфігурації контактів
Висновка ATtiny25 / 45/85
Описи пінів
VCC: Supply voltage.
GND: земля.
Порт B (PB5:PB0): порт B є 6-бітним двонаправленим портом вводу/виводу з внутрішніми підтягуючими резисторами (вибираються для кожного біта). Вихідні буфери порту B мають симетричні характеристики приводу з високою можливістю прийому та джерела. Як входи, штифти порту B, які ззовні підтягнуті на низький рівень, будуть джерелом струму, якщо підтягуючі резистори активовані. Виводи порту B мають три стани, коли стан скидання стає активним, навіть якщо годинник не працює.
Порт B також виконує функції різних спеціальних функцій ATtiny25 / 45/85, як перераховано
На ATtiny25 програмовані порти вводу-виводу PB3 і PB4 (висновки 2 і 3) обмінюються в режимі сумісності ATtiny15 для підтримки зворотної сумісності з ATtiny15.
RESET: Скинути вхід. Низький рівень на цьому контакті довше ніж мінімальна довжина імпульсу призведе до скидання, навіть якщо годинник не запущений і якщо контакт скидання не вимкнено. Мінімальна тривалість імпульсу вказана Таблиця 21-4 на сторінці 165. Коротші імпульси не гарантують генерування скидання.
Штифт скидання також може бути використаний як (слабкий) штифт вводу-виводу.
закінченоview
ATtiny25 / 45/85 - це 8-розрядний мікроконтролер CMOS із низькою потужністю, заснований на розширеній архітектурі RISC AVR. Виконуючи потужні інструкції за один тактовий цикл, ATtiny25 / 45/85 забезпечує пропускну здатність, що наближається до 1 MIPS на МГц, що дозволяє конструктору системи оптимізувати енергоспоживання в порівнянні зі швидкістю обробки.
Блок-схема
Ядро AVR поєднує в собі багатий набір інструкцій з 32 робочими регістрами загального призначення. Всі 32 регістри безпосередньо підключені до блоку арифметичної логіки (ALU), що дозволяє отримати доступ до двох незалежних регістрів в одній команді, що виконується за один тактовий цикл. Отримана архітектура є більш ефективною за допомогою коду, забезпечуючи при цьому пропускну здатність до десяти разів швидшу за звичайні мікроконтролери CISC.
ATtiny25 / 45/85 забезпечує наступні функції: 2/4 / 8K байт програмованого в системі Flash, 128/256/512 байт EEPROM, 128/256/256 байт SRAM, 6 ліній вводу-виводу загального призначення, 32 загальних призначені робочі регістри, один 8-бітний таймер / лічильник з режимами порівняння, один 8-бітний високошвидкісний таймер / лічильник, універсальний послідовний інтерфейс, внутрішні та зовнішні переривання, 4-канальний, 10-бітний АЦП, програмований таймер сторожового таймера з внутрішнім Осцилятор та три режими економії енергії на вибір програмного забезпечення. Режим очікування зупиняє центральний процесор, дозволяючи системі SRAM, таймеру / лічильнику, АЦП, аналоговому компаратору та системі переривання продовжувати функціонувати. Режим відключення зберігає вміст реєстру, відключаючи всі функції мікросхеми до наступного переривання або скидання обладнання. Режим зменшення шуму АЦП зупиняє центральний процесор та всі модулі вводу-виводу, крім АЦП, щоб мінімізувати шум перемикання під час перетворення АЦП.
Пристрій виготовлено з використанням енергонезалежної пам'яті високої щільності Atmel. Вбудований флеш-провайдер ISP дозволяє перепрограмувати пам’ять програми в системі через послідовний інтерфейс SPI, звичайним енергонезалежним програмістом пам’яті або завантажувальним кодом на мікросхемі, що працює на ядрі AVR.
ATtiny25 / 45/85 AVR підтримується повним набором засобів розробки програм та систем, включаючи: C-компілятори, макрозбірники, налагоджувачі програм / симулятори та комплекти оцінки.
Про ресурси
Повний набір засобів розробки, примітки до програм та таблиці даних доступні для завантаження http://www.atmel.com/avr.
Код напрampлес
Ця документація містить простий код, наприкладampфайли, які коротко показують, як використовувати різні частини пристрою. Ці коди напрamples передбачає, що заголовок конкретної частини file включено перед компіляцією. Майте на увазі, що не всі постачальники компіляторів C включають визначення бітів у заголовок files і обробка переривань у C залежить від компілятора. Будь ласка, перевірте документацію компілятора C, щоб отримати докладнішу інформацію.
Для реєстрів вводу / виводу, розташованих на розширеній карті вводу-виводу, інструкції “IN”, “OUT”, “SBIS”, “SBIC”, “CBI” та “SBI” повинні бути замінені інструкціями, що дозволяють отримати доступ до розширеного I / O. Як правило, це означає "LDS" і "STS" у поєднанні з "SBRS", "SBRC", "SBR" і "CBR". Зверніть увагу, що не всі пристрої AVR містять розширену карту вводу-виводу.
Ємнісний датчик дотику
Бібліотека Atmel QTouch Library надає просте у використанні рішення для сенсорних інтерфейсів на мікроконтролерах Atmel AVR. Бібліотека QTouch Library включає підтримку методів збору QTouch® і QMatrix®.
Сенсорне зондування легко додається до будь-якої програми, пов’язуючи бібліотеку QTouch та використовуючи прикладний програмний інтерфейс (API) бібліотеки для визначення каналів та сенсорів дотику. Потім додаток викликає API для отримання інформації про канал та визначення стану сенсорного датчика.
Бібліотека QTouch є безкоштовною і її можна завантажити з Atmel webсайт. Для отримання додаткової інформації та деталей впровадження зверніться до посібника користувача бібліотеки QTouch, який також доступний на Atmel webсайт.
Зберігання даних
Результати кваліфікації надійності показують, що прогнозований коефіцієнт відмов у збереженні даних значно менше 1 PPM протягом 20 років при 85 ° C або 100 років при 25 ° C.
Ядро процесора AVR
вступ
У цьому розділі розглядається основна архітектура AVR. Основною функцією ядра процесора є забезпечення правильного виконання програми. Тому центральний процесор повинен мати доступ до пам'яті, виконувати обчислення, керувати периферією та обробляти переривання.
Архітектурний Оверview
Щоб максимізувати продуктивність та паралельність, AVR використовує архітектуру Гарварда - з окремими пам'ятями та шинами для програми та даних. Інструкції в пам'яті програми виконуються за допомогою однорівневого конвеєрингу. Поки виконується одна інструкція, наступна інструкція попередньо завантажується з пам'яті програми. Ця концепція дозволяє виконувати інструкції в кожному тактовому циклі. Пам'ять програми - це внутрішньосистемна перепрограмована флеш-пам’ять.
Реєстр швидкого доступу File містить 32 x 8-розрядних робочих регістрів загального призначення з одним часом доступу тактового циклу. Це дозволяє працювати з арифметико-логічним пристроєм (ALU) за один цикл. У типовій операції ALU з регістру виводяться два операнди File, операція виконується, а результат зберігається назад у реєстрі File- за один тактовий цикл.
Шість із 32 регістрів можна використовувати як три 16-бітові непрямі вказівники регістру адрес для адресації простору даних - що дозволяє ефективно обчислювати адреси. Один із цих покажчиків адрес також може бути використаний як покажчик адреси для пошуку таблиць у пам'яті Flash-програми. Ці додані регістри функцій - це 16-розрядні X-, Y- та Z-регістри, описані далі в цьому розділі.
ALU підтримує арифметичні та логічні операції між регістрами або між константою та регістром. Операції з одним реєстром також можуть виконуватися в ALU. Після арифметичної операції реєстр стану оновлюється, щоб відображати інформацію про результат операції.
Потік програми забезпечується умовними та безумовними інструкціями переходу та виклику, здатними безпосередньо звертатися до всього адресного простору. Більшість інструкцій AVR мають єдиний 16-розрядний формат слів, але існують також 32-розрядні вказівки.
Під час переривань та викликів підпрограми лічильник програм повернення (PC) зберігається в стеку. Стек ефективно розподіляється в загальних SRAM даних, і, отже, розмір стека обмежується лише загальним розміром SRAM та використанням SRAM. Усі користувацькі програми повинні ініціалізувати SP у процедурі скидання (до виконання підпрограм або переривань). Покажчик стека (SP) доступний для читання / запису у просторі вводу-виводу. До даних SRAM можна легко отримати доступ за допомогою п’яти різних режимів адресації, що підтримуються в архітектурі AVR.
Простори пам'яті в архітектурі AVR - це всі лінійні та звичайні карти пам'яті.
Гнучкий модуль переривання має свої регістри управління в просторі вводу-виводу з додатковим бітом увімкнення глобального переривання в реєстрі стану. Усі переривання мають окремий вектор переривання у таблиці "Вектор переривань". Переривання мають пріоритет відповідно до їхнього положення "Вектор переривання". Чим нижча адреса вектора переривання, тим вищий пріоритет.
Простір пам’яті вводу/виводу містить 64 адреси для периферійних функцій ЦП, таких як регістри керування, SPI та інші функції введення/виводу. До пам’яті вводу/виводу можна отримати доступ безпосередньо або як місця розташування простору даних, наступних за місцем розташування реєстру. File, 0x20 – 0x5F.
ALU - одиниця арифметичної логіки
Високопродуктивний AVR ALU працює безпосередньо у зв'язку з усіма 32 робочими регістрами загального призначення. Протягом одного тактового циклу виконуються арифметичні операції між регістрами загального призначення або між регістром та безпосереднім. Операції ALU поділяються на три основні категорії - арифметичні, логічні та бітові функції. Деякі реалізації архітектури також забезпечують потужний множник, що підтримує як множення зі знаком / без знака, так і дробовий формат. Детальний опис див. У розділі “Набір інструкцій”.
Реєстр статусу
Регістр стану містить інформацію про результат останньої виконаної арифметичної інструкції. Ця інформація може бути використана для зміни потоку програми для виконання умовних операцій. Зверніть увагу, що Реєстр стану оновлюється після всіх операцій ALU, як зазначено у Довідковому наборі інструкцій. У багатьох випадках це позбавить від необхідності користуватися спеціальними інструкціями порівняння, що призведе до швидшого та компактнішого коду.
Реєстр стану не зберігається автоматично при введенні процедури переривання, а відновлюється при поверненні з переривання. Цим має займатися програмне забезпечення.
SREG - Реєстр статусу AVR
Реєстр статусу AVR - SREG - визначається як:
біт | 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-bit також може бути встановлений та очищений додатком за допомогою інструкцій SEI та CLI, як описано у посиланні на набір інструкцій.
Біт 6 - T: Зберігання біт-копій
Інструкції бітового копіювання BLD (Bit LoaD) і BST (Bit STore) використовують біт T як джерело або призначення для керованого біта. Трохи з реєстру в Реєстрі File може бути скопійований в T за допомогою інструкції BST, а біт в T може бути скопійований в біт в регістрі в реєстрі File за інструкцією BLD.
Біт 5 - H: Прапор напівнесі
Прапор Half Carry H означає Half Carry у деяких арифметичних операціях. Half Carry корисний в арифметиці BCD. Для отримання детальної інформації див. “Опис набору інструкцій”.
Біт 4 – S: Знаковий біт, S = N ⊕ V
S-біт завжди є ексклюзивом або між Негативним прапором N та Прапором переповнення Двох Доповнення. Дивіться “Опис набору інструкцій” для отримання детальної інформації.
Біт 3 - V: Прапор переповнення доповнення двох
Прапор переповнення комплементу двох підтримує арифметику доповнення двох. Для отримання детальної інформації див. “Опис набору інструкцій”.
Біт 2 - N: Негативний прапор
Негативний прапор N вказує на негативний результат арифметичної або логічної операції. Для отримання детальної інформації див. “Опис набору інструкцій”.
Біт 1 - Z: Нульовий прапор
Нульовий прапорець Z позначає нульовий результат в арифметичній або логічній операції. Для отримання детальної інформації див. “Опис набору інструкцій”.
Біт 0 - C: Нести прапор
Прапор перенесення C вказує на перенесення в арифметичній або логічній операції. Для отримання детальної інформації див. “Опис набору інструкцій”.
Реєстр загального призначення File
Реєстр File оптимізовано для набору інструкцій AVR Enhanced RISC. Для досягнення необхідної продуктивності та гнучкості Реєстр підтримує такі схеми введення/виводу File:
Один 8-бітовий вихідний операнд і один 8-бітний вхідний результат
Два 8-бітових вихідних операнди та один 8-бітний вхід результату
Два 8-бітових вихідних операнди та один 16-бітний вхід результату
Один 16-бітовий вихідний операнд і один 16-бітний вхідний результат
Малюнок 4-2 показує структуру 32 робочих реєстрів загального призначення в ЦП.
Як показано в Малюнок 4-2, кожному регістру також призначається адреса пам'яті даних, відображаючи їх безпосередньо в перші 32 місця простору даних користувача. Хоча ця організація пам’яті фізично не реалізована як розташування SRAM, ця організація пам’яті забезпечує велику гнучкість у доступі до регістрів, оскільки регістри вказівників X, Y і Z можна налаштувати на індексування будь-якого регістру в file.Більшість інструкцій, діючих на Реєстрі File мають прямий доступ до всіх регістрів, і більшість з них є одноцикловими інструкціями.
X-регістр, Y-регістр та Z-регістр
Регістри R26..R31 мають деякі додаткові функції для загального використання. Ці регістри є 16-розрядними вказівниками адрес для непрямої адресації простору даних. Три регістри непрямих адрес X, Y та Z визначені, як описано в Малюнок 4-3.
У різних режимах адресації ці адресні регістри виконують функції фіксованого переміщення, автоматичного збільшення та автоматичного зменшення (детальніше див. Посилання на набір інструкцій).
Покажчик стека
Стек в основному використовується для зберігання тимчасових даних, для зберігання локальних змінних та для зберігання адрес повернення після переривань та викликів підпрограми. Реєстр покажчика стека завжди вказує на верх стека. Зверніть увагу, що стек реалізований як зростаючий з більш високих розташувань пам'яті на нижчі місця пам'яті. Це означає, що команда Stack PUSH зменшує покажчик стека.
Покажчик стека вказує на область стеку даних SRAM, де знаходяться стеки підпрограм і переривань. Цей простір стека в SRAM даних повинен бути визначений програмою перед виконанням будь-яких викликів підпрограми або ввімкненням переривань. Вказівник стека повинен бути встановлений у точці вище 0x60. Покажчик стека зменшується на один при перенесенні даних на стек за допомогою інструкції PUSH, а зменшується на два, коли адреса повернення надсилається на стек із викликом підпрограми або перериванням. Покажчик стека збільшується на одиницю, коли дані вискакуються зі стека за допомогою інструкції POP, і збільшується на два, коли дані вискакуються зі стека з поверненням із підпрограми RET або поверненням із переривання RETI.
Покажчик стеку AVR реалізований як два 8-бітові регістри в просторі вводу-виводу. Кількість фактично використаних бітів залежить від реалізації. Зверніть увагу, що простір даних у деяких реалізаціях архітектури AVR настільки малий, що потрібен лише SPL. У цьому випадку Реєстр SPH не буде присутній.
SPH та SPL - Реєстр покажчика стека
біт | 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 | |
Початкове значення | РАМЕНД | РАМЕНД | РАМЕНД | РАМЕНД | РАМЕНД | РАМЕНД | РАМЕНД | РАМЕНД | |
Початкове значення | РАМЕНД | РАМЕНД | РАМЕНД | РАМЕНД | РАМЕНД | РАМЕНД | РАМЕНД | РАМЕНД |
Час виконання інструкції
У цьому розділі описані загальні концепції синхронізації доступу для виконання інструкцій. ЦП AVR керується тактовою частотою ЦП clkCPU, безпосередньо згенерованою з вибраного джерела тактової частоти для мікросхеми. Внутрішній розподіл годинника не використовується.
Малюнок 4-4 показує паралельні вибірки інструкцій та виконання інструкцій, передбачені архітектурою Гарварду та реєстром швидкого доступу File концепція. Це основна концепція конвеєрного зв’язку для отримання до 1 MIPS на МГц з відповідними унікальними результатами для функцій на вартість, функцій на такт і функцій на один блок живлення.
Малюнок 4-5. Одноциклова робота ALU
Скидання та обробка переривань
AVR забезпечує кілька різних джерел переривань. Ці переривання та окремий Скидання вектора мають окремий Вектор програми в просторі пам'яті програми. Всім перериванням присвоюються окремі біти активації, які повинні бути записані як один логічний, разом із бітом увімкнення глобального переривання в Реєстрі стану, щоб увімкнути переривання.
Найнижчі адреси в просторі пам'яті програми за замовчуванням визначаються як Скидання та Вектори переривання. Повний список векторів наведено в “Переривання” на сторінці 48. Список також визначає рівні пріоритету різних переривань. Чим нижче адреса, тим вищим є рівень пріоритету. RESET має найвищий пріоритет, а наступним є INT0 - зовнішній запит на переривання 0.
Коли відбувається переривання, I-біт увімкнення глобального переривання видаляється, а всі переривання вимикаються. Користувацьке програмне забезпечення може записати логіку до I-біта, щоб увімкнути вкладені переривання. Потім усі ввімкнені переривання можуть перервати поточну процедуру переривання. I-біт встановлюється автоматично, коли виконується інструкція Повернення з переривання - RETI.
В основному є два типи переривань. Перший тип ініціюється подією, яка встановлює прапор переривання. Для цих переривань лічильник програм векторизується до фактичного вектора переривань, щоб виконати процедуру обробки переривань, а апаратне забезпечення очищає відповідний прапор переривання. Прапори переривань також можна очистити, записавши логічний у біт (-і) прапорця (бітів), який потрібно очистити. Якщо під час очищення відповідного біта ввімкнення переривання виникає умова переривання, прапор переривання встановлюється і запам'ятовується, доки переривання не буде ввімкнено, або прапор не буде очищений програмним забезпеченням. Подібним чином, якщо одна або кілька умов переривання виникають під час очищення біта ввімкнення глобального переривання, відповідні прапорці переривання встановлюватимуться і запам'ятовуватимуться, поки не буде встановлений біт увімкнення глобального переривання, а потім виконуватимуться в порядку пріоритету.
Другий тип переривань спрацьовуватиме, доки існує умова переривання. Ці переривання необов’язково мають позначки переривання. Якщо умова переривання зникає до того, як увімкнено переривання, переривання не буде спрацьовувати.
Коли AVR виходить із переривання, він завжди повертається до основної програми та виконує ще одну інструкцію, перш ніж буде подано будь-яке очікуване переривання.
Зверніть увагу, що Регістр стану не зберігається автоматично при введенні процедури переривання, а також не відновлюється при поверненні з процедури переривання. Цим має займатися програмне забезпечення.
При використанні інструкції CLI для вимкнення переривань, переривання буде негайно вимкнено. Жодне переривання не буде виконано після інструкції CLI, навіть якщо воно відбувається одночасно з інструкцією CLI. Наступний впрample показує, як це можна використовувати, щоб уникнути переривань під час запису в EEPROM.
Код збірки Example |
в r16, SREG; зберігати значення SREG
cli ; вимкнути переривання під час послідовності sbi EECR, EEMPE ; почати запис EEPROM sbi EECR, EEPE вихід SREG, r16 ; відновити значення SREG (I-біт) |
C Код Прample |
char cSREG;
cSREG = SREG; /* зберігати значення SREG */ /* вимкнути переривання під час хронометрованої послідовності */ _CLI (); EECR |= (1< EECR | = (1 < SREG = cSREG; /* відновлення значення SREG (I-біт) */ |
При використанні інструкції SEI для дозволу переривань, інструкція, що йде за SEI, буде виконана перед будь-якими очікуваними перериваннями, як показано в цьому прикладі.ample.
Код збірки Example |
sei ; встановіть глобальне ввімкнення переривань
сон; увійти в сон, чекаючи переривання ; Примітка: увійде в режим сну перед тим, як очікувати очікування ; переривання |
C Код Прample |
_SEI(); /* встановити глобальне ввімкнення переривань */
_SLEEP(); /* перехід у режим сну, очікування переривання */ / * примітка: увійде в режим сну перед будь-якими перериваннями, що очікують * / / |
Час відповіді на переривання
Відповідь на виконання переривання для всіх увімкнених переривань AVR становить мінімум чотири такти. Після чотирьох тактових циклів виконується програма Vector address для фактичної процедури обробки переривань. Протягом цього чотиригодинного циклу лічильник програм висувається на стек. Як правило, вектор є переходом до процедури переривання, і цей стрибок займає три тактові цикли. Якщо під час виконання багатоциклової інструкції виникає переривання, ця інструкція виконується до подання переривання. Якщо переривання відбувається, коли MCU перебуває в режимі сну, час реагування на переривання збільшується на чотири тактові цикли. Це збільшення додається до часу запуску з обраного режиму сну.
Повернення з процедури обробки переривань займає чотири тактові цикли. Протягом цих чотирьох тактових циклів лічильник програм (два байти) вискакується із стека, покажчик стека збільшується на два і встановлюється I-біт у SREG.
Спогади AVR
Цей розділ описує різні спогади в ATtiny25 / 45/85. Архітектура AVR має два основних простори пам'яті - пам’ять даних та пам’ять програми. Окрім того, ATtiny25 / 45/85 має пам’ять EEPROM для зберігання даних. Всі три простори пам'яті є лінійними та регулярними.
Внутрішньосистемна перепрограмована флеш-програма
ATtiny25 / 45/85 містить 2/4 / 8K байт Вбудованої в системі перепрограмованої флеш-пам'яті для програмного зберігання. Оскільки всі інструкції AVR мають ширину 16 або 32 біти, Flash організований як 1024/2048/4096 x 16.
Флеш-пам’ять має витримку щонайменше 10,000 циклів запису / стирання. Лічильник програм ATtiny25 / 45/85 (ПК) має ширину 10/11/12 бітів, таким чином адресуючи місця розташування програми 1024/2048/4096. “Програма пам’яті- ming ”на сторінці 147 містить детальний опис послідовного завантаження даних Flash із використанням контактів SPI.
Постійні таблиці можна розподілити в межах усього адресного простору пам'яті програми (див. Опис інструкції LPM - завантаження пам'яті програми).
Малюнок 5-1. Карта пам'яті програми
Пам'ять даних SRAM
Малюнок 5-2 показує, як організована пам’ять ATtiny25 / 45/85 SRAM.
Нижчі 224/352/607 розташування пам'яті даних адресують обидва реєстри File, пам'ять вводу-виводу та внутрішня SRAM даних. Перші 32 адреси адресують Реєстр File, наступні 64 місця розташування стандартної пам'яті вводу-виводу, а останні 128/256/512 місць адресують внутрішні дані SRAM.
П’ять різних режимів адресації для обкладинки пам’яті даних: пряма, непряма зі зміщенням, непряма, непряма з попереднім декрементом та непряма з пост-інкрементом. У Реєстрі File, регістри R26 - R31 містять регістри покажчиків непрямої адресації.
Пряма адресація охоплює весь простір даних.
Режим "Непрямий з переміщенням" досягає 63 адреси адреси від базової адреси, заданої Y- або Z-регістром.
При використанні режимів непрямої адресації регістрів з автоматичним попереднім зменшенням та подальшим збільшенням регістри адрес X, Y та Z зменшуються або збільшуються.
32 робочі регістри загального призначення, 64 регістри вводу-виводу та 128/256/512 байтів внутрішньої пам’яті даних в ATtiny25/45/85 доступні через усі ці режими адресації. Реєстр File описано в “Ген- Реєстр цілей File” на сторінці 10.
Малюнок 5-2. Карта пам'яті даних
Доступ до пам'яті даних Часи
У цьому розділі описано загальні поняття часу доступу для доступу до внутрішньої пам’яті. Доступ до SRAM внутрішніх даних виконується за два цикли clkCPU, як описано в Малюнок 5-3.
Малюнок 5-3. Цикли доступу до SRAM даних на мікросхемі Пам'ять даних EEPROM
ATtiny25 / 45/85 містить 128/256/512 байт пам'яті EEPROM даних. Він організований як окремий простір даних, в якому можна читати та записувати окремі байти. EEPROM має витримку щонайменше 100,000 XNUMX циклів запису / стирання. Доступ між EEPROM і центральним процесором описаний нижче, вказуючи адресні регістри EEPROM, реєстр даних EEPROM та регістр керування EEPROM. Детальніше див “Послідовне завантаження” на сторінці 151.
Доступ для читання / запису EEPROM
Регістри доступу до EEPROM доступні в просторі вводу-виводу.
Час доступу до запису для EEPROM вказано в Таблиця 5-1 на сторінці 21. Однак функція самосинхронізації дозволяє програмному забезпеченню користувача визначити, коли можна записати наступний байт. Якщо код користувача містить інструкції, які записують EEPROM, необхідно вжити деяких запобіжних заходів. У джерелах живлення з сильною фільтрацією VCC, ймовірно, буде повільно зростати або падати
Увімкнення/вимкнення живлення. Це змушує пристрій деякий час працювати на обtage нижче, ніж зазначено як мінімум для використовуваної тактової частоти. Побачити “Запобігання пошкодженню EEPROM” на сторінці 19 докладно про те, як уникнути проблем у цих ситуаціях.
Щоб запобігти ненавмисному запису EEPROM, слід дотримуватися певної процедури запису. Відноситься до “Атомний Програмування байтів ”на сторінці 17 і “Програмування розділеного байта” на сторінці 17 докладно про це.
Коли EEPROM зчитується, процесор зупиняється на чотири тактові цикли перед виконанням наступної інструкції. Коли EEPROM записаний, ЦП зупиняється на два тактові цикли перед виконанням наступної інструкції.
Програмування атомних байтів
Використання атомного байтового програмування - найпростіший режим. Під час запису байта в EEPROM користувач повинен записати адресу в Реєстр EEAR, а дані в Реєстр EEDR. Якщо біти EEPMn дорівнюють нулю, запис EEPE (протягом чотирьох циклів після запису EEMPE) ініціює операцію стирання / запису. І цикл стирання, і запис виконуються за одну операцію, а загальний час програмування вказується в Таблиця 5-1 на сторінці 21. Біт EEPE залишається встановленим до завершення операцій стирання та запису. Поки пристрій зайнятий програмуванням, виконувати будь-які інші операції EEPROM неможливо.
Програмування розділених байтів
Можна розділити цикл стирання та запису на дві різні операції. Це може бути корисно, якщо системі потрібен короткий час доступу протягом певного обмеженого періоду часу (як правило, якщо блок живлення обtagе падає). Щоб скористатися перевагою tage цього методу, потрібно, щоб місця для запису були стерті перед операцією запису. Але оскільки операції стирання та запису розділені, можна виконувати операції стирання, коли система дозволяє виконувати важливі за часом операції (зазвичай після включення живлення).
Стерти
Щоб стерти байт, адресу потрібно записати в EEAR. Якщо біти EEPMn дорівнюють 0b01, запис EEPE (протягом чотирьох циклів після запису EEMPE) ініціює лише операцію стирання (час програмування вказано в Таблиця 5-1 далі сторінка 21). Біт EEPE залишається встановленим до завершення операції стирання. Поки пристрій зайнятий програмуванням, виконувати будь-які інші операції EEPROM неможливо.
Напишіть
Щоб записати місце, користувач повинен записати адресу в EEAR, а дані в EEDR. Якщо біти EEPMn дорівнюють 0b10, запис EEPE (протягом чотирьох циклів після запису EEMPE) ініціює лише операцію запису (час програмування вказано в Таблиця 5-1 на сторінці 21). Біт EEPE залишається встановленим до завершення операції запису. Якщо місце для запису не було стерто до запису, дані, що зберігаються, слід вважати втраченими. Поки пристрій зайнятий програмуванням, виконувати будь-які інші операції EEPROM неможливо.
Калібрований генератор використовується для вимірювання часу доступу до EEPROM. Переконайтесь, що частота генератора відповідає вимогам, описаним у “OSCCAL - Регістр калібрування осциляторів” на сторінці 31.
Наступний код, наприкладampФайли показують одну збірку та одну функцію C для стирання, запису або атомарного запису EEPROM. ЕксampПрипускають, що переривання контролюються (наприклад, глобальне вимкнення переривань), тому під час виконання цих функцій жодних переривань не буде.
Код збірки Example |
EEPROM_write:
; Зачекайте завершення попереднього запису sbic EECR,EEPE rjmp EEPROM_write ; Встановіть режим програмування ldi r16, (0<<EEPM1)|(0<<EEPM0) з EECR, r16 ; Встановіть адресу (r18: r17) в адресному реєстрі з EEARH, r18 з EEARL, r17 ; Записати дані (r19) до реєстру даних вихід EEDR, r19 ; Напишіть логічний для EEMPE sbi EECR,EEMPE ; Почніть запис eeprom, встановивши EEPE sbi EECR,EEPE відстав |
C Код Прample |
void EEPROM_write(unsigned char ucAddress, unsigned char ucData)
{ /* Зачекайте на завершення попереднього запису */ while(EECR & (1< ; /* Встановити режим програмування */ EECR = (0 < / * Встановити адреси та регістри даних * / EEAR = ucAddress; EEDR = ucData; /* Записати логічну одиницю в EEMPE */ EECR | = (1 < / * Почніть запис eeprom, встановивши EEPE * / EECR | = (1 < } |
Наступний код напрamples показує функції зборки та C для читання EEPROM. ЕксampПрипускають, що переривання керуються таким чином, щоб під час виконання цих функцій не виникало переривань.
Код збірки Example |
EEPROM_ прочитано:
; Зачекайте завершення попереднього запису sbic EECR,EEPE rjmp EEPROM_read ; Встановіть адресу (r18: r17) в адресному реєстрі з EEARH, r18 з EEARL, r17 ; Почніть читання eeprom, написавши EERE sbi EECR,EERE ; Зчитування даних з реєстру даних у r16, EEDR відстав |
C Код Прample |
unsigned char EEPROM_read(unsigned char ucAddress)
{ / * Зачекайте завершення попереднього запису * / в той час як (EECR & (1 < ; / * Налаштування адресного реєстру * / EEAR = ucAddress; /* Почніть читання eeprom, написавши EERE */ EECR | = (1 < / * Повернути дані з реєстру даних * / повернути EEDR; } |
Запобігання корупції EEPROM
Під час періодів низького VCC дані EEPROM можуть бути пошкоджені, оскільки об’єм живленняtage занадто низький для нормальної роботи ЦП і EEPROM. Ці проблеми є такими ж, як і для систем рівня плати, що використовують EEPROM, і повинні застосовуватися ті ж конструктивні рішення.
Пошкодження даних EEPROM може бути викликано двома ситуаціями, коли voltage занадто низька. По-перше, регулярна послідовність запису в EEPROM вимагає мінімального обсягуtage для правильної роботи. По-друге, сам процесор може виконувати інструкції некоректно, якщо подача voltage занадто низький.
Пошкодження даних EEPROM можна легко уникнути, дотримуючись цієї рекомендації щодо проектування:
Тримайте AVR RESET активним (низьким) протягом періодів недостатнього живлення обtage. Це можна зробити, увімкнувши внутрішній детектор загоряння (BOD). Якщо рівень виявлення внутрішнього БПК не відповідає
необхідного рівня виявлення, можна використовувати зовнішню схему захисту від скидання низького VCC. Якщо скидання відбувається під час операції запису, операція запису буде завершена за умови, що джерело живлення voltage достатньо.
Пам'ять вводу / виводу
Визначення простору вводу / виводу ATtiny25 / 45/85 показано в “Підсумок реєстрації” на сторінці 200.
Усі входи / виходи ATtiny25 / 45/85 та периферійні пристрої розміщені у просторі вводу-виводу. До всіх місць вводу / виводу можуть мати доступ інструкції LD / LDS / LDD та ST / STS / STD, передаючи дані між 32 робочими регістрами загального призначення та простором введення / виводу. Регістри вводу-виводу в діапазоні адрес 0x00 - 0x1F мають прямий доступ до бітів за допомогою інструкцій SBI та CBI. У цих регістрах значення одиничних бітів можна перевірити за допомогою інструкцій SBIS та SBIC. Докладніше див. У розділі набору інструкцій. При використанні специфічних команд вводу / виводу IN та OUT необхідно використовувати адреси вводу / виводу 0x00 - 0x3F. При зверненні до реєстрів вводу-виводу як простору даних за допомогою інструкцій LD та ST, до цих адрес потрібно додати 0x20.
Для сумісності з майбутніми пристроями зарезервовані біти слід записати в нуль, якщо вони будуть доступні. Зарезервовані адреси пам'яті вводу / виводу ніколи не слід писати.
Деякі прапори стану очищаються шляхом написання логічного. Зауважте, що інструкції CBI та SBI працюватимуть лише за вказаним бітом, і тому їх можна використовувати в регістрах, що містять такі позначки стану. Інструкції CBI та SBI працюють лише з регістрами від 0x00 до 0x1F.
Реєстри вводу-виводу та управління периферією пояснюються в наступних розділах.
Опис реєстру
EEARH - Адресний реєстр EEPROM
біт | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1F | – | – | – | – | – | – | – | УШО 8 | РОК |
Читання/запис | R | R | R | R | R | R | R | R/W | |
Початкове значення | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X/0 |
Біти 7: 1 - Res: Зарезервовані біти
Ці біти зарезервовані для подальшого використання і завжди будуть читатися як нуль.
Біти 0 - EEAR8: Адреса EEPROM
Це найважливіший адресний біт EEPROM ATtiny85. У пристроях з меншою кількістю EEPROM, тобто ATtiny25 / ATtiny45, цей біт зарезервований і завжди буде читати нуль. Початкове значення Реєстру адрес EEPROM (EEAR) не визначено, тому перед вступом до EEPROM необхідно записати належне значення.
EEARL - Адресний реєстр EEPROM
біт
0x1E | УШО 7 | УШО 6 | УШО 5 | УШО 4 | УШО 3 | УШО 2 | УШО 1 | УШО 0 | РАННЯ |
Тил / Запис | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Початкове значення | X | X | X | X | X | X | X | X |
Біт 7 - EEAR7: Адреса EEPROM
Це найважливіший біт адреси EEPROM ATtiny45. У пристроях з меншою кількістю EEPROM, тобто ATtiny25, цей біт зарезервований і завжди буде читати нуль. Початкове значення адресного реєстру EEPROM (EEAR) не визначено, тому перед вступом до EEPROM необхідно записати належне значення.
Біти 6: 0 - EEAR [6: 0]: Адреса EEPROM
Це (низькі) біти адресного реєстру EEPROM. Байти даних EEPROM адресовані лінійно в діапазоні 0… (128/256 / 512-1). Початкове значення EEAR не визначено, тому перед вступом до EEPROM необхідно записати належне значення.
EEDR - Реєстр даних EEPROM
біт | 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 містить дані, які слід записати в EEPROM на адресу, вказану Реєстром EEAR. Для операції зчитування EEPROM EEDR містить дані, зчитані з
EEPROM за адресою, наданою EEAR.
5.5.4 EECR - Реєстр контролю EEPROM |
|||||||||
Біт 7 6 5 | 4 | 3 | 2 | 1 | 0 | ||||
0x1C – | – | EEPM1 | EEPM0 | Жахливий | EEMPE | EEPE | EERE | ЄЕКР | |
Читання / запис R R R / W | R/W | R/W | R/W | R/W | R/W | ||||
Початкове значення 0 0 X | X | 0 | 0 | X | 0 |
Біт 7 - Res: Зарезервований біт
Цей біт зарезервований для подальшого використання і завжди буде читатись як 0 в ATtiny25 / 45/85. Для сумісності з майбутніми пристроями AVR завжди записуйте цей біт в нуль. Після прочитання замаскуйте цей біт.
Біт 6 - Res: Зарезервований біт
Цей біт зарезервований в ATtiny25 / 45/85 і завжди буде читатися як нуль.
Біти 5: 4 - EEPM [1: 0]: Біти режиму програмування EEPROM
Налаштування бітів режиму програмування EEPROM визначає, яку програмувальну дію буде ініційовано під час написання EEPE. Можна запрограмувати дані за одну атомну операцію (стерти старе значення та запрограмувати нове значення) або розділити операції Видалення та Запис на дві різні операції. Час програмування для різних режимів показано в Таблиця 5-1. Поки EEPE встановлено, будь-яке записування в EEPMn буде ігноруватися. Під час скидання біти EEPMn будуть скинуті до 0b00, якщо EEPROM не зайнятий програмуванням.
Таблиця 5-1. Біти режиму EEPROM
EEPM1 | EEPM0 | Час програмування | Операція |
0 | 0 | 3.4 мс | Видалення та запис за одну операцію (атомна операція) |
0 | 1 | 1.8 мс | Стерти лише |
1 | 0 | 1.8 мс | Лише писати |
1 | 1 | – | Зарезервовано для майбутнього використання |
Біт 3 - EERIE: EEPROM Ready Interrupt Enable
Запис EERIE в один дозволяє переривання EEPROM Ready, якщо встановлено I-bit в SREG. Запис EERIE в нуль вимикає переривання. Готовий переривання EEPROM генерує постійне переривання, коли енергонезалежна пам’ять готова до програмування.
Біт 2 - EEMPE: Увімкнення магістерської програми EEPROM
Біт EEMPE визначає, чи матиме запис EEPE в нього ефект чи ні.
Коли встановлено EEMPE, встановлення EEPE протягом чотирьох тактових циклів запрограмує EEPROM на обрану адресу. Якщо EEMPE дорівнює нулю, встановлення EEPE не матиме ефекту. Коли EEMPE було записано на одиницю програмним забезпеченням, апаратне забезпечення очищає біт до нуля через чотири тактові цикли.
Біт 1 - EEPE: Увімкнення програми EEPROM
Сигнал увімкнення програми EEPROM EEPE - це сигнал ввімкнення програмування на EEPROM. Коли EEPE записано, EEPROM буде запрограмовано відповідно до налаштувань бітів EEPMn. Біт EEMPE повинен бути записаний в один, перш ніж логічний буде записаний в EEPE, інакше запис EEPROM не відбувається. По закінченні часу доступу до запису біт EEPE очищається апаратно. Коли EEPE встановлено, ЦП зупиняється на два цикли перед виконанням наступної інструкції.
Біт 0 - EERE: Увімкнення читання EEPROM
Сигнал увімкнення зчитування EEPROM - EERE - це стробоскоп для зчитування EEPROM. Коли в Реєстрі EEAR встановлена правильна адреса, біт EERE повинен бути записаний в один, щоб ініціювати зчитування EEPROM. Доступ для читання EEPROM вимагає однієї інструкції, і запитувані дані доступні негайно. Коли EEPROM зчитується, процесор зупиняється на чотири цикли перед виконанням наступної інструкції. Користувач повинен опитати біт EEPE перед початком операції зчитування. Якщо триває операція запису, неможливо ні прочитати EEPROM, ні змінити реєстр EEAR.
Системний годинник та параметри годинника
Годинникові системи та їх розподіл
Годинник процесора
Тактовий сигнал ЦП спрямовується на частини системи, які відповідають за роботу ядра AVR. НапрampОдними з таких модулів є Реєстр загального призначення File, Регістр стану та пам'ять даних, що містить покажчик стека. Зупинка тактової частоти ЦП заважає ядру виконувати загальні операції та обчислення.
Годинник вводу-виводу - clkI / O
Годинник вводу-виводу використовується більшістю модулів вводу-виводу, наприклад, таймером / лічильником. Годинник вводу-виводу також використовується модулем Зовнішнє переривання, але зауважте, що деякі зовнішні переривання виявляються за допомогою асинхронної логіки, що дозволяє виявити такі переривання, навіть якщо годинник вводу-виводу зупинений.
Flash Clock - clkFLASH
Годинник Flash контролює роботу інтерфейсу Flash. Зазвичай Flash-годинник активний одночасно з годинником процесора.
Годинник ADC - clkADC
АЦП забезпечується виділеним тактовим доменом. Це дозволяє зупинити тактову частоту процесора та вводу / виводу, щоб зменшити шум, що генерується цифровою схемою. Це дає більш точні результати перетворення АЦП.
Внутрішня ФАПЧ для швидкого формування периферійного годинника - clkPCK
Внутрішня ФАПЧ в ATtiny25 / 45/85 генерує тактову частоту, яка в 8 разів помножується на вхід джерела. За замовчуванням ФАПЧ використовує вихідний сигнал внутрішнього RC-генератора 8.0 МГц як джерело. Як варіант, якщо встановлений біт LSM PLLCSR, PLL використовуватиме вихідний сигнал RC-генератора, поділений на два. Таким чином, вихід PLL, швидкий периферійний тактовий сигнал становить 64 МГц. Швидкий периферійний годинник, або годинник, попередньо відрахований на нього, можна вибрати як джерело тактового сигналу для таймера / лічильника1 або як системний годинник. Побачити Малюнок 6-2. Частота швидкого периферійного тактового сигналу ділиться на два, коли встановлено LSM PLLCSR, у результаті чого тактова частота становить 32 МГц. Зверніть увагу, що LSM не можна встановити, якщо PLLCLK використовується як системний годинник.
Малюнок 6-2. Система тактування PCK.
ФАПЧ заблокований на пульсовому генераторі, і регулювання генератора пульта через регістр OSCCAL одночасно відрегулює швидкий периферійний годинник. Однак, навіть якщо RC-генератор переходить на більш високу частоту, ніж 8 МГц, швидка периферійна тактова частота насичується на рівні 85 МГц (найгірший випадок) і залишається коливальною на максимальній частоті. Слід зазначити, що ФАПЧ в цьому випадку більше не блокується за допомогою тактового генератора RC. Тому рекомендується не переводити налаштування OSCCAL на більш високу частоту, ніж 8 МГц, щоб підтримувати ФАПЧ в правильному робочому діапазоні.
Внутрішня PLL вмикається, коли:
Встановлений біт PLLE в регістрі PLLCSR.
Запобіжник CKSEL запрограмований на '0001'.
Запобіжник CKSEL запрограмований на '0011'.
Біт PLLCSR PLOCK встановлюється, коли PLL заблоковано. І внутрішній RC-генератор, і ФАПЧ вимикаються в режимі вимкнення живлення та режимі очікування.
Внутрішня PLL в режимі сумісності ATtiny15
Оскільки ATtiny25 / 45/85 є пристроєм міграції для користувачів ATtiny15, існує режим сумісності ATtiny15 для зворотної сумісності. Режим сумісності ATtiny15 вибирається програмуванням запобіжників CKSEL на '0011'.
У режимі сумісності ATtiny15 частота внутрішнього RC-генератора відкалібрована до 6.4 МГц, а коефіцієнт множення ФАПЧ встановлений у 4 рази. Побачити Малюнок 6-3. За допомогою цих налаштувань система тактової частоти сумісна з ATtiny15, і швидкий периферійний тактовий сигнал має частоту 25.6 МГц (така ж, як у ATtiny15).
Малюнок 6-3. Система синхронізації PCK у режимі сумісності з ATtiny15.
Джерела годинника
Пристрій має наступні варіанти джерела тактового сигналу, які можна вибрати бітами 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.
Різні варіанти для кожного варіанту синхронізації наведені в наступних розділах. Коли процесор прокидається після вимкнення, обране джерело тактової частоти використовується для хронометражу запуску, забезпечуючи стабільну роботу осцилятора перед початком виконання команди. Коли центральний процесор починається зі скидання, виникає додаткова затримка, що дозволяє потужності досягти стабільного рівня перед початком нормальної роботи. Watchdog Oscillator використовується для хронометражу цієї частини часу запуску в режимі реального часу. Кількість циклів генератора WDT, що використовуються для кожного тайм-ауту, показано в Таблиця 6-2.
Таблиця 6-2. Кількість циклів сторожового осцилятора
Типовий тайм-аут | Кількість циклів |
4 мс | 512 |
64 мс | 8K (8,192) |
Зовнішній годинник
Для керування пристроєм від зовнішнього джерела годинника, CLKI слід керувати, як показано на Малюнок 6-4. Щоб запустити пристрій на зовнішньому годиннику, запобіжники CKSEL повинні бути запрограмовані на “00”.
Малюнок 6-4. Конфігурація зовнішнього годинника
Коли вибрано це джерело годинника, час запуску визначається запобіжниками SUT, як показано на Таблиця 6-3.
Таблиця 6-3. Час запуску для вибору зовнішнього годинника
НД[1:0] | Час запуску після вимкнення | Додаткова затримка від скидання | Рекомендоване використання |
00 | 6 крон | 14CK | БПК увімкнено |
01 | 6 крон | 14CK + 4 мс | Швидко зростаюча потужність |
10 | 6 крон | 14CK + 64 мс | Повільно піднімається потужність |
11 | Зарезервовано |
Застосовуючи зовнішній тактовий сигнал, потрібно уникати різких змін застосованої тактової частоти, щоб забезпечити стабільну роботу мікроконтролера. Коливання частоти понад 2% від одного тактового циклу до іншого може призвести до непередбачуваної поведінки. Потрібно забезпечити збереження MCU в режимі скидання під час таких змін тактової частоти.
Зверніть увагу, що попередній перепродаж системного годинника може бути використаний для здійснення змін часу роботи внутрішньої тактової частоти, забезпечуючи при цьому стабільну роботу. Відноситься до “Прескалер системного годинника” на сторінці 31 для деталей.
Високочастотний годинник PLL
Існує внутрішня ФАПЧ, яка забезпечує номінальну тактову частоту 64 МГц, заблоковану для RC-генератора, для використання периферійного таймера / лічильника1 та для джерела системного тактового сигналу. Якщо його вибрати як джерело системного тактового сигналу, програмуючи запобіжники CKSEL на '0001', він ділиться на чотири, як показано на Таблиця 6-4.
Таблиця 6-4. Режими роботи високочастотної тактової частоти PLL
CKSEL[3:0] | Номінальна частота |
0001 | 16 МГц |
Коли вибрано це джерело годинника, час запуску визначається запобіжниками SUT, як показано на Таблиця 6-5.
Таблиця 6-5. Час запуску високочастотного генератора ФАПЧ
НД[1:0] | Час запуску від Power Down | Додаткова затримка після скидання живлення (VCC = 5.0 В) | Рекомендоване застосування |
00 | 14CK + 1K (1024) CK + 4 мс | 4 мс | БПК увімкнено |
Таблиця 6-5. Час запуску високочастотного генератора ФАПЧ
НД[1:0] | Час запуску від Power Down | Додаткова затримка після скидання живлення (VCC = 5.0 В) | Рекомендоване застосування |
01 | 14CK + 16K (16384) CK + 4 мс | 4 мс | Швидко зростаюча потужність |
10 | 14CK + 1K (1024) CK + 64 мс | 4 мс | Повільно піднімається потужність |
11 | 14CK + 16K (16384) CK + 64 мс | 4 мс | Повільно піднімається потужність |
Калібрований внутрішній генератор
За замовчуванням внутрішній RC-генератор забезпечує тактову частоту приблизно 8.0 МГц. Хоча обtage та залежно від температури, цей годинник може бути дуже точно відкалібрований користувачем. Побачити “Калібрований внутрішній акумулятор рації »на сторінці 164 і “Внутрішня швидкість генератора” на сторінці 192 для більш детальної інформації. Пристрій постачається із запрограмованим запобіжником CKDIV8. Побачити “Прескалер системного годинника” на сторінці 31 для більш детальної інформації.
Цей годинник може бути обраний системним годинником шляхом програмування запобіжників CKSEL, як показано на Таблиця 6-6 на сторінці
27. Якщо його вибрати, він працюватиме без зовнішніх компонентів. Під час скидання апаратне забезпечення завантажує заздалегідь запрограмоване значення калібрування до Реєстру OSCCAL і тим самим автоматично калібрує генератор RC. Точність цього калібрування відображається як заводське калібрування в Таблиця 21-2 на сторінці 164.
Змінивши регістр OSCCAL з SW, див “OSCCAL - Регістр калібрування осциляторів” на сторінці 31, можна отримати більш високу точність калібрування, ніж за допомогою заводського калібрування. Точність цього калібрування відображається як калібрування користувача в Таблиця 21-2 на сторінці 164.
Коли цей осцилятор використовується як чіп-годинник, осцилятор сторожового собаки все ще буде використовуватися для сторожового таймера та для тайм-ауту скидання. Для отримання додаткової інформації про попередньо запрограмоване значення калібрування див. Розділ “Калі- bration Bytes ”на сторінці 150.
Внутрішній генератор також можна налаштувати на тактову частоту 6.4 МГц, записавши запобіжники CKSEL на “0011”, як показано на Таблиця 6-6 нижче. Це налаштування називається режимом сумісності ATtiny15 і призначене для калібрування джерела тактової частоти 6.4 МГц, як у ATtiny15. У режимі сумісності ATtiny15 ФАПЧ використовує внутрішній генератор, що працює на частоті 6.4 МГц, для формування периферійного тактового сигналу 25.6 МГц для таймера / лічильника1 (див. “8-бітний таймер / лічильник1 дюйм Режим ATtiny15 ”на сторінці 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-генератора
НД[1:0] | Час запуску після вимкнення | Додаткова затримка від скидання (VCC = 5.0 В) | Рекомендоване використання |
00 | 6 крон | 14CK(1) | БПК увімкнено |
01 | 6 крон | 14CK + 4 мс | Швидко зростаюча потужність |
10(2) | 6 крон | 14CK + 64 мс | Повільно піднімається потужність |
11 | Зарезервовано |
1. Якщо запрограмований запобіжник RSTDISBL, цей час запуску буде збільшено до 14CK + 4 мс для забезпечення режиму програмування.
2. Пристрій постачається з вибраною цією опцією.
У режимі сумісності ATtiny15 час запуску визначається запобіжниками SUT, як показано на Таблиця 6-8 нижче.
Таблиця 6-8. Час запуску внутрішнього каліброваного RC-генератора (у режимі ATtiny15)
НД[1:0] | Час запуску після вимкнення | Додаткова затримка від скидання (VCC = 5.0 В) | Рекомендоване використання |
00 | 6 крон | 14CK + 64 мс | |
01 | 6 крон | 14CK + 64 мс | |
10 | 6 крон | 14CK + 4 мс | |
11 | 1 крон | 14CK(1) |
Примітка. Якщо запобіжник RSTDISBL запрограмовано, цей час запуску буде збільшено до 14CK + 4 мс, щоб забезпечити можливість входу в режим програмування.
Таким чином, додаткову інформацію про режим сумісності ATtiny15 можна знайти в розділах “Порт B (PB5: PB0)” увімкнено сторінка 2, “Внутрішня PLL в режимі сумісності ATtiny15” на сторінці 24, “8-бітний таймер / лічильник1 у режимі ATtiny15” увімкнено сторінка 95, “Обмеження debugWIRE” на сторінці 140, “Байти калібрування” на сторінці 150 і в табл “Прескалер годинника Виберіть ”на сторінці 33.
Внутрішній генератор 128 кГц
Внутрішній генератор 128 кГц є малопотужним генератором, що забезпечує тактову частоту 128 кГц. Частота номінальна при 3В і 25°C. Цей годинник можна вибрати як системний, запрограмувавши запобіжники CKSEL на «0100».
Коли вибрано це джерело годинника, час запуску визначається запобіжниками SUT, як показано на Таблиця 6-9.
Таблиця 6-9. Час запуску для внутрішнього генератора 128 кГц
НД[1:0] | Час запуску після вимкнення | Додаткова затримка від скидання | Рекомендоване використання |
00 | 6 крон | 14CK(1) | БПК увімкнено |
01 | 6 крон | 14CK + 4 мс | Швидко зростаюча потужність |
10 | 6 крон | 14CK + 64 мс | Повільно піднімається потужність |
11 | Зарезервовано |
Примітка. Якщо запобіжник RSTDISBL запрограмовано, цей час запуску буде збільшено до 14CK + 4 мс, щоб забезпечити можливість входу в режим програмування.
Низькочастотний кристалічний генератор
Щоб використовувати годинниковий кристал 32.768 кГц як джерело тактової частоти для пристрою, слід вибрати низькочастотний кристалічний генератор, встановивши для запобіжників CKSEL значення '0110'. Кристал слід з'єднати так, як показано на малюнку Малюнок 6-5. Щоб знайти відповідну навантажувальну ємність кристала 32.768 кГц, зверніться до технічного опису виробника.
Коли вибрано цей генератор, час запуску визначається запобіжниками SUT, як показано на Таблиця 6-10.
Таблиця 6-10. Час запуску для вибору годинника низькочастотного кварцевого генератора
НД[1:0] | Час запуску від Power Down | Додаткова затримка від скидання (VCC = 5.0 В) | Рекомендоване застосування |
00 | 1К (1024) CK(1) | 4 мс | Швидко зростаюча потужність або БПК |
01 | 1К (1024) CK(1) | 64 мс | Повільно піднімається потужність |
10 | 32К (32768) CK | 64 мс | Стабільна частота при запуску |
11 | Зарезервовано |
Примітка. Ці параметри слід використовувати, лише якщо стабільність частоти під час запуску неважлива.
Кристалічний генератор низької частоти забезпечує внутрішню ємність навантаження, див Таблиця 6-11 на кожному штифті TOSC.
Таблиця 6-11. Ємність низькочастотного кварцевого генератора
пристрій | 32 кГц Osc. Тип | Ковпачок (Xtal1 / Tosc1) | Ковпачок (Xtal2 / Tosc2) |
ATtiny25 / 45/85 | Система 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 разом із запобіжниками SUT [1: 0] вибирають час запуску, як показано на Таблиця 6-13.
Таблиця 6-13. Час запуску для вибору годинника кварцевого генератора
CKSEL0 | НД[1:0] | Час запуску після вимкнення | Додаткова затримка від скидання | Рекомендоване використання |
0 | 00 | 258 крон(1) | 14CK + 4 мс | Керамічний резонатор, швидко зростаюча потужність |
0 | 01 | 258 крон(1) | 14CK + 64 мс | Керамічний резонатор, повільно піднімається потужність |
0 | 10 | 1К (1024) CK(2) | 14CK | Керамічний резонатор з БПК |
0 | 11 | 1K (1024) CK(2) | 14CK + 4 мс | Керамічний резонатор, швидко зростаюча потужність |
1 | 00 | 1K (1024) CK(2) | 14CK + 64 мс | Керамічний резонатор, повільно піднімається потужність |
1 | 01 | 16К (16384) CK | 14CK | Кристалічний осцилятор, БПК |
1 | 10 | 16К (16384) CK | 14CK + 4 мс | Кристалічний генератор, швидко зростаюча потужність |
1 | 11 | 16К (16384) CK | 14CK + 64 мс | Кристалічний генератор, повільно піднімається потужність |
Примітки
Ці параметри слід використовувати лише тоді, коли вони не працюють близько до максимальної частоти пристрою, і лише якщо стабільність частоти при запуску не є важливою для програми. Ці варіанти не підходять для кристалів.
Ці опції призначені для використання з керамічними резонаторами та забезпечать стабільність частоти при запуску. Вони також можуть використовуватися з кристалами, коли вони не працюють близько до максимальної частоти пристрою, і якщо стабільність частоти при запуску не є важливою для застосування.
Джерело годинника за замовчуванням
Пристрій постачається із запрограмованим CKSEL = «0010», SUT = «10» і CKDIV8. Таким чином, налаштування джерела тактового сигналу за замовчуванням - це внутрішній RC-генератор, що працює на частоті 8 МГц з найдовшим часом запуску і початковим попереднім масштабуванням системного годинника 8, що призводить до системного тактового сигналу 1.0 МГц. Це налаштування за замовчуванням гарантує, що всі користувачі можуть встановити потрібне налаштування джерела годинника за допомогою внутрішньосистемного або високого рівня гучностіtage Програміст.
Система попереднього масштабування годинника
Системний годинник ATtiny25 / 45/85 можна розділити, встановивши “CLKPR - Реєстр попереднього масштабування годинника” на сторінці 32. Цю функцію можна використовувати для зменшення енергоспоживання, коли потреба в потужності процесора низька. Це можна використовувати з усіма параметрами джерела синхронізації, і це вплине на тактову частоту ЦП і всіх синхронних периферійних пристроїв. clkI/O, clkADC, clkCPU і clkFLASH діляться на коефіцієнт, як показано на Таблиця 6-15 на сторінці 33.
Час перемикання
Під час перемикання між налаштуваннями попереднього розподільного пристрою попередній розподільник системного годинника гарантує, що в системі годинника не виникають збої та що проміжна частота не перевищує ні тактову частоту, що відповідає попередньому налаштуванню, ні тактову частоту, що відповідають новому налаштуванню.
Лічильник пульсацій, який реалізує прескалер, працює на частоті нерозділеного тактового сигналу, що може бути швидше, ніж тактова частота процесора. Отже, неможливо визначити стан прескалера - навіть якщо він був читабельним, а точний час, необхідний для переключення з одного розподілу годинника на інший, не може бути точно передбачений.
З моменту запису значень CLKPS проходить між T1 + T2 і T1 + 2 * T2, перш ніж нова частота частоти стане активною. За цей інтервал створюються 2 активні фронти годинника. Тут T1 - попередній тактовий період, а T2 - період, що відповідає новому налаштуванню попереднього масштабування.
Тактовий вихідний буфер
Пристрій може виводити системний годинник на штифт CLKO (коли він не використовується як штифт XTAL2). Щоб увімкнути вихід, запобіжник CKOUT повинен бути запрограмований. Цей режим підходить, коли чіп-годинник використовується для керування іншими схемами системи. Зверніть увагу, що під час скидання годинник не виводитиметься і що нормальна робота штифта вводу-виводу буде замінена, коли запобіжник запрограмований. Внутрішній RC-генератор, генератор WDT, PLL та зовнішній годинник (CLKI) можна вибрати, коли годинник виводиться на CLKO. Кристалічні генератори (XTAL1, XTAL2) не можуть використовуватися для виведення годинника на CLKO. Якщо використовується попередній редактор системного годинника, виводиться розділений системний годинник.
Опис реєстру
OSCCAL - Регістр калібрування генератора
біт | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x31 | CAL7 | CAL6 | CAL5 | CAL4 | CAL3 | CAL2 | CAL1 | CAL0 | ОСКАЛЬНИЙ |
Читання/запис | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Біти 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 - найвищу частоту в діапазоні.
Для забезпечення стабільної роботи мікроконтролера значення калібрування слід змінювати незначно. Коливання частоти більше ніж на 2% від одного циклу до наступного може призвести до непередбачуваної поведінки. Зміни в OSCCAL не повинні перевищувати 0x20 для кожного калібрування. Потрібно забезпечити збереження MCU в режимі скидання під час таких змін тактової частоти
Таблиця 6-14. Діапазон частот внутрішнього RC-генератора
OSCCAL значення | Типова найнижча частота з урахуванням номінальної частоти | Типова найвища частота з урахуванням номінальної частоти |
0x00 | 50% | 100% |
0x3F | 75% | 150% |
0x7F | 100% | 200% |
CLKPR - Реєстр попередньо масштабних годин
біт | 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 Див. Опис біта
Біт 7 - CLKPCE: Увімкнути зміну попереднього масштабування годинника
Біт CLKPCE повинен бути записаний в логічний, щоб дозволити зміну бітів CLKPS. Біт CLKPCE оновлюється лише тоді, коли інші біти в CLKPR одночасно записуються в нуль. CLKPCE очищається апаратно через чотири цикли після його запису або коли записуються біти CLKPS. Переписування біта CLKPCE протягом цього періоду тайм-ауту не подовжує період тайм-ауту, а також не очищає біт CLKPCE.
Біти 6: 4 - Res: Зарезервовані біти
Ці біти є зарезервованими бітами в ATtiny25 / 45/85 і завжди будуть читатися як нуль.
Біти 3: 0 - CLKPS [3: 0]: Біти вибору прескалера годинника 3 - 0
Ці біти визначають коефіцієнт поділу між обраним джерелом тактової частоти та внутрішнім системним тактовим сигналом. Ці біти можна записати під час виконання, щоб змінювати тактову частоту відповідно до вимог програми. Оскільки дільник ділить вхід головного тактового сигналу на мікроконтролер, швидкість усіх синхронних периферійних пристроїв зменшується, коли використовується коефіцієнт поділу. Коефіцієнти поділу наведені в Таблиця 6-15.
Щоб уникнути ненавмисних змін тактової частоти, слід дотримуватися спеціальної процедури запису, щоб змінити біти CLKPS:
Запишіть біт Clock Prescaler Change Enable (CLKPCE) до одного, а всі інші біти в CLKPR - до нуля.
Протягом чотирьох циклів запишіть бажане значення в CLKPS, одночасно записуючи нуль у CLKPCE.
Переривання повинні бути вимкнені під час зміни налаштування попереднього лічильника, щоб переконатися, що процедура запису не переривається.
CKDIV8 Fuse визначає початкове значення бітів CLKPS. Якщо CKDIV8 не запрограмовано, біти CLKPS буде скинуто до «0000». Якщо запрограмовано CKDIV8, біти CLKPS скидаються до «0011», що дає коефіцієнт ділення вісім під час запуску. Цю функцію слід використовувати, якщо вибране джерело тактового сигналу має вищу частоту, ніж максимальна частота пристрою за поточних робочих умов. Зверніть увагу, що в біти CLKPS можна записати будь-яке значення незалежно від налаштування CKDIV8 Fuse. Прикладне програмне забезпечення має забезпечувати достатній коефіцієнт поділу
вибирається, якщо вибране джерело тактової частоти має вищу частоту, ніж максимальна частота пристрою за сучасних умов роботи. Пристрій постачається із запрограмованим запобіжником CKDIV8.
Таблиця 6-15. Clock Prescaler Select
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 Change | SPM / EEPROM
Готовий |
Стан запуску USI |
АЦП | Інші введення/виведення | Сторожовий пес Переривати |
Бездіяльність | X | X | X | X | X | X | X | X | X | X | ||
Зниження шуму АЦП | X | X | X(1) | X | X | X | X | |||||
Вимкнення живлення | X(1) | X | X |
Примітка: для INT0, лише переривання рівня.
Щоб увійти в будь-який з трьох режимів сну, біт SE в MCUCR потрібно записати в логічний і виконати інструкцію SLEEP. Біти SM [1: 0] в Реєстрі MCUCR вибирають, який режим сну (Idle, ADC Noise Reduction або Power-down) буде активовано інструкцією SLEEP. Побачити Таблиця 7-2 для резюме.
Якщо ввімкнене переривання відбувається, коли MCU перебуває в режимі сну, MCU прокидається. Потім MCU зупиняється на чотири цикли на додаток до часу запуску, виконує процедуру переривання та відновлює виконання з інструкції після SLEEP. Зміст Реєстру File і SRAM не змінюються, коли пристрій виходить із режиму сну. Якщо скидання відбувається під час сплячого режиму, MCU прокидається і виконується з вектора скидання.
Примітка: якщо переривання, ініційоване рівнем, використовується для пробудження, змінений рівень потрібно утримувати протягом деякого часу, щоб розбудити MCU (і щоб MCU увійшов до процедури обслуговування переривання). Побачити “Зовнішні переривання” на сторінці 49 для деталей.
Режим очікування
Коли біти SM[1:0] записуються в 00, інструкція SLEEP змушує MCU перейти в режим очікування, зупиняючи ЦП, але дозволяючи аналоговому компаратору, АЦП, USI, таймеру/лічильнику, сторожовому таймеру та системі переривань продовжувати роботу. їдять. Цей режим сну фактично зупиняє clkCPU та clkFLASH, дозволяючи іншим годинникам працювати.
Режим очікування дозволяє MCU прокинутися від зовнішніх спрацьованих переривань, а також внутрішніх, таких як переповнення таймера. Якщо пробудження від переривання аналогового компаратора не потрібно, аналоговий компаратор можна вимкнути, встановивши біт ACD в “ACSR - Аналоговий компаратор контролю та реєстру стану” на сторінці 120. Це зменшить споживання енергії в режимі очікування. Якщо АЦП увімкнено, перехід починається автоматично при вході в цей режим.
Режим зменшення шуму АЦП
Коли біти SM[1:0] записуються в 01, інструкція SLEEP змушує MCU перейти в режим шумозаглушення АЦП, зупиняючи ЦП, але дозволяючи АЦП, зовнішнім перериванням і сторожовому таймеру продовжувати роботу (якщо ввімкнено). Цей сплячий режим зупиняє clkI/O, clkCPU та clkFLASH, дозволяючи іншим синхронізаторам працювати.
Це покращує шумове середовище для АЦП, дозволяючи вимірювати більш високу роздільну здатність. Якщо АЦП увімкнено, перехід починається автоматично при вході в цей режим. Окрім повного переривання перетворення АЦП, лише зовнішнє скидання, скидання сторожового пса, скидання виходу з режиму, готове переривання SPM / EEPROM, переривання зовнішнього рівня на INT0 або переривання зміни виводу можуть пробудити MCU від зменшення шуму ADC режимі.
Режим відключення живлення
Коли біти SM [1: 0] записуються в 10, інструкція SLEEP змушує MCU переходити в режим відключення. У цьому режимі Осцилятор зупиняється, тоді як зовнішні переривання, виявлення стану запуску USI та Сторожова сторона продовжують працювати (якщо ввімкнено). Тільки зовнішнє скидання, скидання сторожового пса, скидання налаштувань, переривання стану запуску USI, переривання зовнішнього рівня на INT0 або переривання заміни виводу можуть пробудити MCU. Цей режим сну зупиняє всі генеровані годинники, дозволяючи працювати лише асинхронним модулям.
Вимкнення програмного забезпечення
Коли активатор викидів (BOD) увімкнений запобіжниками BODLEVEL (див Таблиця 20-4 на сторінці 148), БПК активно контролює постачання обtagе під час сну. У деяких пристроях можна заощадити електроенергію, відключивши BOD за допомогою програмного забезпечення в сплячому режимі Power Down. Споживання електроенергії в сплячому режимі буде на тому ж рівні, що й при глобальному відключенні BOD через запобіжники.
Якщо BOD вимкнено програмним забезпеченням, функція BOD вимикається відразу після переходу в сплячий режим. Після пробудження зі сну BOD знову автоматично вмикається. Це забезпечує безпечну роботу, якщо рівень VCC впав під час періоду сну.
Коли БПК буде вимкнено, час пробудження з режиму сну буде таким самим, як і час пробудження від СКИДАННЯ. Користувач повинен вручну налаштувати час пробудження таким чином, щоб посилання на пропускну здатність встигло запуститися, а BOD працював правильно, перш ніж MCU продовжить виконувати код. Див. Розрядники запобіжників SUT [1: 0] та CKSEL [3: 0] у таблиці “Запобіжник низький байт” на сторінці 149
Вимкнення BOD контролюється бітом BODS (BOD Sleep) регістра керування MCU, див “MCUCR - управління MCU Реєстрація ”на сторінці 37. Запис цього біта в один вимикає БПК при вимкненні, тоді як запис нуля підтримує БПК активним. Параметр за замовчуванням дорівнює нулю, тобто BOD активний.
Запис у біт BODS регулюється тимчасовою послідовністю та бітом увімкнення, див “MCUCR - Реєстр керування MCU- ter ”на сторінці 37.
Обмеження
Функція вимкнення БПК була реалізована лише на наступних пристроях:
ATtiny25, версія E та новіша
ATtiny45, версія D та новіша
ATtiny85, версія C та новіша
Версії позначені на упаковці пристрою і можуть бути розташовані наступним чином:
Нижня сторона пакетів 8P3 та 8S2
Верхня сторона упаковки 20M1
Регістр зниження потужності
Реєстр зменшення потужності (PRR), див “PRR - Реєстр зменшення потужності” на сторінці 38, забезпечує спосіб зменшення енергоспоживання шляхом зупинки годинника до окремих периферійних пристроїв. Поточний стан периферійного пристрою заморожений, і регістри вводу-виводу не можуть бути прочитані або записані. Ресурси, що використовуються периферією під час зупинки годинника, залишатимуться зайнятими, тому периферія в більшості випадків повинна бути відключена перед зупинкою годинника. Пробудження модуля, яке виконується очищенням біта в PRR, переводить модуль у той самий стан, що і до вимкнення.
Вимкнення модуля можна використовувати в режимі очікування та активному режимі, щоб значно зменшити загальне споживання енергії. У всіх інших режимах сну годинник уже зупинено. Побачити “Струм живлення модулів вводу-виводу” на сторінці 177 наприкладampлес.
Мінімізація енергоспоживання
Існує кілька питань, які слід врахувати, намагаючись мінімізувати споживання енергії в системі, що контролюється AVR. Загалом, режими сну слід використовувати якомога більше, а режим сну слід вибирати таким чином, щоб якомога менше функцій пристрою працювало. Усі непотрібні функції слід відключити. Зокрема, наступні модулі можуть потребувати особливого розгляду при спробі досягти найнижчого енергоспоживання.
Аналого-цифровий перетворювач
Якщо ввімкнено, АЦП буде ввімкнено у всіх режимах сну. Для економії енергії АЦП слід вимкнути перед входом у будь-який режим сну. Коли АЦП вимкнено і знову ввімкнено, наступним перетворенням буде розширене перетворення. Відноситься до “Аналого-цифровий перетворювач” на сторінці 122 для отримання детальної інформації про роботу АЦП.
Аналоговий компаратор
При вході в режим очікування аналоговий компаратор слід вимкнути, якщо він не використовується. При вході в режим зменшення шуму АЦП аналоговий компаратор слід вимкнути. В інших режимах сну аналоговий компаратор автоматично вимикається. Однак, якщо аналоговий компаратор налаштований на використання внутрішнього об’ємуtage Посилання як вхід, аналоговий компаратор слід вимкнути у всіх режимах сну. В іншому випадку внутрішній Voltage Посилання буде ввімкнено, незалежно від режиму сну. Звертатися до “Аналоговий компаратор” на сторінці 119 докладно про те, як налаштувати аналоговий компаратор.
Браун-детектор
Якщо в додатку не потрібен детектор відключення, цей модуль слід вимкнути. Якщо запобіжник BODLEVEL увімкнув детектор вимкнення, він буде ввімкнений у всіх режимах сну, а отже, завжди споживає електроенергію. У режимах глибокого сну це суттєво сприятиме загальному споживанню струму. Побачити “Вивільнення коричневого кольору ції ”на сторінці 41 і “Вимкнення програмного забезпечення BOD” на сторінці 35 для отримання детальної інформації про те, як налаштувати детектор відключення.
Внутрішній Voltage Посилання
The Internal Voltage Посилання буде ввімкнено, коли буде потрібно детектором вигорання, аналоговим компаратором або АЦП. Якщо ці модулі вимкнено, як описано в розділах вище, внутрішній voltage посилання буде вимкнено, і воно не споживатиме електроенергію. Після повторного ввімкнення користувач повинен дозволити запуску посилання перед використанням виводу. Якщо посилання залишається в режимі сну, вихід можна використовувати негайно. Звертатися до «Внутрішній томtage Довідка» на сторінці 42 для отримання детальної інформації про час запуску.
Сторожовий таймер
Якщо Таймер сторожового таймера в програмі не потрібен, цей модуль слід вимкнути. Якщо таймер сторожового таймера ввімкнено, він буде ввімкнений у всіх режимах сну, а отже, завжди споживає електроенергію. У режимах глибокого сну це суттєво сприятиме загальному споживанню струму. Відноситься до “Сторожовий таймер” на сторінці 42 докладно про те, як налаштувати Watchdog Timer.
Портові шпильки
Під час входу в сплячий режим усі контакти порту мають бути налаштовані на використання мінімальної потужності. Найважливіше тоді переконатися, що ніякі штирі не приводять до резистивних навантажень. У режимах сну, коли синхронізація вводу/виводу (clkI/O) і тактова частота АЦП (clkADC) зупиняються, вхідні буфери пристрою будуть вимкнені. Це гарантує, що електроенергія не споживається
за логікою введення, коли це не потрібно. У деяких випадках вхідна логіка потрібна для виявлення умов пробудження, і
це буде ввімкнено. Зверніться до розділу “Увімкнення цифрового входу та режими сну” на сторінці 57 щоб дізнатися, які піни ввімкнено. Якщо вхідний буфер увімкнено, а вхідний сигнал залишається плаваючим або має рівень аналогового сигналу, близький до VCC/2, вхідний буфер споживатиме надмірну потужність.
Для аналогових вхідних контактів цифровий вхідний буфер повинен бути вимкнений завжди. Рівень аналогового сигналу, близький до VCC/2 на вхідному виводі, може викликати значний струм навіть в активному режимі. Буфери цифрового входу можна вимкнути шляхом запису в регістр блокування цифрового входу (DIDR0). Звертатися до “DIDR0 - Регістр відключення цифрового входу 0” на сторінці 121 для деталей.
Опис реєстру
MCUCR - Реєстр керування MCU
Реєстр керування MCU містить контрольні біти для управління живленням.
біт | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | БОДС | ПУД | SE | SM1 | SM0 | БОДСЕ | 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 - ТІЛА: Сон БПК
Функція вимкнення БПК доступна лише на деяких пристроях. Побачити “Обмеження” на сторінці 36.
Для того, щоб вимкнути БПК під час сну (див Таблиця 7-1 на сторінці 34) біт BODS повинен бути записаний в логічний. Це контролюється тимчасовою послідовністю та бітом увімкнення, BODSE в MCUCR. По-перше, як BODS, так і BODSE повинні бути встановлені в один. По-друге, протягом чотирьох тактових циклів BODS повинен бути встановлений на один, а BODSE - на нуль. Біт BODS активний через три тактові цикли після його встановлення. Інструкція сну повинна виконуватися, поки активний BODS, щоб вимкнути BOD для фактичного режиму сну. Біт BODS автоматично очищається після трьох тактових циклів.
У пристроях, де сплячий БПК не реалізований, цей біт не використовується і завжди буде читати нуль.
Біт 5 - SE: Увімкнення сну
Біт SE повинен бути записаний до логічної одиниці, щоб MCU перейшов у режим сну, коли виконується інструкція SLEEP. Щоб уникнути переходу MCU в сплячий режим, якщо це не є метою програміста, рекомендується записувати біт Sleep Enable (SE) в один безпосередньо перед виконанням інструкції SLEEP і скидати його відразу після пробудження.
Біти 4: 3 - SM [1: 0]: Вибір режимів сну 1 і 0
Ці біти вибирають між трьома доступними режимами сну, як показано на Таблиця 7-2.
Таблиця 7-2. Вибір режиму сну
SM1 | SM0 | Режим сну |
0 | 0 | Бездіяльність |
0 | 1 | Зниження шуму АЦП |
1 | 0 | Вимкнення живлення |
1 | 1 | Зарезервовано |
Біт 2 - BODSE: BOD Sleep Enable
Функція вимкнення БПК доступна лише на деяких пристроях. Побачити “Обмеження” на сторінці 36.
Біт BODSE дозволяє встановити біт управління BODS, як пояснено в описі біта BODS. Вимкнення БПК контролюється за часовою послідовністю.
Цей біт не використовується на пристроях, де програмне вимкнення БПК не реалізовано, і буде читатися як нуль на цих пристроях.
PRR - Регістр зменшення потужності
Регістр зменшення потужності забезпечує метод зменшення споживання енергії, дозволяючи відключити сигнали периферійного годинника.
біт | 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 |
Біти 7: 4 - Res: Зарезервовані біти
Ці біти є зарезервованими бітами в ATtiny25 / 45/85 і завжди будуть читатися як нуль.
Біт 3 - PRTIM1: Таймер зменшення потужності / лічильник1
Запис логічного в цей біт вимикає модуль Таймер / Лічильник1. Коли таймер / лічильник1 увімкнено, робота продовжуватиметься, як і до вимкнення.
Біт 2 - PRTIM0: Таймер зменшення потужності / лічильник0
Запис логічного в цей біт вимикає модуль Таймер / Лічильник0. Коли таймер / лічильник0 увімкнено, робота продовжуватиметься, як і до вимкнення.
Біт 1 - PRUSI: зменшення потужності USI
Запис логічного в цей біт вимикає USI, зупиняючи годинник на модулі. При повторному пробудженні USI його слід повторно ініціалізувати для забезпечення належної роботи.
Біт 0 - PRADC: АЦП із зменшенням потужності
Запис логічного в цей біт вимикає АЦП. Перед вимкненням АЦП потрібно вимкнути. Зауважте, що годинник АЦП також використовується деякими частинами аналогового компаратора, а це означає, що аналоговий компаратор не можна використовувати, коли цей біт високий.
Керування та скидання системи
Скидання AVR
Під час скидання всі регістри вводу-виводу встановлюються на початкові значення, і програма починає виконання з вектора скидання. Інструкція, розміщена у Векторі скидання, повинна бути RJMP - відносний стрибок - інструкція до процедури обробки скидання. Якщо програма ніколи не вмикає джерело переривання, вектори переривань не використовуються, і в цих місцях можна розмістити звичайний програмний код. Схема в Малюнок 8-1 показує логіку скидання. Електричні параметри схеми скидання наведені в “Характеристики системи та скидання” на сторінці 165.
Рисунок 8-1 Логіка скидання
Порти вводу / виводу AVR негайно скидаються у початковий стан, коли джерело скидання стає активним. Для цього не потрібне жодне джерело годинника.
Після того, як усі джерела скидання стануть неактивними, запускається лічильник затримки, що розтягує внутрішнє скидання. Це дозволяє потужності досягти стабільного рівня до початку нормальної роботи. Час очікування лічильника затримки визначається користувачем через запобіжники SUT та CKSEL. Різні варіанти вибору періоду затримки представлені в “Годинник Джерела ”на сторінці 25.
Скинути джерела
ATtiny25 / 45/85 має чотири джерела скидання:
Скидання увімкнення живлення. MCU скидається, коли подача обtage нижче порогового значення скидання після ввімкнення живлення (VPOT).
Зовнішній скидання. MCU скидається, коли низький рівень присутній на штифті RESET довше мінімальної тривалості імпульсу.
Скидання сторожового пса. MCU скидається, коли закінчується період таймера сторожового таймера, і сторожовий собака вмикається.
Скидання загоряння. MCU скидається, коли подача обtage VCC нижчий за порогове значення скидання коричневого кольору (VBOT), а детектор руйнування увімкнено.
Скидання живлення
Імпульс перезапуску (POR) генерується ланцюгом виявлення на мікросхемі. Рівень виявлення визначений у “Сис- теми та скидання характеристик »на сторінці 165. POR активується кожного разу, коли VCC нижче рівня виявлення. Схема POR може бути використана для запуску скидання при запуску, а також для виявлення збою в об’ємі живленняtage.
Схема скидання при увімкненні живлення (POR) гарантує, що пристрій скидається після ввімкнення живлення. Досягнення порогового значення скидання увімкнення живлення обtage викликає лічильник затримки, який визначає, як довго пристрій утримується в режимі RESET після підвищення VCC. Сигнал RESET знову активується без будь-якої затримки, коли VCC падає нижче рівня виявлення.
Малюнок 8-2. MCU Запуск, RESET Прив’язаний до VCC
ВНУТРІШНЄ СКИДАННЯ
Малюнок 8-3. Запуск MCU, RESET Extended External
Зовнішній скидання
Зовнішнє скидання генерується низьким рівнем на штифті RESET, якщо це дозволено. Скиньте імпульси довше мінімальної ширини імпульсу (див “Характеристики системи та скидання” на сторінці 165) генерує скидання, навіть якщо годинник не працює. Більш короткі імпульси не гарантують генерування скидання. Коли поданий сигнал досягає порогового значення скидання гучностіtage – VRST – на позитивному фронті лічильник затримки запускає MCU після закінчення періоду очікування.
Малюнок 8-4. Зовнішнє скидання під час роботи
Виявлення коричневого кольору
ATtiny25/45/85 має вбудовану схему виявлення вимкнення (BOD) для контролю рівня VCC під час роботи шляхом порівняння його з фіксованим рівнем запуску. Рівень запуску для BOD можна вибрати за допомогою запобіжників BODLEVEL. Рівень тригера має гістерезис, щоб забезпечити виявлення затемнення без стрибків. Гістерезис на рівні виявлення слід інтерпретувати як VBOT+ = VBOT + VHYST/2 і VBOT- = VBOT – VHYST/2.
Коли BOD увімкнено, а VCC зменшується до значення, нижчого за рівень запуску (VBOT-in Малюнок 8-5), миттєво активується функція скидання коричневого кольору. Коли VCC підвищується вище рівня запуску (VBOT+ в Малюнок 8-5), лічильник затримки запускає MCU після закінчення періоду очікування tTOUT.
Схема BOD виявить падіння VCC, лише якщо обtage залишається нижче тригерного рівня довше, ніж задано tBOD “Характеристики системи та скидання” на сторінці 165.
Скидання сторожового пса
Коли Watchdog закінчується, він генерує короткий імпульс скидання тривалістю один цикл CK. За спадним фронтом цього імпульсу таймер затримки починає відраховувати період очікування tTOUT. Звертатися до “Сторожовий таймер” на сторінці 42 для отримання детальної інформації про роботу Watchdog Timer.
томtage Довідкові сигнали дозволу та час запуску
ВипtagПосилання має час запуску, який може вплинути на спосіб його використання. Час запуску вказано “Характеристики системи та скидання” на сторінці 165. Для економії енергії посилання не завжди ввімкнено. Посилання вмикається під час таких ситуацій:
Коли BOD увімкнено (програмуванням BODLEVEL [2: 0] Біти запобіжників).
Коли посилання на пропускну здатність підключено до аналогового компаратора (встановивши біт ACBG в ACSR).
Коли АЦП увімкнено.
Таким чином, коли БПК не ввімкнено, після встановлення біта ACBG або ввімкнення АЦП користувач повинен завжди дозволити запуск посилання перед тим, як буде використаний вихід аналогового компаратора або АЦП. Щоб зменшити споживання електроенергії в режимі відключення, користувач може уникнути трьох наведених вище умов, щоб переконатися, що еталон відключений перед входом у режим відключення.
Сторожовий таймер
Таймер сторожового таймера працює від вбудованого генератора, який працює на частоті 128 кГц. Керуючи попередньою програмою таймера сторожового таймера, інтервал скидання сторожового собаки можна регулювати, як показано на Таблиця 8-3 на сторінці 46. WDR - Watchdog Reset - інструкція скидає Watchdog Timer. Таймер сторожового таймера також скидається, коли його вимкнено і коли відбувається скидання чіпа. Для визначення періоду скидання можна вибрати десять різних періодів тактового циклу. Якщо період скидання закінчується без чергового скидання сторожового пса, ATtiny25 / 45/85 скидає і виконує з вектора скидання. Для отримання детальної інформації про час скидання сторожового пса див Таблиця 8-3 на сторінці 46.
Таймер сторожового собаки також можна налаштувати на генерування переривання замість скидання. Це може бути дуже корисно при використанні сторожового пса для пробудження після відключення живлення.
Щоб запобігти ненавмисному відключенню сторожового пса або ненавмисній зміні періоду очікування, запобіжник WDTON обирає два різні рівні безпеки, як показано на Таблиця 8-1 Зверніться до «Послідовності за часом для зміни кон- формування таймера сторожового пса ”на сторінці 43 для деталей.
Таблиця 8-1. Конфігурація WDT як функція налаштувань запобіжників WDTON
WDTON | Рівень безпеки | WDT Початковий стан | Як вимкнути WDT | Як змінити тайм-аут |
Незапрограмований | 1 | Вимкнено | Часова послідовність | Без обмежень |
Запрограмований | 2 | Увімкнено | Завжди ввімкнено | Часова послідовність |
Малюнок 8-7. Сторожовий таймер
Часові послідовності для зміни конфігурації сторожового таймера
Послідовність зміни конфігурації дещо відрізняється між двома рівнями безпеки. Для кожного рівня описані окремі процедури.
Рівень безпеки 1: у цьому режимі сторожовий таймер спочатку вимкнено, але його можна ввімкнути, записавши біт WDE в одиницю без будь-яких обмежень. Під час вимкнення ввімкненого сторожового таймера необхідна певна послідовність. Щоб вимкнути ввімкнений сторожовий таймер, необхідно виконати наступну процедуру:
У тій самій операції напишіть логічну для WDCE та WDE. У WDE має бути записано логічне, незалежно від попереднього значення біта WDE.
Протягом наступних чотирьох тактових циклів, в тій самій операції, запишіть біти WDE та WDP за бажанням, але з очищеним бітом WDCE.
Рівень безпеки 2: у цьому режимі сторожовий таймер завжди ввімкнено, а біт WDE завжди читатиметься як один. Під час зміни періоду тайм-ауту Watchdog необхідна певна послідовність. Щоб змінити тайм-аут Watchdog, необхідно виконати таку процедуру:
У тій самій операції запишіть логічну у WDCE та WDE. Незважаючи на те, що WDE завжди встановлений, WDE повинен бути записаний в один, щоб розпочати послідовність з часом.
Протягом наступних чотирьох тактових циклів, під час тієї ж операції, запишіть біти WDP за бажанням, але з очищеним бітом WDCE. Значення, записане в біт WDE, не має значення.
Код напрample
Наступний код, наприкладample показує одну збірку та одну функцію C для вимкнення WDT. Колишнійample передбачає, що переривання контролюються (наприклад, глобальне відключення переривань), тому під час виконання цих функцій жодних переривань не буде.
Код збірки Example(1) |
WDT_Вимк:
wdr ; Очистити WDRF в MCUSR ldi r16, (0< вихід MCUSR, r16 ; Запишіть логічний для WDCE та WDE ; Зберігайте старі налаштування попереднього розподілу, щоб запобігти ненавмисному скиданню сторожового контролю в r16, WDTCR ori r16, (1< вихід WDTCR, r16 ; Вимкніть WDT ldi r16, (0< вихід WDTCR, r16 відстав |
C Код Прample(1) |
void WDT_off(void)
{ _WDR (); /* Очистити WDRF у MCUSR */ MCUSR = 0x00 /* Запис логічної одиниці в WDCE і WDE */ WDTCR |= (1< / * Вимкнути WDT * / WDTCR = 0x00; } |
Примітка: 1. Див «Код Examples» на сторінці 6.
Опис реєстру
MCUSR - Реєстр статусу MCU
Реєстр стану MCU надає інформацію про те, яке джерело скидання спричинило скидання MCU.
біт | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x34 | – | – | – | – | WDRF | БОРФ | ДОПУСК | ПОРФ | MCUSR |
Читання/запис | R | R | R | R | R/W | R/W | R/W | R/W |
Початкове значення 0 0 0 0 Див. Опис біта
Біти 7: 4 - Res: Зарезервовані біти
Ці біти є зарезервованими бітами в ATtiny25 / 45/85 і завжди будуть читатися як нуль.
Біт 3 - WDRF: Прапор скидання сторожового пса
Цей біт встановлюється, якщо відбувається скидання сторожового пса. Біт скидається за допомогою Power-on Reset або шляхом запису логічного нуля до прапора.
Біт 2 - BORF: Прапор скидання коричневого кольору
Цей біт встановлюється, якщо відбувається скидання "Brown-out". Біт скидається за допомогою Power-on Reset або шляхом запису логічного нуля до прапора.
Біт 1 - EXTRF: Прапор зовнішнього скидання
Цей біт встановлюється, якщо відбувається зовнішнє скидання. Біт скидається за допомогою Power-on Reset або шляхом запису логічного нуля до прапора.
Біт 0 - PORF: Прапор скидання при включенні
Цей біт встановлюється, якщо відбувається скидання живлення. Біт скидається лише шляхом запису логічного нуля до прапора.
Щоб використовувати прапорці скидання для ідентифікації стану скидання, користувач повинен прочитати, а потім скинути MCUSR якомога раніше в програмі. Якщо реєстр очищений до чергового скидання, джерело скидання можна знайти, дослідивши прапорці скидання.
WDTCR - Реєстр контрольного таймера
біт | 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 |
Біт 7 - WDIF: прапор переривання сторожового тайм-ауту
Цей біт встановлюється, коли в таймері сторожового таймера настає тайм-аут, а таймер сторожового таймера налаштований на переривання. WDIF очищається апаратно при виконанні відповідного вектора обробки переривань. Крім того, WDIF очищається шляхом написання логічного до прапора. Коли встановлено I-bit в SREG та WDIE, виконується переривання тайм-ауту Watchdog.
Біт 6 - WDIE: Увімкнено переривання тайм-ауту сторожа
Коли цей біт записаний в один, WDE очищається і встановлюється I-біт у Реєстрі стану, включається переривання тайм-ауту сторожового таймера. У цьому режимі виконується відповідне переривання замість скидання, якщо виникає тайм-аут у таймері сторожового таймера.
Якщо встановлено WDE, WDIE автоматично видаляється апаратним забезпеченням, коли настає тайм-аут. Це корисно для збереження безпеки Watchdog Reset під час використання переривання. Після очищення біта WDIE наступний тайм-аут призведе до скидання. Щоб уникнути скидання сторожового пса, WDIE потрібно встановлювати після кожного переривання.
Таблиця 8-2. Конфігурація сторожового таймера
WDE | WDIE | Сторожовий таймер штату | Дія на тайм-ауті |
0 | 0 | Зупинився | Жодного |
0 | 1 | Біг | Переривати |
1 | 0 | Біг | Скинути |
1 | 1 | Біг | Переривати |
Біт 4 - WDCE: Увімкнення сторожової зміни
Цей біт повинен бути встановлений, коли біт WDE записаний в логічний нуль. В іншому випадку сторожовий пес не буде вимкнено. Після запису в один апаратне забезпечення очистить цей біт через чотири тактові цикли. Зверніться до опису біта WDE для процедури вимкнення сторожового пса. Цей біт також повинен бути встановлений при зміні бітів прескалера. Побачити “Приурочені послідовності для зміни конфігурації сторожового таймера »на сторінці 43.
Біт 3 - WDE: Увімкнення сторожового пса
Коли WDE записується в логічну одиницю, включається сторожовий таймер, а якщо WDE записується в нульову логіку, функція таймера сторожового вимикається. WDE можна очистити, лише якщо біт WDCE має логічний рівень один. Щоб вимкнути ввімкнений сторожовий таймер, слід дотримуватися наступної процедури:
У тій самій операції напишіть логічну для WDCE та WDE. Логічний повинен бути записаний у WDE, навіть якщо він встановлений в один перед початком операції відключення.
Протягом наступних чотирьох тактових циклів напишіть логіку 0 до WDE. Це відключає сторожового пса.
На рівні безпеки 2 неможливо вимкнути Watchdog Timer, навіть за алгоритму, описаного вище. Побачити “Приурочені послідовності для зміни конфігурації сторожового таймера” на сторінці 43.
На рівні безпеки 1 WDE перевизначається WDRF в MCUSR. Побачити “MCUSR - Реєстр стану MCU” на сторінці 44 для опису WDRF. Це означає, що WDE завжди встановлюється, коли встановлено WDRF. Щоб очистити WDE, WDRF потрібно очистити перед тим, як вимкнути сторожовий дог за описаною вище процедурою. Ця функція забезпечує багаторазові скидання в умовах, що викликають збій, і безпечний запуск після відмови.
Примітка. Якщо сторожовий таймер не використовуватиметься в програмі, важливо пройти процедуру вимкнення сторожового таймера під час ініціалізації пристрою. Якщо Watchdog випадково ввімкнено, напрampЯкщо вказівник, що втікає, або стан згасання, пристрій буде скинуто, що, у свою чергу, призведе до нового скидання сторожового таймера. Щоб уникнути цієї ситуації, прикладне програмне забезпечення має завжди очищати прапор WDRF і біт керування WDE в процедурі ініціалізації.
Біти 5, 2: 0 - WDP [3: 0]: Таймер сторожового таймера Прескалер 3, 2, 1 та 0
Біти WDP [3: 0] визначають попереднє масштабування сторожового таймера, коли таймер сторожового таймера ввімкнено. Різні значення попереднього масштабування та відповідні їм періоди очікування показані у Таблиця 8-3.
Таблиця 8-3. Сторожовий таймер Prescale Select
WDP3 | WDP2 | WDP1 | WDP0 | Кількість циклів генератора WDT | Типовий тайм-аут при VCC = 5.0 В |
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. Вибір попереднього масштабу сторожового таймера (продовження)
WDP3 | WDP2 | WDP1 | WDP0 | Кількість циклів генератора WDT | Типовий тайм-аут при VCC = 5.0 В |
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. Вектори скидання та переривання
№ вектор | Адреса програми | Джерело | Визначення переривань |
1 | 0x0000 | СКИДАННЯ | Зовнішній штифт, скидання живлення, скидання коричневого виходу, скидання сторожового пса |
2 | 0x0001 | INT0 | Зовнішній запит на переривання 0 |
3 | 0x0002 | PCINT0 | Запит на переривання заміни PIN-кодом 0 |
4 | 0x0003 | TIMER1_COMPA | Таймер / Лічильник1 Порівняйте відповідність А |
5 | 0x0004 | TIMER1_OVF | Переповнення таймера / лічильника1 |
6 | 0x0005 | TIMER0_OVF | Переповнення таймера / лічильника0 |
7 | 0x0006 | EE_RDY | EEPROM готовий |
8 | 0x0007 | ANA_COMP | Аналоговий компаратор |
9 | 0x0008 | АЦП | Перетворення АЦП завершено |
10 | 0x0009 | TIMER1_COMPB | Таймер / Лічильник1 Порівняйте відповідність B |
11 | 0x000A | TIMER0_COMPA | Таймер / Лічильник0 Порівняйте відповідність А |
12 | 0x000B | TIMER0_COMPB | Таймер / Лічильник0 Порівняйте відповідність B |
13 | 0x000C | WDT | Тайм-аут сторожа |
14 | 0x000D | USI_START | УСИ СТАРТ |
15 | 0x000E | USI_OVF | Переповнення USI |
Якщо програма ніколи не вмикає джерело переривань, вектори переривань не використовуються, і в цих місцях можна розмістити звичайний програмний код.
Типове та загальне налаштування для адрес векторів переривань у ATtiny25/45/85 показано у програмі exampнижче.
Код збірки Example | ||
.org 0x0000 | ; Встановити адресу наступного | заява |
rjmp скидання | ; Адреса 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 спрацьовує, якщо будь-який увімкнений PIN-код [5: 0] перемикається. Реєстр PCMSK керує тим, які висновки сприяють перериванню зміни виводу. Переривання зміни контактів на PCINT [5: 0] виявляються асинхронно. Це означає, що ці переривання можна використовувати для пробудження частини також із режимів сну, відмінних від режиму очікування.
Переривання INT0 можуть бути викликані падінням або зростанням краю або низьким рівнем. Це налаштовано, як зазначено в специфікації для Реєстру керування MCU - MCUCR. Коли переривання INT0 увімкнено і налаштовано як рівень, переривання буде спрацьовувати до тих пір, поки штифт буде низько. Зверніть увагу, що розпізнавання переривань падаючого або піднімаючогося краю на INT0 вимагає наявності годинника вводу-виводу, описаного в «Годинникові системи та їх розподіл» на сторінка 23.
Переривання низького рівня
Переривання низького рівня на INT0 виявляється асинхронно. Це означає, що це переривання може бути використано для пробудження частини також з режимів сну, відмінних від режиму очікування. Годинник вводу-виводу зупиняється у всіх режимах сну, крім режиму очікування.
Зауважте, що якщо переривання, ініційоване рівнем, використовується для пробудження після вимкнення живлення, необхідний рівень має утримуватись достатньо довго, щоб MCU завершив пробудження, щоб ініціювати переривання рівня. Якщо рівень зникне до закінчення часу запуску, MCU все одно вийде з режиму сну, але переривання не буде створено. Час запуску визначається запобіжниками SUT і CKSEL, як описано в “Системний годинник та параметри годинника” на сторінці 23.
Якщо низький рівень на штифті переривання видаляється до того, як пристрій прокинувся, то виконання програми не буде перенаправлено на процедуру обслуговування переривань, а буде продовжено з інструкції, що слідує команді SLEEP.
Синхронізація часу переривання штифтів
КолишнійampЧас переривання зміни контакту показано в Малюнок 9-1.
Опис реєстру
MCUCR - Реєстр керування MCU
Зовнішній регістр управління перериваннями A містить біти управління для управління сенсом переривання.
біт | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | БОДС | ПУД | SE | SM1 | SM0 | БОДСЕ | 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 |
Біти 1: 0 - ISC0 [1: 0]: Управління сенсом переривання 0 Біт 1 і Біт 0
Зовнішнє переривання 0 активується зовнішнім штифтом INT0, якщо встановлено прапорець SREG I та відповідну маску переривання. Рівень і краї на зовнішньому штифті INT0, що активують переривання, визначені в Таблиця 9-2. Значення на контакті INT0 дорівнює sampперед виявленням країв. Якщо вибрано переривання по фронту або перемикання, імпульси, які тривають довше одного тактового періоду, генеруватимуть переривання. Більш короткі імпульси не гарантують створення переривань. Якщо вибрано переривання низького рівня, низький рівень повинен зберігатися до завершення поточної інструкції, щоб створити переривання.
Таблиця 9-2. Переривання 0 Контроль чуття
ISC01 | ISC00 | опис |
0 | 0 | Низький рівень INT0 генерує запит на переривання. |
0 | 1 | Будь-яка логічна зміна на INT0 генерує запит на переривання. |
1 | 0 | Нижній край INT0 генерує запит на переривання. |
1 | 1 | Висхідний край INT0 генерує запит на переривання. |
GIMSK - Загальний реєстр масок переривань
біт | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3B | – | INT0 | PCIE | – | – | – | – | – | ГІМСК |
Читання/запис | R | R/W | R/W | R | R | R | R | R | |
Початкове значення | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Біти 7, 4: 0 - Res: Зарезервовані біти
Ці біти є зарезервованими бітами в ATtiny25 / 45/85 і завжди будуть читатися як нуль.
Біт 6 - INT0: Увімкнено зовнішній запит на переривання 0
Коли встановлено біт INT0 (один) і встановлений I-біт у реєстрі стану (SREG) (один), вмикається зовнішнє переривання виводу. Контроль сенсу переривання0 біт 1/0 (ISC01 та ISC00) в Регістрі керування MCU (MCUCR) визначає, чи активується зовнішнє переривання на піднімається та / або падаючий край виводу INT0 або рівень, що визначається. Діяльність на штифті спричинить запит на переривання, навіть якщо INT0 налаштований як вихід. Відповідне переривання Зовнішнього запиту на переривання 0 виконується з вектора переривання INT0.
Біт 5 - PCIE: Увімкнення переривання зміни PIN-коду
Коли встановлено біт PCIE (один) і встановлений I-біт у реєстрі стану (SREG) (один), переривання зміни виводу вмикається. Будь-яка зміна будь-якого ввімкненого штифта PCINT [5: 0] призведе до переривання. Відповідне переривання запиту на переривання зміни PIN-коду виконується з вектора переривання PCI. Виводи PCINT [5: 0] активуються Реєстром PCMSK0 окремо.
GIFR - Реєстр загальних переривань
біт | 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 |
Біти 7, 4: 0 - Res: Зарезервовані біти
Ці біти є зарезервованими бітами в ATtiny25 / 45/85 і завжди будуть читатися як нуль.
Біт 6 - INTF0: Прапор зовнішнього переривання 0
Коли фронт або логічна зміна на виводі INT0 викликає запит на переривання, INTF0 стає встановленим (один). Якщо I-біт у SREG та біт INT0 у GIMSK встановлені (один), MCU перейде до відповідного вектора переривання. Прапор знімається, коли виконується процедура переривання. Як варіант, прапор можна очистити, написавши логічний. Цей прапор завжди очищається, коли INT0 налаштовано як переривання рівня.
Біт 5 - PCIF: Прапор переривання зміни PIN-коду
Коли зміна логіки на будь-якому штифті PCINT [5: 0] викликає запит на переривання, PCIF стає встановленим (один). Якщо I-біт в SREG і біт PCIE в GIMSK встановлені (один), MCU перейде до відповідного вектора переривання. Прапор знімається, коли виконується процедура переривання. Як варіант, прапор можна очистити, написавши логічний.
PCMSK - реєстр зміни маски PIN-коду
біт | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x15 | – | – | PCINT5 | PCINT4 | PCINT3 | PCINT2 | PCINT1 | PCINT0 | ПКМСК |
Читання/запис | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Початкове значення | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Біти 7: 6 - Res: Зарезервовані біти
Ці біти є зарезервованими бітами в ATtiny25 / 45/85 і завжди будуть читатися як нуль.
Біти 5: 0 - PCINT [5: 0]: Маска ввімкнення зміни контактів 5: 0
Кожен біт PCINT [5: 0] вибирає, чи ввімкнено переривання зміни виводу на відповідному виводі вводу-виводу. Якщо встановлено PCINT [5: 0] і встановлено біт PCIE у GIMSK, переривання зміни виводу вмикається на відповідному виводі вводу-виводу. Якщо PCINT [5: 0] видалено, переривання зміни контактів на відповідному штифті вводу-виводу вимкнено.
Порти введення/виведення
вступ
Усі порти AVR мають справжню функціональність Read-Modify-Write, якщо вони використовуються як загальні цифрові порти вводу/виводу. Це означає, що напрямок одного контакту порту можна змінити, не змінюючи ненавмисно напрямок будь-якого іншого контакту за допомогою інструкцій SBI та CBI. Те ж саме стосується зміни значення приводу (якщо налаштовано як вихід) або увімкнення/вимкнення підтягуючих резисторів (якщо налаштовано як вхід). Кожен вихідний буфер має симетричні характеристики приводу з високою можливістю прийому і джерела. Шпильковий драйвер достатньо потужний, щоб безпосередньо управляти світлодіодними дисплеями. Усі контакти порту мають індивідуально вибираються підтягуючі резистори з об’ємом живленняtagе незмінний опір. Усі контакти вводу/виводу мають захисні діоди як для VCC, так і для заземлення, як зазначено в Малюнок 10-1. Зверніться до “Електричні характеристики” на сторінці 161 для повного списку параметрів.
Малюнок 10-1. Еквівалентна схема введення/виведення
Усі регістри та розрядні посилання в цьому розділі записані в загальному вигляді. Нижній регістр «x» позначає букву нумерації порту, а нижній регістр «n» позначає номер біта. Однак, коли в програмі використовується регістр або біт, необхідно використовувати точну форму. Наприкладample, PORTB3 для розряду №. 3 в порту B, тут задокументовано як PORTxn. Фізичні регістри введення-виводу та розташування бітів перераховані в “Опис реєстру” на сторінка 64.
Для кожного порту виділено три адреси адреси пам'яті вводу / виводу, по одному для Регістру даних - PORTx, Регістру напрямків даних - DDRx та Вхідних контактів порту - PINx. Розташування вводу-виводу вхідних виводів порту лише для читання, тоді як Регістр даних та Регістр напрямків даних читаються / записуються. Однак запис логічного числа до біта в реєстрі PINx призведе до перемикання відповідного біта в Реєстрі даних. Крім того, функція Pull-up Disable - PUD у MCUCR відключає функцію підтягування для всіх контактів у всіх портах, коли встановлено.
Використання порту вводу-виводу як загального цифрового вводу-виводу описано в “Порти як загальний цифровий ввід / вивід” на сторінці 53. Більшість контактів порту мультиплексуються з альтернативними функціями периферійних функцій пристрою. Як кожна альтернативна функція впливає на штифт порту, описано в “Функції альтернативного порту” на сторінці 57. Повний опис альтернативних функцій наведено в окремих розділах модулів.
Зверніть увагу, що включення альтернативної функції деяких виводів порту не впливає на використання інших висновків порту як загального цифрового вводу-виводу.
Порти як загальні цифрові вводи-виводи
Порти - це двонаправлені порти вводу-виводу з додатковими внутрішніми підтягуваннями. Малюнок 10-2 показує функціональний опис одного штифта порту вводу-виводу, який тут загалом називається Pxn.
Малюнок 10-2. Загальний цифровий вхід/вихід(1)
Налаштування PIN-коду
Кожен штифт порту складається з трьох регістрових бітів: DDxn, PORTxn та PINxn. Як показано в “Опис реєстру” на сторінка 64, доступ до бітів DDxn здійснюється за адресою вводу-виводу DDRx, до бітів PORTxn - за адресою введення / виводу PORTx, а до бітів PINxn - за адресою вводу / виводу PINx.
Біт DDxn у Реєстрі DDRx вибирає напрямок цього виводу. Якщо DDxn записаний як логічний, Pxn налаштований як вихідний штифт. Якщо в DDxn записано логічний нуль, Pxn налаштовано як вхідний штифт.
Якщо в PORTxn записана логічна цифра, коли штифт налаштований як вхідний штифт, активується підтягуючий резистор. Щоб вимкнути підтягуючий резистор, у PORTxn має бути записаний логічний нуль, або штифт повинен бути налаштований як вихідний штифт. Штифти порту мають три значення, коли стан скидання стає активним, навіть якщо годинник не працює.
Якщо в PORTxn записано логічну одиницю, коли штифт налаштований як вихідний штифт, штифт порту ведеться високо (один). Якщо в PORTxn записано логічний нуль, коли штифт налаштований як вихідний штифт, штифт порту ведеться низько (нуль).
Перемикання штифта
Запис логічного на PINxn перемикає значення PORTxn, незалежно від значення DDRxn. Зауважте, що інструкція SBI може використовуватися для перемикання одного біта в порту.
Перемикання між входом і виходом
Під час перемикання між потрійним станом ({DDxn, PORTxn} = 0b00) і високим виходом ({DDxn, PORTxn} = 0b11), проміжним станом або з увімкненим підтягуванням {DDxn, PORTxn} = 0b01) або з низьким виходом ({DDxn, PORTxn} = 0b10) має відбутися. Зазвичай увімкнений стан підтягування є цілком прийнятним, оскільки середовище з високим імпедансом не помітить різниці між сильним високим драйвером і підтягуванням. Якщо це не так, біт PUD у регістрі MCUCR можна налаштувати на відключення всіх підтягувань у всіх портах.
Переключення між вхідним сигналом з підтягуванням та низьким вихідним сигналом породжує ту ж проблему. Користувач повинен використовувати як проміжний крок тристановий стан ({DDxn, PORTxn} = 0b00) або вихідний високий стан ({DDxn, PORTxn} = 0b10).
Таблиця 10-1 узагальнює керуючі сигнали для значення виводу.
Таблиця 10-1. Конфігурації PIN-коду порту
DDxn | PORTxn | ПУД
(у MCUCR) |
I/O | Підтягування | коментар |
0 | 0 | X | Введення | немає | Три штати (Hi-Z) |
0 | 1 | 0 | Введення | так | Pxn буде джерелом струму, якщо доп. низько потягнув. |
0 | 1 | 1 | Введення | немає | Три штати (Hi-Z) |
1 | 0 | X | Вихід | немає | Вихід низький (раковина) |
1 | 1 | X | Вихід | немає | Високий вихід (джерело) |
Читання значення штифта
Незалежно від налаштування біта напряму даних DDxn, контактний порт можна прочитати через біт реєстрації PINxn. Як показано в Малюнок 10-2, біт реєстрації PINxn і попередня засувка становлять синхронізатор. Це потрібно, щоб уникнути метастабільності, якщо фізичний штифт змінює значення біля краю внутрішнього годинника, але це також призводить до затримки. Малюнок 10-3 показує часову діаграму синхронізації під час зчитування зовнішнього значення PIN-коду. Максимальна та мінімальна затримки розповсюдження позначаються tpd,max та tpd,min відповідно.
Розглянемо часовий період, який починається незабаром після першого нижнього краю системного годинника. Фіксатор закритий, коли годинник низький, і стає прозорим, коли годинник високий, як показано затіненою областю сигналу “SYNC LATCH”. Значення сигналу фіксується, коли системний годинник знижується. Він входить до реєстру PINxn на наступному позитивному фронті годинника. Як вказують дві стрілки tpd, max і tpd, min, одиничний перехід сигналу на висновку буде затримуватися між ½ та 1½ системним тактовим періодом залежно від часу твердження.
При зчитуванні програмному призначеному значенню виводу потрібно вставити інструкцію nop, як зазначено в Малюнок 10-4. Інструкція виходу встановлює сигнал “SYNC LATCH” на позитивному краю годинника. У цьому випадку затримка tpd через синхронізатор становить один системний тактовий період.
Наступний код, наприкладampУ файлі показано, як встановити для контактів порту B 0 і 1 високий рівень, 2 і 3 низький рівень, а також визначити контакти порту від 4 до 5 як вхід із підтягуванням, призначеним для контакту порту 4. Отримані значення контактів зчитуються знову, але як обговорювалося раніше, включена інструкція nop, щоб мати можливість зчитувати значення, нещодавно призначене деяким із контактів.
Код збірки Example(1) |
…
; Визначте підтягування та встановіть високі результати ; Визначте напрямки для штифтів портів ldi r16,(1<<PB4)|(1<<PB1)|(1<<PB0) ldi r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0) вихід PORTB, r16 вихід DDRB, r17 ; Вставте nop для синхронізації немає ; Читайте контакти портів в r16, PINB … |
Примітка. Для програми асемблера використовуються два тимчасові регістри, щоб мінімізувати час від підтягувань, встановлених на контактах 0, 1 і 4, до правильного встановлення бітів напрямку, визначення бітів 2 і 3 як молодші та перевизначення бітів 0 і 1 як сильні високі драйвери.
C Код Прample |
беззнаковий символ i;
… /* Визначити підтягування та встановити високі результати */ /* Визначення напрямків для контактів порту */ PORTB = (1< DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0); /* Вставити nop для синхронізації*/ _NOP (); /* Читання пінів порту */ i = PINB; … |
Увімкнення цифрового входу та режими сну
Як показано в Малюнок 10-2, цифровий вхідний сигнал може бути клampзаземлений на вході тригера Шмітта. Сигнал, позначений на малюнку SLEEP, встановлюється контролером сну MCU в режимі вимкнення, щоб уникнути високого енергоспоживання, якщо деякі вхідні сигнали залишаються плаваючими або мають рівень аналогового сигналу, близький до VCC/2.
SLEEP замінено для штифтів портів, увімкнених як зовнішні штифти переривання. Якщо зовнішнє запит переривання не ввімкнено, функція SLEEP активна і для цих контактів. SLEEP також замінюється різними іншими альтернативними функціями, як описано в “Функції альтернативного порту” на сторінці 57.
Якщо логічний високий рівень («один») присутній на асинхронному зовнішньому виводі переривання, налаштованому як «Переривання за наростаючим фронтом, спадаючим фронтом або будь-якою зміною логіки на виводі», тоді як зовнішнє переривання не ввімкнено, відповідний прапор зовнішнього переривання буде встановлюється під час відновлення із згаданого вище режиму сну, як пampПерехід у цей режим сну виробляє необхідну логічну зміну.
Незв’язані шпильки
Якщо деякі шпильки не використовуються, рекомендується переконатися, що ці шпильки мають визначений рівень. Навіть незважаючи на те, що більшість цифрових входів відключені в режимах глибокого сну, як описано вище, слід уникати плаваючих входів, щоб зменшити споживання струму у всіх інших режимах, де ввімкнено цифрові входи (Скидання, Активний режим та Режим очікування).
Найпростіший спосіб забезпечити певний рівень невикористаного штифта – увімкнути внутрішнє підтягування. У цьому випадку підтягування буде вимкнено під час скидання. Якщо важливе низьке енергоспоживання під час скидання, рекомендується використовувати зовнішнє підтягування або розтягування. Підключати невикористовувані контакти безпосередньо до VCC або GND не рекомендується, оскільки це може спричинити надмірні струми, якщо контакт випадково налаштовано як вихід.
Функції альтернативного порту
Більшість контактів порту мають додаткові функції, крім загальних цифрових входів / виходів. Малюнок 10-5 показує, як штифт порту управляє сигналами від спрощеного Малюнок 10-2 можуть бути замінені альтернативними функціями. Перевіряючі сигнали можуть бути відсутні у всіх штифтах порту, але малюнок служить загальним описом, застосовним до всіх штифтів порту сімейства мікроконтролерів AVR.
Таблиця 10-2. Загальний опис сигналів перевизначення для альтернативних функцій
Назва сигналу | ПІБ | опис |
PUOE | Увімкнути функцію підтягування | Якщо цей сигнал встановлений, функція підтягування управляється сигналом PUOV. Якщо цей сигнал очищений, підтягування вмикається, коли
{DDxn, PORTxn, PUD} = 0b010. |
ПУОВ | Значення заміни підтягування | Якщо встановлено PUOE, підтягування вмикається / вимикається, коли PUOV встановлюється / очищається, незалежно від налаштування бітів DDxn, PORTxn та PUD. |
DDOE | Увімкнути перевизначення напряму даних | Якщо цей сигнал встановлений, увімкнення вихідного драйвера управляється сигналом DDOV. Якщо цей сигнал очищений, вихідний драйвер вмикається бітом реєстрації DDxn. |
ДДОВ | Значення заміщення напряму даних | Якщо встановлено DDOE, вихідний драйвер увімкнено / вимкнено, коли встановлено / очищено DDOV, незалежно від налаштування біту реєстру DDxn. |
PVOE | Увімкнути заміну значення порту | Якщо цей сигнал встановлений, а вихідний драйвер увімкнено, значення порту контролюється сигналом PVOV. Якщо PVOE очищено, а вихідний драйвер увімкнено, значення порту контролюється бітом реєстрації PORTxn. |
ПВОВ | Значення заміщення значення порту | Якщо встановлено PVOE, для значення порту встановлено значення PVOV, незалежно від налаштування біту реєстру PORTxn. |
ВОМ | Увімкнути перевизначення перемикання портів | Якщо встановлено PTOE, біт реєстру PORTxn інвертується. |
DIEOE | Увімкнути цифровий вхід Увімкнути заміну | Якщо цей біт встановлений, функцією цифрового входу керує сигнал DIEOV. Якщо цей сигнал очищений, увімкнення цифрового входу визначається станом MCU (нормальний режим, режим сну). |
ДІЄОВ | Значення перевизначення цифрового входу вмикає | Якщо встановлено DIEOE, цифровий вхід увімкнено / вимкнено, коли встановлено / очищено DIEOV, незалежно від стану MCU (нормальний режим, режим сну). |
DI | Цифровий вхід | Це цифровий вхід для альтернативних функцій. На малюнку сигнал підключений до виходу тригера Шмітта, але перед синхронізатором. Якщо цифровий вхід не використовується як джерело тактової частоти, модуль із альтернативною функцією використовуватиме власний синхронізатор. |
AIO | Аналоговий вхід / вихід | Це аналоговий вхід / вихід на / з альтернативних функцій. Сигнал підключений безпосередньо до майданчика і може використовуватися у двонаправленому напрямку. |
Наступні підрозділи коротко описують альтернативні функції для кожного порту та пов'язують переважні сигнали з альтернативною функцією. Докладнішу інформацію див. В описі альтернативної функції.
Альтернативні функції порту B
Штифти порту B з альтернативною функцією показані на Таблиця 10-3.
Таблиця 10-3. Альтернативні функції контактів порту B
Порт Pin | Альтернативна функція |
PB5 | ![]() СКИДАННЯ: Скинути PIN-код dW: налагодженняWIRE I / O ADC0: вхідний канал ADC 0 PCINT5: переривання заміни виводу, джерело 5 |
PB4 | XTAL2: Вихід кристалічного генератора CLKO: Системний тактовий вихід ADC2: Вхідний канал ADC 2
OC1B: Таймер / Лічильник1 Порівняйте вихід B збігу PCINT4: Переривання зміни контактів 0, джерело 4 |
PB3 | XTAL1: Вхід кристалічного генератора CLKI: Вхід зовнішнього тактового сигналу ADC3: Вхідний канал АЦП 3
OC1B: Додатковий таймер / лічильник1 Порівняння виходу відповідності B PCINT3: Переривання зміни контактів 0, джерело 3 |
PB2 | SCK: Вхід послідовного тактового сигналу ADC1: Вхідний канал ADC 1
T0: Таймер / лічильник0 Джерело годинника USCK: Годинник USI (трипровідний режим) SCL: Годинник USI (режим двох дротів) INT0: Зовнішнє переривання 0 Вхід PCINT2: Переривання зміни контактів 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 Порівняння відповідності виходу DI: введення даних USI (трипровідний режим) SDA: введення даних USI (двопровідний режим) AREF: зовнішня аналогова довідка PCINT0: переривання зміни контактів 0, джерело 0 |
Порт B, біт 5 - RESET / dW / ADC0 / PCINT5
RESET: Вхід зовнішнього скидання активний низький і увімкнений шляхом програмування (“1”) запобіжника RSTDISBL. Витягування активується, а вихідний драйвер та цифровий вхід деактивуються, коли штифт використовується як штифт RESET.
dW: Коли запрограмований запобіжник debugWIRE Enable (DWEN), а біти блокування непрограмовані, активується система debugWIRE в цільовому пристрої. Штифт порту RESET налаштований як двонаправлений штифт вводу-виводу дроту І (з відкритим зливом) з включеним підтягуванням і стає шлюзом зв'язку між ціллю та емулятором.
ADC0: аналого-цифровий перетворювач, канал 0.
PCINT5: Джерело переривання заміни контактів 5.
Порт B, біт 4 - XTAL2 / CLKO / ADC2 / OC1B / PCINT4
XTAL2: мікросхема тактового генератора 2. Використовується як штифтовий годинник для всіх джерел тактових частот, крім внутрішнього калібрувального RC-генератора та зовнішнього годинника Коли він використовується як годинниковий штифт, його не можна використовувати як штифт вводу-виводу. При використанні внутрішнього каліброваного RC-генератора або зовнішнього годинника як джерела мікросхемного годинника, PB4 служить звичайним виводом вводу-виводу.
CLKO: Розділений системний годинник може виводитися на штифт PB4. Розділений системний годинник виводитиметься, якщо запрограмований запобіжник CKOUT, незалежно від налаштувань PORTB4 та DDB4. Він також буде виведений під час скидання.
ADC2: аналого-цифровий перетворювач, канал 2.
OC1B: Вихід порівняння відповідності виводу: штифт PB4 може служити зовнішнім виходом для таймера / лічильника1 порівняння відповідності B, якщо налаштований як вихід (набір DDB4). Висновок OC1B також є вихідним висновком для функції таймера режиму ШІМ.
PCINT4: Джерело переривання заміни контактів 4.
Порт B, біт 3 - XTAL1 / CLKI / ADC3 / OC1B / PCINT3
XTAL1: штифт генератора годинникового струму 1. Використовується для всіх джерел тактових частот мікросхем, крім внутрішнього калібрувального RC-генератора. Коли він використовується як годинниковий штифт, його не можна використовувати як штифт вводу-виводу.
CLKI: Вхід годинника із зовнішнього джерела тактової частоти, див “Зовнішній годинник” на сторінці 26.
ADC3: аналого-цифровий перетворювач, канал 3.
OC1B: Інвертований вихід Порівняння відповідності виводу: Штифт PB3 може служити зовнішнім виходом для таймера / лічильника 1 Порівняння відповідності B, якщо налаштований як вихід (набір DDB3). Висновок OC1B також є перевернутим вихідним висновком для функції таймера режиму ШІМ.
PCINT3: Джерело переривання заміни контактів 3.
Порт B, біт 2 - SCK / ADC1 / T0 / USCK / SCL / INT0 / PCINT2
SCK: вихід головного тактового сигналу, вхідний штифт веденого годинника для каналу SPI. Коли SPI ввімкнено як підлеглий, цей штифт налаштовується як вхідний сигнал незалежно від налаштування DDB2. Коли SPI ввімкнено як головний, напрямок даних цього виводу контролюється DDPB2. Коли SPI вимушений SPI бути вхідним, підтягування все ще може управлятися бітом PORTB2.
ADC1: аналого-цифровий перетворювач, канал 1.
T0: джерело лічильника таймера / лічильника.
USCK: Універсальний послідовний інтерфейсний годинник із трипровідним режимом.
SCL: Двопровідний послідовний годинник для двопровідного режиму USI.
INT0: Зовнішнє джерело переривань 0.
PCINT2: Джерело переривання заміни контактів 2.
Порт B, біт 1 - MISO / AIN1 / OC0B / OC1A / DO / PCINT1
MISO: введення основних даних, вихідний вивід ведених даних для каналу SPI. Коли SPI ввімкнено як головний, цей штифт налаштовується як вхід, незалежно від налаштування DDB1. Коли SPI ввімкнено як підлеглий, напрямок даних цього виводу контролюється DDB1. Коли SPI вимушений SPI бути входом, підтягування все ще може управлятися бітом PORTB1.
AIN1: негативний вхід аналогового компаратора. Налаштуйте штифт порту як вхідний при вимкненому внутрішньому підтягуванні, щоб уникнути перешкод функції цифрового порту роботі аналогового компаратора.
OC0B: Результат порівняння результатів відповідності. Штифт PB1 може служити зовнішнім виходом для таймера / лічильника 0 Порівняння відповідності B. Штифт PB1 повинен бути налаштований як вихід (набір DDB1 (один)) для обслуговування цієї функції. Висновок OC0B також є вихідним висновком для функції таймера режиму ШІМ.
OC1A: Вихід порівняння відповідності виводу: штифт PB1 може служити зовнішнім виходом для таймера / лічильника1 порівняння відповідності B, якщо налаштований як вихід (набір DDB1). Висновок OC1A також є вихідним висновком для функції таймера режиму ШІМ.
DO: Вихід даних універсального послідовного інтерфейсу в трипровідному режимі. Трипровідний режим Вихід даних замінює значення PORTB1, і він направляється в порт, коли встановлено біт напряму даних DDB1 (один). PORTB1 все ще дозволяє підтягування, якщо напрямок введено і PORTB1 встановлений (один).
PCINT1: Джерело переривання заміни контактів 1.
Порт B, біт 0 - MOSI / AIN0 / OC0A / OC1A / DI / SDA / AREF / PCINT0
MOSI: вихід вихідних даних SPI, введення даних підлеглих для каналу SPI. Коли SPI ввімкнено як підлеглий, цей штифт налаштовується як вхідний сигнал незалежно від налаштування DDB0. Коли SPI ввімкнено як головний, напрямок даних цього виводу контролюється DDB0. Коли SPI вимушений SPI бути вхідним, підтягування все ще може управлятися бітом PORTB0.
AIN0: Позитивний вхід аналогового компаратора. Налаштуйте штифт порту як вхід з вимкненим внутрішнім підтягуванням, щоб уникнути перешкод функції цифрового порту роботі аналогового компаратора.
OC0A: Результат порівняння результатів відповідності. Штифт PB0 може служити зовнішнім виходом для таймера / лічильника0 Порівняти відповідність A, якщо налаштований як вихід (набір DDB0 (один)). Висновок OC0A також є вихідним висновком для функції таймера режиму ШІМ.
OC1A: Інвертований вихід Порівняння відповідності виводу: Штифт PB0 може служити зовнішнім виходом для таймера / лічильника 1 Порівняння відповідності B, якщо налаштований як вихід (набір DDB0). Висновок OC1A також є перевернутим вихідним висновком для функції таймера режиму ШІМ.
SDA: Дані послідовного інтерфейсу в двопровідному режимі.
AREF: Зовнішнє аналогове посилання для АЦП. Підтягуючий і вихідний драйвер вимкнено на PB0, коли контакт використовується як зовнішній опорний або внутрішній Voltage Посилання із зовнішнім конденсатором на виводі AREF.
DI: Введення даних у трипровідному режимі USI. Трипровідний режим USI не замінює звичайні функції порту, тому контакт повинен бути налаштований як вхід для функції DI.
PCINT0: Джерело переривання заміни контактів 0.
Таблиця 10-4 і Таблиця 10-5 пов'язують альтернативні функції порту B з головними сигналами, показаними в Малюнок 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) • ДВЕН(1) | 0 | 0 |
ДДОВ | debugWire Передача | 0 | 0 |
PVOE | 0 | OC1B Увімкнути | ![]() OC1B Увімкнути |
ПВОВ | 0 | OC1B | OC1B |
ВОМ | 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 |
ВОМ | 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
біт | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | БОДС | ПУД | SE | SM1 | SM0 | БОДСЕ | 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
біт | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x18 | – | – | PORTB5 | PORTB4 | PORTB3 | PORTB2 | PORTB1 | PORTB0 | ПОРТБ |
Читання/запис | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Початкове значення | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
DDRB - Реєстр напрямів даних порту B
біт | 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 - адреса вхідних контактів порту B
біт | 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 | N/A | N/A | N/A | N/A | N/A | N/A |
8-бітний таймер / лічильник0 з ШІМ
особливості
Два незалежних одиниці порівняння результатів
Реєстри порівняння подвійного буферизованого виходу
Очистити таймер для порівняння збігів (автоматичне перезавантаження)
Модулятор ширини імпульсу з коректною фазою (ШІМ)
Змінний ШІМ-період
Генератор частоти
Три незалежних джерела переривань (TOV0, OCF0A та OCF0B)
закінченоview
Таймер / Лічильник0 - це загальний 8-бітний модуль таймера / лічильника, з двома незалежними блоками порівняння вихідних даних та з підтримкою ШІМ. Це дозволяє точно визначати терміни виконання програми (управління подіями) та генерацію хвиль.
Спрощена блок-схема 8-бітного таймера / лічильника показана на Малюнок 11-1. Що стосується фактичного розміщення штифтів вводу-виводу, див “Розтискання ATtiny25 / 45/85” на сторінці 2. Регістри вводу-виводу, доступні для процесора, включаючи біти вводу-виводу та висновки вводу-виводу, виділені жирним шрифтом. Реєстр вводу-виводу для пристрою та розташування бітів перелічені в “Опис реєстру” на сторінці 77.
Регістри таймера/лічильника (TCNT0) і вихідного порівняння (OCR0A і OCR0B) є 8-розрядними регістрами. Усі сигнали запиту переривання (скорочено Int.Req. на малюнку) відображаються в реєстрі прапорів переривання таймера (TIFR). Усі переривання індивідуально маскуються за допомогою регістра маски переривань таймера (TIMSK). TIFR і TIMSK на малюнку не показані.
Таймер/лічильник може бути синхронізований внутрішньо, через попередній делікат або зовнішнім джерелом синхронізації на контакті T0. Логічний блок Clock Select контролює джерело тактового сигналу та фронт, які таймер/лічильник використовує для збільшення (або зменшення) свого значення. Таймер/лічильник неактивний, якщо не вибрано джерело годинника. Вихідні дані логіки вибору годинника називають годинником таймера (clkT0).
Подвійні буферизовані регістри порівняння вихідних даних (OCR0A та OCR0B) порівнюються зі значенням таймера / лічильника постійно. Результат порівняння може бути використаний генератором сигналів для генерації ШІМ або змінної частоти на вихідних виводах порівняння (OC0A та OC0B). Див. “Одиниця порівняння результатів” на сторінці 69. для деталей. Подія "Порівняння відповідності" також встановить прапор порівняння (OCF0A або OCF0B), який можна використовувати для створення запиту переривання вихідного порівняння.
визначення
Багато посилань на регістри та біти в цьому розділі написані в загальній формі. Нижній регістр "n" замінює номер таймера / лічильника, в даному випадку 0. Нижній регістр "x" замінює блок виведення порівняння, у цьому випадку блок порівняння A або блок порівняння B. Однак, коли використовується регістр або біт, визначається у програмі повинна використовуватися точна форма, тобто TCNT0 для доступу до значення лічильника Timer / Counter0 тощо.
Визначення в Таблиця 11-1 також широко використовуються у всьому документі.
Таблиця 11-1. визначення
Постійний | опис |
ДНО | Лічильник досягає ДНЯ, коли стає 0x00 |
МАКС | Лічильник досягає максимального значення, коли стає 0xFF (десятковий 255) |
ТОП | Лічильник досягає ТОПу, коли стає рівним найвищому значенню в послідовності підрахунку. Значенням TOP може бути призначено фіксоване значення 0xFF (MAX) або значення, що зберігається в Реєстрі OCR0A. Призначення залежить від режиму роботи |
Джерела попереднього масштабування таймера / лічильника та годинника
Таймер / лічильник можна синхронізувати за допомогою внутрішнього або зовнішнього джерела годинника. Джерело тактового сигналу вибирається за логікою вибору годинника, яка контролюється бітами вибору годинника (c), розташованими в регістрі керування таймером / лічильником0 (TCCR0B).
Внутрішнє джерело годинника з прескалером
Таймер/лічильник 0 можна синхронізувати безпосередньо системним годинником (встановивши CS0[2:0] = 1). Це забезпечує найшвидшу роботу з максимальною тактовою частотою таймера/лічильника, яка дорівнює системній тактовій частоті (fCLK_I/O). Крім того, один із чотирьох відводів від попереднього делителя може бути використаний як джерело синхронізації. Попередньо масштабований годинник має частоту будь-якої
Скидання прескалера
Попередній масштабер працює вільно, тобто він працює незалежно від логіки вибору годинника таймера/лічильника0. Оскільки вибір годинника таймера/лічильника не впливає на попередній масштабування, стан попереднього масштабування матиме наслідки для ситуацій, де використовується попередньо масштабований годинник. Один колишнійampАртефакт попереднього масштабування – це коли таймер/лічильник увімкнено та тактується преділяльником (6 > CS0[2:0] > 1). Кількість системних тактів від моменту ввімкнення таймера до першого підрахунку може становити від 1 до N+1 тактів системи, де N дорівнює дільнику попереднього масштабування (8, 64, 256 або 1024).
Можна скористатися скиданням прескалера для синхронізації таймера / лічильника до виконання програми.
Зовнішнє джерело годинника
Зовнішнє джерело синхронізації, що подається на висновок T0, можна використовувати як годинник таймера/лічильника (clkT0). Вивід T0 - sampкерується один раз за кожен такт системи за допомогою логіки синхронізації контактів. Синхронізований (сampсвітлодіодний) сигнал потім передається
через крайовий детектор. Малюнок 11-2 показує функціональну еквівалентну блок-схему синхронізації T0 і логіки детектора краю. Регістри тактуються за позитивним фронтом внутрішнього системного годинника (clkI/O). Фіксатор прозорий у високому періоді внутрішнього системного годинника.
Детектор краю генерує один імпульс clkT0 для кожного позитивного (CS0[2:0] = 7) або негативного (CS0[2:0] = 6) фронту, який він виявляє.
Регістри OCR0x подвійно буферизуються при використанні будь-якого з режимів модуляції широти імпульсу (ШІМ). Для нормального режиму та режиму Clear Timer у режимі порівняння (CTC) подвійна буферизація відключена. Подвійна буферизація синхронізує оновлення реєстрів порівняння OCR0x у верхній або нижній частині послідовності підрахунку. Синхронізація запобігає появі несиметричних імпульсів ШІМ непарної довжини, тим самим роблячи вихід без збоїв.
Доступ до реєстру OCR0x може здатися складним, але це не так. Коли ввімкнено подвійну буферизацію, центральний процесор має доступ до буферного реєстру OCR0x, а якщо подвійну буферизацію вимкнено, центральний процесор буде мати доступ безпосередньо до OCR0x.
Порівняння вихідних даних
У режимах генерації форми сигналу, які не мають ШІМ, вихід відповідності компаратора можна примусити, записавши його в біт 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]) мають дві функції. Генератор сигналів використовує біти COM0x [1: 0] для визначення стану порівняння результатів (OC0x) при наступному порівнянні порівняння. Крім того, біти COM0x [1: 0] керують вихідним вихідним джерелом OC0x. Малюнок 11-6 показує спрощену схему логіки, на яку впливає налаштування біта COM0x [1: 0]. Реєстри вводу-виводу, біти вводу-виводу та штифти вводу-виводу на малюнку зображені жирним шрифтом. Показані лише ті частини загальних реєстрів контролю входів / виходів (DDR та PORT), на які впливають біти COM0x [1: 0]. Коли йдеться про стан OC0x, посилання стосується внутрішнього реєстру OC0x, а не виводу OC0x. Якщо відбувається скидання системи, реєстр OC0x скидається до “0”.
Коли OC0A / OC0B підключено до виводу вводу / виводу, функція бітів COM0A [1: 0] / COM0B [1: 0] залежить від налаштування біта WGM0 [2: 0]. Таблиця 11-2 показує функціональність бітів COM0x [1: 0], коли біти WGM0 [2: 0] встановлені в нормальний режим або режим CTC (без ШІМ).
Таблиця 11-2. Порівняйте режим виведення, режим без ШІМ
COM0A1 COM0B1 | COM0A0 COM0B0 | опис |
0 | 0 | Нормальна робота порту, OC0A / OC0B відключено. |
0 | 1 | Увімкнути / вимкнути OC0A / OC0B на матчі порівняння |
1 | 0 | Видаліть OC0A / OC0B у порівнянні |
1 | 1 | Встановіть OC0A / OC0B на паралельному порівнянні |
Таблиця 11-3 показує функціональність бітів COM0x [1: 0], коли біти WGM0 [2: 0] встановлені на швидкий режим ШІМ.
Таблиця 11-3. Порівняйте режим виведення, швидкий режим ШІМ(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | опис |
0 | 0 | Нормальна робота порту, OC0A / OC0B відключено. |
0 | 1 | Зарезервовано |
1 | 0 | Очистити OC0A / OC0B на порівнянній сумі, встановити OC0A / OC0B внизу (неінвертуючий режим) |
1 | 1 | Встановіть OC0A / OC0B для порівняння порівняння, очистіть OC0A / OC0B внизу (режим інвертування) |
Примітка. Особливий випадок виникає, коли OCR0A або OCR0B дорівнює TOP і встановлено COM0A1/COM0B1. У цьому випадку збіг порівняння ігнорується, але встановлення або очищення виконується в НИЖНЬОМУ. Побачити “Швидкий ШІМ-режим” на сторінці 73 для більш детальної інформації.
Таблиця 11-4 показує функціональність бітів COM0x [1: 0], коли біти WGM0 [2: 0] встановлені на правильний фазовий режим ШІМ.
Таблиця 11-4. Порівняйте режим вихідного сигналу, режим Phase Correct PWM(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | опис |
0 | 0 | Нормальна робота порту, OC0A / OC0B відключено. |
0 | 1 | Зарезервовано |
1 | 0 | Зніміть OC0A / OC0B на порівнянній сумісності під час підрахунку. Встановіть OC0A / OC0B на Порівняти збіг при підрахунку вниз. |
1 | 1 | Встановіть OC0A / OC0B на Порівняти збіг під час підрахунку. Зніміть OC0A / OC0B на порівнянній сумісності під час підрахунку вниз. |
Примітка: 1. Особливий випадок виникає, коли OCR0A або OCR0B дорівнює TOP і встановлено COM0A1/COM0B1. У цьому випадку відповідність порівняння ігнорується, але встановлення або очищення виконується в TOP. Побачити “Режим ШІМ із корекцією фази” на сторінці 74 для більш детальної інформації.
Біти 3: 2 - Res: Зарезервовані біти
Ці біти є зарезервованими бітами в ATtiny25 / 45/85 і завжди будуть читатися як нуль.
Біти 1: 0 - WGM0 [1: 0]: Режим генерації сигналу
У поєднанні з бітом WGM02, знайденим у Реєстрі TCCR0B, ці біти контролюють послідовність підрахунку лічильника, джерело максимального (TOP) значення лічильника та тип генерації сигналу, який слід використовувати, див. Таблиця 11-5. Режими роботи, що підтримуються блоком таймера / лічильника, це: звичайний режим (лічильник), режим очищення таймера при порівнянні відповідності (CTC) та два типи режимів модуляції ширини імпульсу (ШІМ) (див. “Режими роботи” на сторінці 71).
Таблиця 11-5. Режим генерації сигналу Біт Опис
Режим | WGM 02 | WGM 01 | WGM 00 | Режим роботи таймера / лічильника | ТОП | Оновлення OCRx в | Прапор ТОВ встановлений |
0 | 0 | 0 | 0 | нормальний | 0xFF | негайно | МАКС(1) |
1 | 0 | 0 | 1 | ШІМ, фаза коректна | 0xFF | ТОП | ДНО(2) |
2 | 0 | 1 | 0 | CTC | OCRA | негайно | МАКС(1) |
3 | 0 | 1 | 1 | Швидкий ШІМ | 0xFF | ДНО(2) | МАКС(1) |
4 | 1 | 0 | 0 | Зарезервовано | – | – | – |
5 | 1 | 0 | 1 | ШІМ, фаза коректна | OCRA | ТОП | ДНО(2) |
6 | 1 | 1 | 0 | Зарезервовано | – | – | – |
7 | 1 | 1 | 1 | Швидкий ШІМ | OCRA | ДНО(2) | ТОП |
Біт 7 - FOC0A: Порівняння вихідних даних A
Біт FOC0A активний лише тоді, коли біти WGM вказують режим, який не є ШІМ.
Однак для забезпечення сумісності з майбутніми пристроями цей біт повинен бути встановлений на нуль, коли TCCR0B записується під час роботи в режимі ШІМ. Під час запису логічного в біт FOC0A негайне порівняння змушене на блоці генерації сигналів. Вихід OC0A змінюється відповідно до налаштувань бітів COM0A [1: 0]. Зверніть увагу, що біт FOC0A реалізований як стробоскоп. Отже, саме значення, присутнє в бітах COM0A [1: 0], визначає ефект вимушеного порівняння.
Строб FOC0A не генерує жодного переривання, а також не очистить таймер в режимі CTC, використовуючи OCR0A як TOP. Біт FOC0A завжди зчитується як нуль.
Біт 6 - FOC0B: Порівняння вихідних даних B
Біт FOC0B активний лише тоді, коли біти WGM вказують режим, який не є ШІМ.
Однак для забезпечення сумісності з майбутніми пристроями цей біт повинен бути встановлений на нуль, коли TCCR0B записується під час роботи в режимі ШІМ. Під час запису логічного в біт FOC0B негайне порівняння змушене на блоці генерації сигналів. Вихід OC0B змінюється відповідно до налаштувань бітів COM0B [1: 0]. Зверніть увагу, що біт FOC0B реалізований як стробоскоп. Отже, саме значення, присутнє в бітах COM0B [1: 0], визначає ефект вимушеного порівняння.
Строб FOC0B не генерує жодного переривання, а також не очистить таймер в режимі CTC, використовуючи OCR0B як TOP.
Біт FOC0B завжди зчитується як нуль.
Біти 5: 4 - Res: Зарезервовані біти
Ці біти є зарезервованими бітами в ATtiny25 / 45/85 і завжди будуть читатися як нуль.
Біт 3 - WGM02: Режим генерації сигналу
Див. Опис у “TCCR0A - Реєстр контролю таймера / лічильника A” на сторінці 77.
Біти 2: 0 - CS0 [2: 0]: вибір годинника
Три біти вибору годинника вибирають джерело годинника, яке використовуватиметься таймером / лічильником.
Таблиця 11-6. Годинник Виберіть біт Опис
CS02 | CS01 | CS00 | опис |
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 показує блок-схему регістру синхронізації таймера / лічильника 1 та затримки синхронізації між регістрами. Зверніть увагу, що всі деталі отримання годинника на малюнку не показані. Значення регістра Таймер / Лічильник1 проходять через внутрішні регістри синхронізації, які спричиняють затримку вхідної синхронізації, перш ніж впливати на роботу лічильника. Регістри TCCR1, GTCCR, OCR1A, OCR1B та OCR1C можна прочитати назад відразу після написання реєстру. Значення зворотного зчитування затримуються для реєстру таймера / лічильника1 (TCNT1) та прапорів (OCF1A, OCF1B та TOV1) через синхронізацію введення та виведення.
Таймер / Лічильник1 відрізняється високою роздільною здатністю та високою точністю використання з меншими можливостями попереднього масштабування. Він також може підтримувати два точні, високошвидкісні, 8-бітові імпульсні модулятори ширини, що використовують тактову частоту до 64 МГц (або 32 МГц в режимі низької швидкості). У цьому режимі таймер / лічильник1 та регістри порівняння виходів служать як подвійні автономні ШІМ з неперекриваючими неінвертованими та інвертованими виходами. Відноситься до сторінка 86 для детального опису цієї функції. Подібним чином, високі можливості попереднього масштабування роблять цей пристрій корисним для функцій з меншою швидкістю або функцій точного синхронізації при рідкісних діях.
Малюнок 12-2. Блок-схема регістра синхронізації таймера/лічильника 1.
Таймер / Лічильник1 і прескалер дозволяють запускати процесор з будь-якого джерела тактової частоти, поки прескалер працює на швидких 64 МГц (або 32 МГц в режимі низької швидкості) PCK-годинниках в асинхронному режимі.
Зверніть увагу, що системна тактова частота повинна бути нижчою за третину частоти PCK. Механізму синхронізації асинхронного таймера / лічильника1 потрібні принаймні два краї PCK, коли системний годинник високий. Якщо частота системного годинника занадто висока, існує ризик втрати даних або контрольних значень.
Наступне Малюнок 12-3 показує блок-схему для таймера / лічильника1.
Таблиця 12-1. Режим порівняння Виберіть у режимі ШІМ
COM1x1 | COM1x0 | Вплив на вихідні порівняльні шпильки |
0 | 0 | OC1x не підключено. OC1x не підключено. |
0 | 1 | OC1x очищений під час порівняння. Встановити, колиTCNT1 = $ 00. OC1x встановлений для порівняння. Очищається, коли TCNT1 = $ 00. |
1 | 0 | OC1x очищений під час порівняння. Встановлюється, коли TCNT1 = $ 00. OC1x не підключено. |
1 | 1 | OC1x Набір для порівняння. Очищається, коли TCNT1 = $ 00. OC1x не підключено. |
Характеристики АЦП
Таблиця 21-8. Характеристики АЦП, односторонні канали. TA = від -40°C до +85°C
символ | Параметр | Хвороба | Хв | Тип | Макс | одиниці |
роздільна здатність | 10 | біти | ||||
Абсолютна точність (включаючи INL, DNL та квантування, помилки посилення та зміщення) | VREF = 4 В, VCC = 4 В,
Годинник АЦП = 200 кГц |
2 | LSB | |||
VREF = 4 В, VCC = 4 В,
Годинник АЦП = 1 МГц |
3 | LSB | ||||
VREF = 4 В, VCC = 4 В,
Годинник АЦП = 200 кГц Режим зменшення шуму |
1.5 | LSB | ||||
VREF = 4 В, VCC = 4 В,
Годинник АЦП = 1 МГц Режим зменшення шуму |
2.5 | LSB | ||||
Інтегральна нелінійність (INL) (Точність після зміщення та калібрування коефіцієнта посилення) | VREF = 4 В, VCC = 4 В,
Годинник АЦП = 200 кГц |
1 | LSB | |||
Диференціальна нелінійність (DNL) | VREF = 4 В, VCC = 4 В,
Годинник АЦП = 200 кГц |
0.5 | LSB | |||
Помилка посилення | VREF = 4 В, VCC = 4 В,
Годинник АЦП = 200 кГц |
2.5 | LSB | |||
Помилка зміщення | VREF = 4 В, VCC = 4 В,
Годинник АЦП = 200 кГц |
1.5 | LSB | |||
Час перетворення | Безкоштовна конверсія | 14 | 280 | мкс | ||
Тактова частота | 50 | 1000 | кГц | |||
VIN номер | Вхідний об'ємtage | GND | VREF | V | ||
Вхідна пропускна здатність | 38.4 | кГц | ||||
AREF | Зовнішнє посилання Voltage | 2.0 | VCC | V | ||
VINT | Внутрішній Voltage Посилання | 1.0 | 1.1 | 1.2 | V | |
Внутрішнє посилання 2.56 В (1) | VCC > 3.0 В | 2.3 | 2.56 | 2.8 | V | |
RREF | 32 | кОм | ||||
ДОЩ | Опір аналогового входу | 100 | МОм | |||
Вихід АЦП | 0 | 1023 | LSB |
Примітка: 1. Значення є лише рекомендаціями.
Таблиця 21-9. Характеристики АЦП, диференціальні канали (уніполярний режим). TA = від -40°C до +85°C
символ | Параметр | Хвороба | Хв | Тип | Макс | одиниці |
роздільна здатність | Приріст = 1x | 10 | біти | |||
Приріст = 20x | 10 | біти | ||||
Абсолютна точність (включаючи INL, DNL та
Помилки квантування, посилення та зміщення) |
Приріст = 1x
VREF = 4 В, VCC = 5 В Годинник АЦП = 50 - 200 кГц |
10.0 | LSB | |||
Приріст = 20x
VREF = 4 В, VCC = 5 В Годинник АЦП = 50 - 200 кГц |
20.0 | LSB | ||||
Інтегральна нелінійність (INL) (Точність після зміщення та калібрування посилення) | Приріст = 1x
VREF = 4 В, VCC = 5 В Годинник АЦП = 50 - 200 кГц |
4.0 | LSB | |||
Приріст = 20x
VREF = 4 В, VCC = 5 В Годинник АЦП = 50 - 200 кГц |
10.0 | LSB | ||||
Помилка посилення | Приріст = 1x | 10.0 | LSB | |||
Приріст = 20x | 15.0 | LSB | ||||
Помилка зміщення | Приріст = 1x
VREF = 4 В, VCC = 5 В Годинник АЦП = 50 - 200 кГц |
3.0 | LSB | |||
Приріст = 20x
VREF = 4 В, VCC = 5 В Годинник АЦП = 50 - 200 кГц |
4.0 | LSB | ||||
Час перетворення | Безкоштовна конверсія | 70 | 280 | мкс | ||
Тактова частота | 50 | 200 | кГц | |||
VIN номер | Вхідний об'ємtage | GND | VCC | V | ||
VDIFF | Вхідний диференціальний об'ємtage | VREF/Посилення | V | |||
Вхідна пропускна здатність | 4 | кГц | ||||
AREF | Зовнішнє посилання Voltage | 2.0 | VCC – 1.0 | V | ||
VINT | Внутрішній Voltage Посилання | 1.0 | 1.1 | 1.2 | V | |
Внутрішнє посилання 2.56 В (1) | VCC > 3.0 В | 2.3 | 2.56 | 2.8 | V | |
RREF | Опорний вхідний опір | 32 | кОм | |||
ДОЩ | Опір аналогового входу | 100 | МОм | |||
Вихід перетворення АЦП | 0 | 1023 | LSB |
Примітка. Значення є лише рекомендаціями.
Таблиця 21-10. Характеристики АЦП, диференціальні канали (біполярний режим). TA = від -40°C до +85°C
символ | Параметр | Хвороба | Хв | Тип | Макс | одиниці |
роздільна здатність | Приріст = 1x | 10 | біти | |||
Приріст = 20x | 10 | біти | ||||
Абсолютна точність (включаючи INL, DNL та
Помилки квантування, посилення та зміщення) |
Приріст = 1x
VREF = 4 В, VCC = 5 В Годинник АЦП = 50 - 200 кГц |
8.0 | LSB | |||
Приріст = 20x
VREF = 4 В, VCC = 5 В Годинник АЦП = 50 - 200 кГц |
8.0 | LSB | ||||
Інтегральна нелінійність (INL) (Точність після зміщення та калібрування посилення) | Приріст = 1x
VREF = 4 В, VCC = 5 В Годинник АЦП = 50 - 200 кГц |
4.0 | LSB | |||
Приріст = 20x
VREF = 4 В, VCC = 5 В Годинник АЦП = 50 - 200 кГц |
5.0 | LSB | ||||
Помилка посилення | Приріст = 1x | 4.0 | LSB | |||
Приріст = 20x | 5.0 | LSB | ||||
Помилка зміщення | Приріст = 1x
VREF = 4 В, VCC = 5 В Годинник АЦП = 50 - 200 кГц |
3.0 | LSB | |||
Приріст = 20x
VREF = 4 В, VCC = 5 В Годинник АЦП = 50 - 200 кГц |
4.0 | LSB | ||||
Час перетворення | Безкоштовна конверсія | 70 | 280 | мкс | ||
Тактова частота | 50 | 200 | кГц | |||
VIN номер | Вхідний об'ємtage | GND | VCC | V | ||
VDIFF | Вхідний диференціальний об'ємtage | VREF/Посилення | V | |||
Вхідна пропускна здатність | 4 | кГц | ||||
AREF | Зовнішнє посилання Voltage | 2.0 | VCC – 1.0 | V | ||
VINT | Внутрішній Voltage Посилання | 1.0 | 1.1 | 1.2 | V | |
Внутрішнє посилання 2.56 В (1) | VCC > 3.0 В | 2.3 | 2.56 | 2.8 | V | |
RREF | Опорний вхідний опір | 32 | кОм | |||
ДОЩ | Опір аналогового входу | 100 | МОм | |||
Вихід перетворення АЦП | -512 | 511 | LSB |
Підсумок набору інструкцій
Мнемотехніка | Операнди | опис | Операція | Прапори | # Годинники |
АРИТМЕТИЧНІ ТА ЛОГІЧНІ ВКАЗІВКИ | |||||
ДОДАТИ | Rd, Rr | Додайте два регістри | Rd ← Rd + Rr | Z, C, N, V, H | 1 |
АЦП | Rd, Rr | Додайте разом із Carry два реєстри | Rd ← Rd + Rr + C | Z, C, N, V, H | 1 |
ADIW | Rdl, K | Додайте Безпосереднє до Word | Rdh:Rdl ← Rdh:Rdl + K | Z, C, N, V, S | 2 |
SUB | Rd, Rr | Відніміть два регістри | Rd ← Rd – Rr | Z, C, N, V, H | 1 |
СУБІ | Рд, К | Відняти Постійну з Реєстру | Rd ← Rd – K | Z, C, N, V, H | 1 |
SBC | Rd, Rr | Відніміть за допомогою Carry два регістри | Rd ← Rd – Rr – C | Z, C, N, V, H | 1 |
SBCI | Рд, К | Відніміть за допомогою Carry Constant від Reg. | Rd ← Rd – K – C | Z, C, N, V, H | 1 |
ДБРЖ | Rdl, K | Відняти негайне зі слова | Rdh:Rdl ← Rdh:Rdl – К | Z, C, N, V, S | 2 |
І | Rd, Rr | Логічні І реєстри | Rd ← Rd ∙ Rr | Z, N, V | 1 |
АНДІ | Рд, К | Логічний І реєструється і постійний | Rd ← Rd ∙ K | Z, N, V | 1 |
OR | Rd, Rr | Логічні АБО реєстри | Rd ← Rd v Rr | Z, N, V | 1 |
ORI | Рд, К | Логічний АБО Реєстр і постійний | Рд ← Рд в К | Z, N, V | 1 |
EOR | Rd, Rr | Ексклюзивні АБО реєстри | Rd ← Rd ⊕ Rr | Z, N, V | 1 |
COM | Rd | Своє доповнення | Rd ← 0xFF − Rd | Z, C, N, V | 1 |
NEG | Rd | Доповнення двох | Rd ← 0x00 − Rd | Z, C, N, V, H | 1 |
SBR | Rd, K | Встановити біт (и) у реєстрі | Рд ← Рд в К | Z, N, V | 1 |
CBR | Rd, K | Очистити біт (и) у реєстрі | Rd ← Rd ∙ (0xFF – K) | Z, N, V | 1 |
INC | Rd | Приріст | Rd ← Rd + 1 | Z, N, V | 1 |
ГРУД | Rd | Поважність | Rd ← Rd − 1 | Z, N, V | 1 |
TST | Rd | Тест на нуль або мінус | Рд ← Рд ∙ Рд | Z, N, V | 1 |
CLR | Rd | Очистити реєстр | Rd ← Rd ⊕ Rd | Z, N, V | 1 |
SER | Rd | Встановити реєстрацію | Rd ← 0xFF | Жодного | 1 |
ІНСТРУКЦІЯ ДЛЯ ФІЛІЇ | |||||
RJMP | k | Відносний стрибок | ПК ← ПК + k + 1 | Жодного | 2 |
IJMP | Непрямий перехід до (Z) | ПК ← З | Жодного | 2 | |
ЗВІНЧ | k | Відносний виклик підпрограми | ПК ← ПК + k + 1 | Жодного | 3 |
ICALL | Непрямий дзвінок на (Z) | ПК ← З | Жодного | 3 | |
RET | Повернення підпрограми | ПК ← СТЕК | Жодного | 4 | |
РЕТІ | Повернення переривання | ПК ← СТЕК | I | 4 | |
CPSE | Rd, Rr | Порівняйте, пропустіть, якщо дорівнює | якщо (Rd = Rr) PC ← PC + 2 або 3 | Жодного | 1 |
CP | Rd, Rr | Порівняйте | Rd − Rr | Z, N, V, C, H | 1 |
CPC | Rd, Rr | Порівняйте з Carry | Rd − Rr − C | Z, N, V, C, H | 1 |
CPI | Rd, K | Порівняйте реєстр із негайним | Rd − K | Z, N, V, C, H | 1 |
SBRC | Рр, б | Пропустити, якщо біт у реєстрі очищено | якщо (Rr(b)=0) ПК ← ПК + 2 або 3 | Жодного | 1 |
СБРС | Рр, б | Пропустити, якщо встановлено Bit in Register | якщо (Rr(b)=1) ПК ← ПК + 2 або 3 | Жодного | 1 |
SBIC | Р, б | Пропустити, якщо біт у реєстрі вводу-виводу очищений | якщо (P(b)=0) ПК ← ПК + 2 або 3 | Жодного | 1 |
СБІС | Р, б | Пропустити, якщо встановлено біт у реєстрі вводу-виводу | якщо (P(b)=1) ПК ← ПК + 2 або 3 | Жодного | 1 |
БРБС | с, к | Відділення, якщо встановлено прапор статусу | якщо (SREG(s) = 1), то PC ←PC+k + 1 | Жодного | 1/2 |
BRBC | с, к | Відділення, якщо прапор стану знято | якщо (SREG(s) = 0), то PC ←PC+k + 1 | Жодного | 1/2 |
БРЕК | k | Розгалуження, якщо рівне | якщо (Z = 1), то PC ← PC + k + 1 | Жодного | 1/2 |
БРНЕ | k | Розгалуження, якщо нерівно | якщо (Z = 0), то PC ← PC + k + 1 | Жодного | 1/2 |
BRCS | k | Відділення, якщо нести набір | якщо (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 |
ІМРМ | k | Гілка, якщо мінус | якщо (N = 1), то PC ← PC + k + 1 | Жодного | 1/2 |
БРПЛ | k | Відділення якщо Плюс | якщо (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 |
БРЦ | k | Відділення, якщо встановлено прапор T | якщо (T = 1), то PC ← PC + k + 1 | Жодного | 1/2 |
BRTC | k | Відділення, якщо прапор T знято | якщо (T = 0), то PC ← PC + k + 1 | Жодного | 1/2 |
БРВС | k | Відділення, якщо встановлено прапор переповнення | якщо (V = 1), то PC ← PC + k + 1 | Жодного | 1/2 |
BRVC | k | Гілка, якщо прапор переповнення очищений | якщо (V = 0), то PC ← PC + k + 1 | Жодного | 1/2 |
БРІ | k | Розгалуження, якщо переривання увімкнено | якщо ( I = 1), то PC ← PC + k + 1 | Жодного | 1/2 |
НОМЕР | k | Відділення, якщо переривання вимкнено | якщо ( I = 0), то PC ← PC + k + 1 | Жодного | 1/2 |
ІНСТРУКЦІЇ З БІТУ ТА ТІСТУ | |||||
SBI | Р, б | Встановити біт в реєстрі вводу-виводу | 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 |
ЛСР | Rd | Логічний зсув вправо | Rd(n) ← Rd(n+1), Rd(7) ← 0 | Z, C, N, V | 1 |
РОЛЬ | Rd | Поворот вліво за допомогою Carry | Rd(0)←C,Rd(n+1) ← Rd(n),C←Rd(7) | Z, C, N, V | 1 |
ROR | Rd | Поворот вправо через перенесення | 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 |
Мнемотехніка | Операнди | опис | Операція | Прапори | # Годинники |
ОБМІН | Rd | Поміняйте місцями гризки | Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) | Жодного | 1 |
BSET | s | Прапор встановити | SREG(s) ← 1 | SREG (s) | 1 |
BCLR | s | Прапор чіткий | SREG(s) ← 0 | SREG (s) | 1 |
BST | Рр, б | Біт-магазин від Реєстрації до Т | T ← Rr(b) | T | 1 |
BLD | Рд, б | Бітове навантаження від Т до Реєстру | Rd(b) ← T | Жодного | 1 |
SEC | Набір Carry | З ← 1 | C | 1 | |
CLC | Clear Carry | З ← 0 | C | 1 | |
SEN | Встановити негативний прапор | N ← 1 | N | 1 | |
CLN | Очистити негативний прапор | N ← 0 | N | 1 | |
СЕЗ | Встановити нульовий прапор | Z ← 1 | Z | 1 | |
CLZ | Очистити нульовий прапор | Z ← 0 | Z | 1 | |
SEI | Глобальне ввімкнення переривання | Я ← 1 | I | 1 | |
CLI | Вимкнути глобальне переривання | Я ← 0 | I | 1 | |
СЕС | Встановити підписаний тестовий прапор | S ← 1 | S | 1 | |
CLS | Очистити підписаний тестовий прапор | S ← 0 | S | 1 | |
SEV | Встановити переповнення доповнення двійки. | V ← 1 | V | 1 | |
CLV | Очистити переповнення доповнення двох | V ← 0 | V | 1 | |
НАБІР | Встановіть T в SREG | Т ← 1 | T | 1 | |
CLT | Ясно T в SREG | Т ← 0 | T | 1 | |
SEH | Встановити прапор напівнесу в SREG | Ч ← 1 | H | 1 | |
CLH | Очистити половину носіння прапора в SREG | Ч ← 0 | H | 1 | |
ІНСТРУКЦІЯ З ПЕРЕДАЧИ ДАНИХ | |||||
MOV | Rd, Rr | Переміщення між реєстрами | Rd ← Rr | Жодного | 1 |
MOVW | Rd, Rr | Копіювати реєстр Word | Rd+1:Rd ← Rr+1:Rr | Жодного | 1 |
LDI | Рд, К | Навантаження негайне | Rd ← K | Жодного | 1 |
LD | Рд, Х | Навантаження непряме | Rd ← (X) | Жодного | 2 |
LD | Rd, X + | Завантажити непрямі та пост-інк. | Rd ← (X), X ← X + 1 | Жодного | 2 |
LD | Rd, - X | Завантажити непрямі та попередні грудні. | X ← X – 1, Rd ← (X) | Жодного | 2 |
LD | Рд, Ю | Навантаження непряме | Rd ← (Y) | Жодного | 2 |
LD | Rd, Y + | Завантажити непрямі та пост-інк. | Rd ← (Y), Y ← Y + 1 | Жодного | 2 |
LD | Rd, - Y | Завантажити непрямі та попередні грудні. | Y ← Y – 1, Rd ← (Y) | Жодного | 2 |
LDD | Rd, Y + q | Навантаження непряме з переміщенням | Rd ← (Y + q) | Жодного | 2 |
LD | Рд, З | Навантаження непряме | Rd ← (Z) | Жодного | 2 |
LD | Rd, Z + | Завантажити непрямі та пост-інк. | Rd ← (Z), Z ← Z+1 | Жодного | 2 |
LD | Рд, -З | Завантажити непрямі та попередні грудні. | 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 | Зберігати непрямі та пост-інк. | (X) ← Rr, X ← X + 1 | Жодного | 2 |
ST | - X, Rr | Зберігати непрямі та до грудня. | X ← X – 1, (X) ← Rr | Жодного | 2 |
ST | Y, Rr | Зберігати непрямо | (Y) ← Rr | Жодного | 2 |
ST | Y +, Rr | Зберігати непрямі та пост-інк. | (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 | Зберігати непрямі та пост-інк. | (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 + | Завантажте програмну пам’ять та Post-Inc | Rd ← (Z), Z ← Z+1 | Жодного | 3 |
SPM | Зберігання пам'яті програм | (z) ← R1:R0 | Жодного | ||
IN | Рд, П | У порту | Rd ← P | Жодного | 1 |
OUT | P, Rr | Вихідний порт | P ← Rr | Жодного | 1 |
НАТИСНІТЬ | Rr | Натисніть Реєстрація на стеку | СТОП ← Рр | Жодного | 2 |
POP | Rd | Поп реєстр зі стека | Rd ← СТЕК | Жодного | 2 |
ІНСТРУКЦІЯ З КОНТРОЛЮ MCU | |||||
NOP | Без операції | Жодного | 1 | ||
СПАТИ | сон | (див. опис функції сну) | Жодного | 1 | |
WDR | Скидання сторожового пса | (див. конкретний опис для WDR / Таймер) | Жодного | 1 | |
ПЕРЕРВА | Перерва |
Швидкість (МГц) (1) | Постачання Voltagе (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 | |||
20M1 | 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 | |||
20M1 | ATtiny45-20MU ATtiny45-20MUR |
Примітки: 1. Для швидкості в порівнянні з подачею обtage, див. розділ 21.3 “Швидкість” на сторінці 163.
Усі упаковки не містять Pb, не містять галогенідів, повністю зелені та відповідають Європейській директиві щодо обмеження небезпечних речовин (RoHS).
Кодові індикатори
H: свинцеве покриття NiPdAu
U: матова олова
R: стрічка та котушка
Ці пристрої також можуть поставлятися у формі вафель. Будь ласка, зв'яжіться з місцевим відділом продажу Atmel, щоб отримати детальну інформацію про замовлення та мінімальну кількість.
Еррата
Помилка ATtiny25
Лист про перегляд у цьому розділі стосується перегляду пристрою ATtiny25.
Преподобний D - F
Невідомої помилки.
Преподобний B - C
Зчитування EEPROM може вийти з ладу при низькому обсязі живленняtage / низька тактова частота
Зчитування EEPROM може вийти з ладу при низькому обсязі живленняtage / низька тактова частота
Спроба прочитати EEPROM на низьких тактових частотах та/або низькому обсязі живленняtage може призвести до недійсних даних.
Виправлення / вирішення проблеми
Не використовуйте EEPROM, коли тактова частота нижче 1 МГц і об’єм живленняtage нижче 2В. Якщо робоча частота не може бути піднята вище 1 МГц, тоді подача обtage має бути більше 2В. Аналогічно, якщо обсяг пропозиції обtage не можна підвищувати вище 2 В, тоді робоча частота повинна бути більше 1 МГц.
Відомо, що ця особливість залежить від температури, але вона не була охарактеризована. Вказівки наведені лише для кімнатної температури.
Преподобний А
Не сampсвітлодіодний.
Помилка ATtiny45
Лист про перегляд у цьому розділі стосується перегляду пристрою ATtiny45.
Rev F - G
Невідомої помилки
Зміст D - E
Зчитування EEPROM може вийти з ладу при низькому обсязі живленняtage / низька тактова частота
Зчитування EEPROM може вийти з ладу при низькому обсязі живленняtage / низька тактова частота
Спроба прочитати EEPROM на низьких тактових частотах та/або низькому обсязі живленняtage може призвести до недійсних даних.
Виправлення / вирішення проблеми
Не використовуйте EEPROM, коли тактова частота нижче 1 МГц і об’єм живленняtage нижче 2В. Якщо робоча частота не може бути піднята вище 1 МГц, тоді подача обtage має бути більше 2В. Аналогічно, якщо обсяг пропозиції обtage не можна підвищувати вище 2 В, тоді робоча частота повинна бути більше 1 МГц.
Відомо, що ця особливість залежить від температури, але вона не була охарактеризована. Вказівки наведені лише для кімнатної температури.
Преподобний B - C
PLL не блокується
Зчитування EEPROM із коду програми не працює в режимі блокування бітів 3
Зчитування EEPROM може вийти з ладу при низькому обсязі живленняtage / низька тактова частота
Таймер лічильника 1 генерація вихідного сигналу ШІМ на OC1B-XOC1B працює неправильно
PLL не блокується
При частотах нижче 6.0 МГц ФАПЧ не блокується
Вирішення проблеми / вирішення проблеми
При використанні PLL працюйте на частоті 6.0 МГц або вище.
Зчитування EEPROM із коду програми не працює в режимі блокування бітів 3
Коли біти блокування пам'яті LB2 і LB1 запрограмовані на режим 3, зчитування EEPROM не працює з коду програми.
Вирішення проблеми / вирішення проблеми
Не встановлюйте Lock Bit Protection Mode 3, коли код програми потрібно прочитати з EEPROM.
Зчитування EEPROM може вийти з ладу при низькому обсязі живленняtage / низька тактова частота
Спроба прочитати EEPROM на низьких тактових частотах та/або низькому обсязі живленняtage може призвести до недійсних даних.
Виправлення / вирішення проблеми
Не використовуйте EEPROM, коли тактова частота нижче 1 МГц і об’єм живленняtage нижче 2В. Якщо робоча частота не може бути піднята вище 1 МГц, тоді подача обtage має бути більше 2В. Аналогічно, якщо обсяг пропозиції обtage не можна підвищувати вище 2 В, тоді робоча частота повинна бути більше 1 МГц.
Відомо, що ця особливість залежить від температури, але вона не була охарактеризована. Вказівки наведені лише для кімнатної температури.
Генерація вихідних даних ШІМ-лічильника таймера 1 на OC1B - XOC1B працює неправильно
Лічильник таймера1 ШІМ-вихід OC1B-XOC1B працює неправильно. Тільки у випадку, коли контрольні біти COM1B1 та COM1B0 перебувають у тому самому режимі, що і COM1A1 та COM1A0, результат OC1B-XOC1B працює коректно.
Вирішення проблеми / вирішення проблеми
Єдиним обхідним шляхом є використання однакових налаштувань керування для бітів керування COM1A [1: 0] та COM1B [1: 0], див. Таблицю 14-4 у технічному паспорті. Проблему вирішено для Tiny45 rev D.
Преподобний А
Занадто велике споживання енергії
DebugWIRE втрачає зв’язок при єдиному вступі в переривання
PLL не блокується
Зчитування EEPROM із коду програми не працює в режимі блокування бітів 3
Зчитування EEPROM може вийти з ладу при низькому обсязі живленняtage / низька тактова частота
Занадто велике споживання енергії
Три ситуації призведуть до занадто високого споживання енергії. Це:
Зовнішній тактовий сигнал вибирається запобіжниками, але порт вводу / виводу все ще ввімкнено як вихід.
EEPROM зчитується перед введенням живлення.
VCC становить 4.5 вольт або вище.
Відмова від відповідальності: інформація в цьому документі надається стосовно продуктів Atmel. У цьому документі чи у зв’язку з продажем продуктів Atmel не надається жодна ліцензія, явна чи неявна, шляхом припинення дії чи іншим чином, на будь-які права інтелектуальної власності. КРІМ ВИПАДКІВ, ВИКЛАДЕНИХ В ПОЛОЖЕННЯХ ТА УМОВАХ ПРОДАЖУ ATMEL, РОЗМІЩЕНИХ НА ATMEL WEBСАЙТУ, ATMEL НЕ НЕСЕ ЖОДНОЇ ВІДПОВІДАЛЬНОСТІ ТА ВІДМОВЛЯЄТЬСЯ БУДЬ-ЯКИХ ПРЯМИХ, НЕПРЯМИХ АБО СТАТУТНИХ ГАРАНТІЙ ЩОДО ЇЇ ПРОДУКЦІЇ, ВКЛЮЧАЮЧИ, АЛЕ НЕ ОБМЕЖУЮЧИСЬ, НЕПРЯМУЮ ГАРАНТІЮ ПРИДАТНОСТІ ДЛЯ ПРОДАЖУ, ВІДПОВІДНОСТІ ДЛЯ КОНКРЕТНОЇ МЕТИ АБО ВІДСУТНОСТІ ПРАВ. КОМПАНІЯ ATMEL У ЖОДНОМУ ВИПАДКУ НЕ НЕСЕ ВІДПОВІДАЛЬНОСТІ ЗА БУДЬ-ЯКІ ПРЯМІ, НЕПРЯМІ, ПОБІЧНІ, ШТРАФНІ, СПЕЦІАЛЬНІ АБО ВИПАДКОВІ ЗБИТКИ (ВКЛЮЧАЮЧИ, НЕ ОБМЕЖУЮЧИСЬ, ЗБИТКИ ВІД ВТРАТ ТА ПРИБУТКІВ, ПЕРЕРВИ У ДІЯЛЬНОСТІ АБО ВТРАТИ ІНФОРМАЦІЇ), ЩО ВИНИКАЮТЬ Внаслідок ВИКОРИСТАННЯ АБО НЕМОЖЛИВОСТІ ЦЕЙ ДОКУМЕНТ, НАВІТЬ ЯКЩО ATMEL БУЛО ПОВІДОМЛЕНО ПРО МОЖЛИВІСТЬ ТАКИХ ЗБИТКІВ.
Компанія Atmel не робить жодних заяв або гарантій щодо точності чи повноти вмісту цього документа та залишає за собою право вносити зміни до специфікацій та опису продуктів у будь-який час без попередження. Atmel не бере на себе жодних зобов’язань щодо оновлення інформації, що міститься в цьому документі. Якщо не зазначено інше, продукти Atmel не підходять і не повинні використовуватися в автомобільних додатках. Продукти Atmel не призначені, не дозволені та не надаються гарантії для використання як компонентів у програмах, призначених для підтримки чи підтримки життя.