Статьи

AVR-мікроконтролери другого покоління:

За час свого відносно недовгого існування (з 1997 року) мікроконтролери сімейства AVR (серія AT90S) фірми Atmel Corp. набули надзвичайної популярності у світі і в Росії. 2001 рік став переломним більше половини російських розробок з використанням 8-розрядних мікроконтролерів було створено саме на AVR. На сьогоднішній день триває розвиток в тому ж напрямку. Це легко пояснити: завдяки дуже вдалою архітектурі ядра процесора і широкому набору периферійних модулів на кристалі істотно полегшується процес програмування кінцевого пристрою. Ще одним фактором, привабливим для розробників, став випуск в 2002 році AVR-мікроконтролерів наступного покоління. Ці мікросхеми виробляються за технологічними нормами 0,35 мкм, на відміну від перших AT90S, що випускаються за технологією 0,5 мкм. Помітна відмінність - збільшена в два рази тактова частота нових контролерів - 16 МГц, що забезпечує продуктивність до 16 MIPS, (типова команда у AVR-контролерів виконується за один період тактової частоти), але це, як то кажуть, вершина айсберга.

Помітна відмінність - збільшена в два рази тактова частота нових контролерів - 16 МГц, що забезпечує продуктивність до 16 MIPS, (типова команда у AVR-контролерів виконується за один період тактової частоти), але це, як то кажуть, вершина айсберга

Фірма ATMEL щорічно влаштовує семінари для дистриб'юторів. Зазвичай семінар проходить протягом 5 робочих днів. На семінарі, який проходив в кінці березня 2003 року, AVR-мікроконтролерів було виділено понад півтора днів - більше, ніж будь-якого іншого направленію.Основную інформацію по цим мікроконтролерів представляв Інгар Фредріксен (Ingar Fredriksen) (рис.1) з норвезького відділення ATMEL (варто нагадати, що ядро ​​цих RISC-мікроконтролерів розробили 2 норвежця, імена яких і закладені в абревіатурі AVR).

Коли фірма ATMEL почала випуск принципово нового сімейства 8-бітних мікроконтролерів, побудованих на базі RISC-архітектури з розширеним набором команд, вона умовно розбила їх на три підродини: tiny, classic і mega. Всі мікросхеми мають ідентичне ядро ​​з реєстрових файлом з тридцяти двох 8-бітних регістрів загального призначення і вбудоване Flash-ПЗУ ємністю від 1 до 128 кбайт. Узагальнена функціональна схема AVR-мікроконтролера представлена ​​на рис.2.

Ширина шини команд становить 16 біт.5-бітове поле адреси регістра забезпечує доступ до будь-якого з 32 регістрів загального призначення. В результаті цих схемотехнік стало можливим відмовитися від многобанковую організації регістрів загального призначення і сторінкової адресації пам'яті. Крім полегшення життя програміста, пише на асемблері, така архітектура поз, воліла створити високоефективні компілятори мови С, що генерують компактний код.

Мікросхеми в підродини в основному відрізнялися обсягом пам'яті і кількістю портів введення-виведення. Так, мікроконтролери tiny мали обсяг Flash-ПЗУ 1 -2 кбайт і корпус 8 -20 висновків (за винятком tiny28), classic-обсяг Flash-ПЗУ 2 -8 кбайт і корпус 28 -44 виведення, а mega - 128 кбайт і корпус 64 виведення.

Всі мікросхеми дозволяють виробляти перепрограмування пам'яті програм безпосередньо в системі.

З моменту початку виробництва в 1997 році щорічний обсяг випуску AVR-мікроконтролерів неухильно збільшується. На рис.3 представлені відповідні показники. Для довідки: у 2002 році було випущено більше 100 мільйонів мікросхем.

Для довідки: у 2002 році було випущено більше 100 мільйонів мікросхем

З випуском мікроконтролерів другого покоління в позиціонуванні подсемейств відбулися зміни. Нові мікросхеми містять тільки два підродини: tiny і mega. Мікросхеми tiny як і раніше мають Flash-ПЗУ 1 -2 кбайт і корпусу 8 -20 висновків, а ось ряд mega істотно розширився: Flash-ПЗУ 8 -128 кбайт і корпус 28 -64 виведення. Фактично відбулося поглинання підродини classic. Короткі характеристики мікросхем представлені в таблиці 1.

Таблиця 1

Мікросхема ПЗУ програм, кбайт ОЗУ ЕСПЗУ Таймери Ост. порти АЦП Корпус, кількість висновків Сумісність ATtiny26 / L 2 128 Б 128 Б 2 USI 11 вх. 20 немає ATmega8 / L 8 1 КБ 512 Б 3 USART 6/8 вх. 28,32 AT90S4433 ATmega8515 / L 8 512 Б 512 Б 2 USART немає 40,44 AT90S8515 ATmega8535 / L 8 512 Б 512 Б 2 USART 8 вх. 40,44 AT90S8535 ATmega16 / L 16 1 КБ 512 Б 3 USART 8 вх. 40,44 ATmega163 ATmega162L / V 16 1 КБ 512 Б 4 2 USART немає 40,44 ATmega161 ATmega169L / V 16 1 КБ 512 Б 3 USART 8 вх. 40,44 немає ATmega32 / L 32 2 Кб 1 Б 3 USART 8 вх. 40,44 ATmega323 ATmega64 / L 64 4 Кб 2 Б 4 2 USART 8 вх. 64 ATmega103 ATmega128 / L 128 4 Кб 4 Кб 4 2 USART 8 вх. 64 ATmega103

З аналізу таблиці можна бачити наступне. Для кожної мікросхеми classic є «дублер» mega в ідентичному корпусі. Таким чином, в існуючій розробці, наприклад, замість AT90S8515 можна використовувати мікроконтролер ATmega8515, отримавши при цьому переваги у вигляді збільшення швидкості процесора, додавання команд множення і розширених характеристик послідовних портів. До речі, якщо тактова частота контролера в усторйстве не перевищує 8 МГц, рекомендується використовувати «дублер» версії «L». Це пояснюється тим, що діапазон напруг живлення цих мікросхем становить 2,7 -5,5 В, і таким чином, підвищується перешкодозахищеність пристрою: йому не будуть страшні короткочасні (а в ряді випадків і довготривалі) провали в харчуванні до рівня 2,7 В . Для кожного типу мікроконтролера існує файл, де детально описані відмінності кристалів першого і другого поколінь. Як правило, при заміні мікроконтролера потрібно перекомпіляція вихідного коду програми, проте в більшості випадків це є механічною операцією заміни рядка з ім'ям відповідного підключається файлу (в даному прикладі - 8515def.inc на m8515def.inc). В ряду нових AVR-мікроконтролерів відсутній представник з ємністю пам'яті програм 4 кбайт. Це пояснюється тим, що молодший кристал в сімействі mega - мікроконтролер ATmega8 з пам'яттю програм 8 кбайт - має ціну навіть нижче, ніж 4-кілобайтний прототип - мікроконтролер AT90S4433.

У підродини tiny випущена цікава мікросхема другого покоління - ATtiny26. Цей кристал при ціні менш $ 2 містить високошвидкісний ШІМ, а також 11-канальний АЦП з можливістю роботи в диференціальному режимі, з регульованим вхідним підсилювачем і вбудованим джерелом опорного напруги.

Нижче наведені основні характеристики нових AVR-мікроконтролерів:

  • тактова частота до 16 МГц, час виконання команди 62,5 нс;
  • вбудований програмований RC-генератор, частота 1, 2, 4, 8 МГц;
  • Flash-ПЗУ програм, програмований в системі, до 128 кбайт (10 000 циклів перезапису);
  • електрично перепрограммируемое ПЗУ даних до 4 кбайт (100 000 циклів перезапису);
  • внутрішнє ОЗУ з часом доступу 1 такт, до 4 кбайт;
  • потужний набір команд (понад 120 інструкцій);
  • 6 апаратних команд множення (для сімейства mega);
  • розвинена система адресації, оптимізована для роботи з С-компіляторами;
  • 32 регістра загального призначення (акумулятора);
  • синхронний (USART) або асинхронний (UART) послідовні порти;
  • синхронний послідовний порт (SPI);
  • двопровідний інтерфейс TWI, сумісний з інтерфейсом I2C;
  • багатоканальний 8-, 9-, 10-, 16-бітний ШІМ-модулятор;
  • 10-бітний АЦП з часом перетворення 70 мкс і диференціальними входами;
  • програмований коефіцієнт посилення - 1; 10 або 200;
  • вбудований джерело опорного напруги 2,56 В;
  • аналоговий компаратор;
  • сторожовий таймер;
  • настроюється схема затримки запуску після подачі живлення;
  • схема стеження за рівнем напруги живлення;
  • JTAG-інтерфейс для підключення емулятора (в мікросхемах з об'ємом ПЗУ від 16 кбайт);
  • Мікропотужні споживання (менше 100 мкА в активному режимі на частоті 32 кГц).

Повний технічний опис AVR-мікроконтролера становить кілька сотень сторінок, тому в рамках даної статті є можливість поговорити тільки про основні особливості. Архітектуру мікроконтролерів нового покоління зручно розглядати на старшому представника сімейства - ATmega128, так як в ньому присутній весь набір периферійних модулей.Ітак, чим цікавий цей мікроконтролер?

система тактирования

По перше, ATmega128 , як і інші AVR-мікроконтролери другого покоління, мають розширену, досить гнучку структуру тактирования. Як формувача тактового сигналу можуть бути використані наступні джерела (рис.4):

  • високочастотний або низькочастотний кварцовий резонатор ;
  • пьезорезонатор;
  • зовнішня RC-ланцюжок;
  • внутрішній настроюється RC-генератор;
  • зовнішнє джерело тактових імпульсів.

високочастотний або низькочастотний   кварцовий резонатор   ;   пьезорезонатор;   зовнішня RC-ланцюжок;   внутрішній настроюється RC-генератор;   зовнішнє джерело тактових імпульсів

З наведеної схеми видно, що всередині кристала використовується кілька ланцюгів тактирования. Така побудова дозволяє при необхідності відключати невикористовувані ланцюга, що знижує споживаний мікросхемою струм.

Вибір способу тактирования проводиться установкою відповідних настановних бітів (fuse bits) CKSEL0 ... CKSEL3 при програмуванні мікросхеми. Ці установчі біти керують також затримкою включення мікроконтролера після виходу зі стану очікування. У таблиці 2 наведені варіанти установок цих бітів.

Таблиця 2

CKSEL3 ... 0 Джерело тактирования Коментар 0000 Зовнішня частота 0 ... 16 МГц 0001 Вбудований RC генератор 1 МГц 0010 Вбудований RC генератор 2 МГц 0011 Вбудований RC генератор 4 МГц 0100 Вбудований RC генератор 8 МГц 0101 Зовнішній RC генератор <0,9 МГц 0110 Зовнішній RC генератор 0,9 ... 3,0 МГц 0111 Зовнішній RC генератор 3,0 ... 8,0 МГц 1000 Зовнішній RC генератор 8,0 ... 12 МГц 1001 Низькочастотний пьезорезонатор 32,768 кГц 101х Кварцовий резонатор 0, 4 ... 0,9 МГц 110х Кварцовий резонатор 0,9 ... 3,0 МГц 111х Кварцовий резонатор 3,0 ... 8,0 МГц

Таке різноманіття можливостей часом призводить до курйозів. Відомо, на жаль, що не всі розробники уважно читають технічні описи на нові мікросхеми, що призводить до невірних дій при програмуванні мікросхем і необхідності дослідження проблеми «а чому мікросхема не працює».

Типова помилка - невірна установка бітів CKSEL0 ... CKSEL3. У разі установки цих бітів «в нулі» (0000) мікросхема переходить в режим роботи від зовнішнього генератора. Таким чином, навіть підключений кварцовий або пьезорезонатор не "запускає» мікросхему. Єдиний вихід «оживити» мікроконтролер - подати на висновок XTAL1 зовнішні імпульси з частотою 0,5 -16 МГц, що не випаюючи його зі схеми, і правильно переустановити біти CKSEL0 ... CKSEL3.

Принагідно слід зазначити, що мікросхеми поставляються з установочними битами, встановленими для роботи від вбудованого RC-генератора з частотою 1 МГц, т аким чином, просте підключення зовнішнього кварцу не дає очікуваного ефекту. Вбудований RC-генератор має досить хороші характеристики, нестабільність по температурі составляетт 3 -4% в діапазоні -40 ... + 85 ° С, нестабільність по харчуванню в діапазоні від 3,3 до 5,0 В - 4 -5%.

На рис.5 показано початкове, «заводське», стан настановних бітів мікросхеми ATmega128.

Розглянемо більш докладно набір настановних бітів. Біти захисту не потребують коментарів, їх функції очевидні.

Біти BLB0x BLB1x відповідають за захист від читання і модифікації даних в основній пам'яті програм і завантажувальному блоці відповідно.

Два біта SUT (startup time) визначають затримку пуску мікроконтролера. Це важливо при використанні задають кварцових резонаторів з великим часом виходу на режім.Для таких кварців можна встановити затримку до 65 мс.

Біти BOD (brown out detector) і BODLEVEL управляють схемою спостереження за харчуванням. Ця схема «спостерігає» за рівнем напруги живлення мікроконтролера, і, в разі зниження цього рівня нижче порога на час більше 2 мкс, виробляє перезапуск контролера. Гранична напруга становить 4,0 або 2,7 В, в залежності від стану біта BODLEVEL.

Біти BOOTSZ0 і BOOTSZ1 служать для настройки розміру boot-блоку, від 1 до 4 сторінок пам'яті. Сторінка пам'яті в різних мікросхемах має ємність від 256 байт до 2 кбайт. Це дозволяє більш раціонально використовувати простір пам'яті програм.

Біт CKOPT виконує різні функції, в залежності від типу використовуваного генератора, що задає. Якщо це кварцовий разонатор, біт CKOPT відповідає за настройку коефіцієнта посилення вбудованої схеми генератора. Якщо використовується генератор з частотою вище 8 МГц, рекомендується активізувати цей біт, якщо ж в системі використовується кварц на частоту 8 МГц і менш, біт CKOPT можна скинути. В результаті зменшиться споживаний мікро контролером ток і знизиться електромагнітне випромінювання ланцюгів генератора. Якщо ж в якості генератора, що задає використовується «вартовий» пьезорезонатор на частоту 32,768 кГц, при програмуванні біта CKOPT до висновків XTAL1 XTAL2 підключаються внутрішні конденсатори номіналом 36 пФ, що знімає необхідність використання додаткових компонентів.

Біт SPIEN дозволяє послідовне програмування-читання мікросхеми, і біти JTAGEN OCDEN відповідно активізують JTAG-інтерфейс і дозволяють роботу вбудованих налагоджувальних ланцюгів. Біт OCDEN вимагає уважного до себе ставлення, так як при його активному стані деякі внутрішні ланцюга тактирования не відключати, що призводить до підвищеного споживання потужності в режимі очікування.

Заключний біт, М103С, слід розглянути більш детально. Як уже згадувалося вище, мікросхема ATmega128 має на кристалі істотно більше периферійних модулів, ніж її прототип - мікросхема ATmega103. Отже, на кристалі значно збільшилася кількість керуючих регістрів - замість 64 їх стало 224. У традиційних мікроконтролерах в такому випадку організовувалася додаткова сторінка регістрів, проте AVR-архітектура грунтується на лінійній адресації для прискорення доступу до даних. Відповідно до цієї концепції новий масив регістрів розміщений безпосередньо за масивом базових регістрів, а початкова адреса внутрішнього ОЗУ зрушать на 160 байт, що відображено на карті пам'яті (рис.6).

6)

Конфігурація А відповідає мікросхемі ATmega128, а конфігурація В - мікросхемі ATmega103.

Якщо мікросхему ATmega128 встановлюють в раніше розроблений пристрій, і її додаткові функції не використовуються, слід встановити біт М103С, і тоді вона буде працювати в режимі емуляції ATmega103. При цьому не треба забувати про правильну установку бітів CKSEL0 ... CKSEL3!

Універсальність AVR-мікроконтролерів полягає в гнучкому побудові кристала - ідентичне ядро ​​і різноманітний набір периферійних модулів. Таким чином, можна використовувати програми, написані для однієї мікросхеми, в якості основи програми інший, з більш розвиненою периферією. Наприклад, налагоджена програма, написана для мікросхеми ATtiny26, може служити основою програми для мікросхеми ATmega32 - потрібно лише додати функції, які використовують нові ресурси і перекомпіліровать вихідний текст.

система переривань

Система переривань AVR-мікроконтролерів обслуговує кілька джерел. У молодших адресах пам'яті програм знаходиться таблиця переривань, в якій записуються вектора для кожного з обслуговуваних переривань. Кожне переривання має індивідуальний біт дозволу, також є біт загального дозволу переривань. Вектор переривання займає один або два адреси пам'яті програм в залежності від розміру пам'яті конкретного мікроконтролера (слід ще раз зазначити, що шина команд - 16-розрядна). Переривання, розміщені по молодшим адресами, мають більш високий пріоритет, в нульовому адресу таблиці знаходиться вектор переривання «Скидання».

У звичайному режимі після зняття сигналу низького рівня на вході «Скидання» починає виконуватися програма по вектору, вказаною в нульовому адресу. Якщо ж встановлено інсталяційний біт завантажувача BOOTRST, по скиданню стартує програма, розміщена в завантажувальної області пам'яті мікроконтролера. Ця функція дозволяє, наприклад, завантажувати в ПЗУ дві різні програми, і, керуючи станом біта BOOTRST, запускати будь-яку з них без перепрограмування всього обсягу Flash-пам'яті.

Нижче представлений фрагмент коду із зазначенням назв векторів переривань мікросхеми ATmega128. З тридцяти п'яти векторів вісім (з іменами EXT_INT0 ... EXT_INT7) є зовнішніми, інші - внутрішніми.

$ 0000 jmp RESET; Reset Handler $ 0002 jmp EXT_INT0; IRQ0 Handler $ 0004 jmp EXT_INT1; IRQ1 Handler $ 0006 jmp EXT_INT2; IRQ2 Handler $ 0008 jmp EXT_INT3; IRQ3 Handler $ 000A jmp EXT_INT4; IRQ4 Handler $ 000C jmp EXT_INT5; IRQ5 Handler $ 000E jmp EXT_INT6; IRQ6 Handler $ 0010 jmp EXT_INT7; IRQ7 Handler $ 0012 jmp TIM2_COMP; Timer2 Compare Handler $ 0014 jmp TIM2_OVF; Timer2 Overflow Handler $ 0016 jmp TIM1_CAPT; Timer1 Capture Handler $ 0018 jmp TIM1_COMPA; Timer1 CompareA Handler $ 001A jmp TIM1_COMPB; Timer1 CompareB Handler $ 001C jmp TIM1_OVF; Timer1 Overflow Handler $ 001E jmp TIM0_COMP; Timer0 Compare Handler $ 0020 jmp TIM0_OVF; Timer0 Overflow Handler $ 0022 jmp SPI_STC; SPI Transfer Complete Handler $ 0024 jmp USART0_RXC; USART0 RX Complete Handler $ 0026 jmp USART0_DRE; USART0, UDR Empty Handler $ 0028 jmp USART0_TXC; USART0 TX Complete Handler $ 002A jmp ADC; ADC Conversion Complete Handler $ 002C jmp EE_RDY; EEPROM Ready Handler $ 002E jmp ANA_COMP; Analog Comparator Handler $ 0030 jmp TIM1_COMPC; Timer1 CompareC Handler $ 0032 jmp TIM3_CAPT; Timer3 Capture Handler $ 0034 jmp TIM3_COMPA; Timer3 CompareA Handler $ 0036 jmp TIM3_COMPB; Timer3 CompareB Handler $ 0038 jmp TIM3_COMPC; Timer3 CompareC Handler $ 003A jmp TIM3_OVF; Timer3 Overflow Handler $ 003C jmp USART1_RXC; USART1 RX Complete Handler $ 003E jmp USART1_DRE; USART1, UDR Empty Handler $ 0040 jmp USART1_TXC; USART1 TX Complete Handler $ 0042 jmp TWI; Two-wire Serial Interface Interrupt Handler $ 0044 jmp SPM_RDY; SPM Ready Handler; $ 0046 RESET: ldir16, high (RAMEND); Main program start $ 0047 out SPH, r16; Set stack pointer to top of RAM $ 0048 ldi r16, low (RAMEND) $ 0049 out SPL, r16 $ 004A sei; Enable interrupts $ 004B <instr> xxx

При вході в перериваних біт загального дозволу переривань скидається і всі переривання забороняються. У програмі-обробнику переривання можна знову встановити цей біт, і, таким чином, знову дозволити переривання. В цьому випадку знову надійшла переривання зупиняє роботу обробника поточного переривання. Біт загального дозволу переривань встановлюється при виході з переривання. Існує два типи переривань. Перший тип - критичний, при цьому встановлюється прапорець переривання. Другий тип переривань не має відповідного прапорця, і таке переривання може бути втрачено, якщо в цей час біт загального дозволу переривань був скинутий. Для заборони і дозволу переривань в системі команд є відповідні інструкції - CLI і STI.

Час відгуку на будь-яке переривання займає 4 періоду тактовою частоти. Якщо переривання відбувається під час виконання довгою команди, ця команда коректно завершується до початку обробки переривання. Якщо переривання відбувається в той час, коли контролер знаходився в режимі очікування, додаються ще 4 такту для переходу контролера в активний режим. Повернення з переривання також займає 4 періоду тактовою частоти.

Розглянемо периферійні модулі, які входять до складу мікросхеми ATmega128.

Таймери-лічильники

ATmega128 має на борту 4 таймера-лічильника. Два 8-розрядних лічильника з незалежними вхідними дільниками і режимами порівняння. Наступна пара лічильників - 16-розрядні, на додаток до раніше зазначеним функціям мають режими порівняння й захвата. Один 8-розрядний лічильник може використовуватися як таймер годин реального часу. Для цього на вході лічильника є мікропотужний генератор, до якого безпосередньо можна підключити «вартовий» кварц. Основна функція цього лічильника - формування довгих інтервалів часу, максимальний період - 8 секунд. На базі таймерів-лічильників побудовані широтно-імпульсні модулятори, причому 2 канали ШІМ 8-розрядні, і 6 каналів - з програмованої розрядністю від 2 до 16 біт.

На базі таймерів-лічильників побудовані широтно-імпульсні модулятори, причому 2 канали ШІМ 8-розрядні, і 6 каналів - з програмованої розрядністю від 2 до 16 біт

модуль АЦП

Багато AVR-мікроконтролери мають вбудований аналого-цифровий перетворювач. У мікросхем Atmega8535 / 16/32 через невеликої кількості висновків довелося пожертвувати можливістю роботи з зовнішнім ОЗУ, однак ATmega128 не має такого обмеження.

До складу мікросхеми входить 8-канальний 10-бітний АЦП з часом перетворення 65 мкс на канал. Інтегральна нелінійність АЦП становить 0,5 одиниці молодшого розряду. АЦП може працювати в наступних режимах:

  • 8-канальний з поодинокими входами;
  • 7-канальний псевдодіфференціальних;
  • 2-канальний диференційний з програмованим вхідним підсилювачем (1х, 10х і 200х).

Також на кристалі є джерело опорного напруги 2,56 В. Максимальна напруга на аналогових входах не повинно перевищувати рівень аналогового напруги харчування AVCC. Процес аналого-цифрового перетворення в сталому режимі займає 13 тактів генератора.

Структурна схема модуля АЦП представлена ​​на рис.9.

9

послідовні порти

Мікроконтролер ATmega128 щедро оснащений портами введення-виведення. Стандартно він має 7 паралельних портів: 8-розрядні A, B, C, D, E, F і 5-розрядний порт G. Однак, відповідно до загальної тенденції переходу на послідовні комунікаційні інтерфейси, ATmega128 підтримує зв'язок із зовнішнім світом через кілька послідовних портів. Природно, в силу обмеженого кількості висновків корпусу мікросхеми ATmega128, багато висновків мають кілька альтернативних режимів. Короткий опис портів представлено в таблиці 3.

Таблиця 3

Назва порту Швидкість обміну Число ліній зв'язку UART / USART0 до 2 Мбод 2/3 UART / USART1 до 2 Мбод 2/3 SPI, Master / Slave до 8 Мбод 3/4 TWI, Multi master до 400 кбод 2 JTAG IEEE std 4

Примітка: порт TWI апаратно реалізує інтерфейс I2C

Характеристики порту USART:

  • повнодуплексний обмін;
  • асинхронні або синхронні операції;
  • подвійна швидкість обміну в асинхронному режимі;
  • робота в багатопроцесорної конфігурації;
  • тактирование від контролера або периферійного пристрою;
  • генератор частоти обміну з високою роздільною здатністю;
  • робота зі словами 5, 6, 7, 8 або 9 біт даних і 1 або 2 степових битами;
  • апаратний генератор біта паритету;
  • визначення помилки передачі пакета;
  • вхідний фільтр, що знижує вплив шуму;
  • три незалежних переривання: завершення прийому, завершення передачі, спустошення регістра передачі.

Порт UART / USART, як видно з назви, може працювати або в асинхронному, або в синхронному режимі. У першому випадку використовуються дві лінії, а в другому - три. Робота порту в асинхронному режимі аналогічна роботі UART в AVR-мікроконтролерах першого покоління. Відмінність - в регістрі даних приймача UDR, який став дворівневим, таким чином, можна починати прийом наступного пакета до завершення обробки попереднього. Структурна схема порту USART представлена ​​на рис.10.

Характеристики порту SPI:

  • повнодуплексний синхронний обмін;
  • підтримка режимів Master і Slave;
  • початок передачі зі старшого або молодшого біта;
  • сім програмованих швидкостей передачі;
  • подвоєна швидкість передачі (половина тактової частоти);
  • прапор переривання по закінченні передачі;
  • виявлення помилки запису.

Передача інформації по інтерфейсу SPI є обмін даними між двома закільцьованими зсувними регістрами, один з яких розміщений в пристрої Master, а другий - в пристрої Slave.

Модуль SPI має одиночний буфер на стороні передавача і подвійний буфер на стороні приймача. Це означає, що передається байт не може бути записаний в регістр даних SPI до завершення циклу зсуву.

Прийнятий байт повинен бути лічений з регістра-приймача до того, як завершиться прийом наступного байта, інакше станеться втрата інформації. Структурна схема порту SPI представлена ​​на рис.11.

Характеристики порту TWI:

  • повна сумісність з інтерфейсом I2C;
  • швидкість передачі до 400 кГц;
  • підтримка режимів Master і Slave;
  • 7-розрядний адреса дозволяє використовувати до 128 пристроїв на шині;
  • мікроконтролер може функціонувати як приймач і як передавач;
  • схема обмеження швидкості наростання фронтів вихідних сигналів;
  • захист по входах від шумів і короткочасних помилкових імпульсів;
  • перехід з «сплячого» стану в активне при розпізнаванні адреси звернення.

АЦП може працювати в режимі одиночного запуску або в безперервному режимі. Після закінчення перетворення виробляється відповідне прериваніе.Для отримання максимальної точності вимірювання аналогового сигналу рекомендується на час аналого-цифрового перетворення перевести мікроконтролер в сплячий режим.

Крім АЦП на кристалі є ще аналоговий компаратор. Він порівнює сигнали на входах AIN1 і AIN2. Є можливість подати на інвертується вхід компаратора кожної із вхідних сигналів АЦП.

режими енергозбереження

Режим енергозбереження (режим очікування, «сплячий» режим) дозволяє відключити невживані модулі мікроконтроллера і таким чином знизити енергоспоживання. AVR - мікроконтролери мають кілька режимів очікування, і програміст може вибрати оптимальний режим для конкретного завдання.

Для перекладу контролера в будь-який режим очікування стала помітно меншою встановити біти SM2, SM1 і SM0 в регістрі MCUCR і виконати команду SLEEP. Перелік режимів представлений в таблиці 4.

Таблиця 4

SM2 SM1 SM0 Режим 0 0 0 Idle 0 0 1 ADC Noise Reduction 0 1 0 Power down 0 1 1 Power save 1 1 0 Standby * 1 1 1 Extended Standby * * режими Standby і Extended Standby доступні при роботі з зовнішнім осциллятором

Якщо під час перебування контролера в режимі очікування виникає переривання, контролер переходить в активний режим, і через 4 такту після закінчення періоду «пробудження», необхідні для виконання процедури переривання, продовжує виконання програми з команди, наступної за командою SLEEP. Вміст регістрів і ОЗУ залишається таким же, яким було до «пробудження».

Розглянемо коротко кожен з режимів очікування.

Режим Idle. Зупиняється процесор, але продовжую

Ітак, чим цікавий цей мікроконтролер?

Новости