logo
Mikhaylov / Михайлов-1 / кр микропроц / Задачи на экзамен (Михайлов) / Михайлов экзамен / лекции / часть 4

4.2. Однокристальні avr-мікроконтролери

Однокристальні AVR-мікроконтролери являють 8-розрядні високопро-дуктивні RISC-контролери загального призначення Вони були створені групою розроблювачів дослідницького центру фірми Atmel Corp. (Норвегія), ініціали яких сформували марку AVR. Особливістю AVR-мікроконтролерів є їх широка номенклатура, що дозволяє користувачу вибрати мікроконтролер із мінімальною апаратною надмірністю і, отже, найменшої вартості. Так, наприклад, у номенклатуру групи AT90S входять прилади з ПЗП, об'ємом от 1 до 8 Кбайт, із самими різними наборами периферії й у корпусах із кількістю виводів від 8 до 44. В даний час у серійному виробництві знаходяться три сімейства AVR - Tiny, Classic і Mega . Мікроконтролери Tiny – найбільш дешеві і прості, Mega – найбільш потужні, а Classic - займають проміжне місце між ними.

Розглянемо архітектуру AVR-мікроконтролерів на прикладі МК сімейства Classic – AT90S8535 (рис. 4.2)

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

Подібна побудова вже ближче до структури цифрових сигнальних процесорів і забезпечує істотне підвищення продуктивності. Процесор працює одночасно як із пам'яттю програм, так і з пам'яттю даних; розрядність шини пам'яті програм розширена до 16 біт. В МК AVR використовується технології конвеєрізації, унаслідок чого цикл "вибірка - виконання" команди помітно скорочений. Для порівняння, у мікроконтролерів сімейства MCS51 коротка команда виконується за 12 тактів генератора (1 машинний цикл), протягом якого процесор послідовно зчитує код операції і виконує її. У PIC-контролерах фірми Microchip, де вже реалізований конвеєр, коротка команда виконується протягом 8 періодів тактової частоти (2 машинних цикли). За цей час послідовно дешифрується і зчитується код операції, здійснюється команда, фіксується результат і одночасно зчитується код наступної операції (однорівневий конвеєр). Тому в загальному потоці команд одна коротка команда реалізується за 4 періоди тактової частоти або за один машинний цикл. У МК AVR теж використовується однорівневий конвеєр при звертанні до пам'яті програм і короткі команди в загальному потоці виконується, як і в PIC-контролерах, за один машинний цикл. Головна ж відмінність перебуває в тому, що цей цикл у МК AVR складає усього один період тактової частоти.

Рис. 4.2.- Архітектура мікроконтролера AT90S8535

Регістровий файл займає молодші 32 байта в загальному адресному просторі SRAM AVR, (рис. 4.3). Шість із 32-х регістрів файла можуть використовуватися як три 16-розрядних покажчики адреси при непрямому адресуванні даних. Один із цих покажчиків (Z Pointer) застосовується також для доступу до даних, записаних у пам'яті програм мікроконтролера. Використання трьох 16-бітних покажчиків (X, Y і Z Pointers) істотно підвищує швидкість пересилання даних при роботі прикладної програми.

Рис. 4.3.- Регістровий файл.

Пам'ять програм Усі AVR- мікроконтролери мають Flash-пам'ять програм, що може бути завантажена як за допомогою звичайного програматора, так і за допомоою SPI-інтерфейсу, у тому числі безпосередньо на цільовій платі. Число циклів перезапису - не менше 1000. Деякі версії кристалів сімейства Mega мають можливість само програмування, тобто мікроконтролер здатний самостійно, без зовнішнього програматора, змінювати вміст комірок пам'яті програм. Це дає можливість записати у зовнішню енергонезалежну пам'ять декілька робочих версій програми, а потім у міру необхідності або по реакції на зовнішні або внутрішні логічні умови перевантажувати робочі програми в той же самий мікроконтролер AVR без витягування його з друкарської плати. Для цього весь масив пам'яті програм ділиться на дві нерівні по об'єму області: блок завантажника (програма, що управляє перезаписом Flash-пам'яті програм) і блок для розміщення робочих програм. Програма - завантажник створюється самим розроблювачем і повинна бути запрограмована зовнішнім програматором.

Пам'ять даних. Усі AVR- мікроконтролери мають також блок енергонезалежної пам'яті даних з електричним стиранням EEPROM. Цей тип пам'яті вткористовується збереження проміжних даних, різних констант, таблиць перекодувань, каліброваних коефіцієнтів і т.п. Дані в EEPROM можуть бути завантажені як через SPI інтерфейс, так і за допомогою звичайного програматора. Число циклів перезапису - не менше 100000. Два програмовні біти захисту інформації тдозволяють захистити пам'ять програм і енергонезалежної пам'яті даних EEPROM від несанкціонованого зчитування.

Внутрішня оперативна пам'ять SRAM є у всіх AVR сімейств Сlassic і Mega і в одного нового кристала сімейства Ttiny - ATtiny26/L. Для деяких Мікроконтролерів можлива організація підключення зовнішньої пам'яті даних об'ємом до 64К.

Периферія МК AVR До числа старих периферійних пристроїв відносяться 8- розрядні порти введення-виведення, послідовний порт, таймери - лічильники контролер переривань.

Число незалежних ліній портів введення/виведення - від 3 до 53. Кожний розряд порту може бути запрограмрованний на введення або на виведення інформації. Потужні вихідні драйвери забезпечують струмову навантажувальну спроможність 20 мА на лінію порту при максимальному значенні 40 мА, що дозволяє, наприклад, безпосередньо підключати до мікроконтролера світлодіоди і біполярні транзистори. Загальне струмове навантаження на всі лінії одного порту не повинно перевищувати 80 мА (усі значення приведені для напруги живлення 5 В).

Мікроконтролери AVR мають у своєму складі від 1 до 4 таймерів/лічильників загального призначення з розрядністю 8 або 16 біт, що можуть працювати і як таймери від внутрішнього джерела опорної частоти, і як лічильники зовнішніх подій із зовнішнім тактуванням.

Таймер/лічильник RTC ( є у всіх мікроконтролерах сімейства Mega і в деяких МК Сlassic) реалізує систему реального часу. Таймер має свій власний переддільник, що може бути програмним способом підключений або до основного внутрішнього джерела тактової частоти мікроконтролера, або до додаткового асинхронного джерела опорної частоти (кварцовий резонатор або зовнішній синхросигнал). Для цієї цілі МК має два зовнішніх виводи. Внутрішній осцилятор, навантажений на лічильний вхід таймера/лічильника RTC, оптимізований для роботи з зовнішнім "годинним" кварцовим резонатором 32,768 кГц.

Новими периферійними пристроями є блок послідовного периферійного інтерфейсу (SPI), сторожовий таймер (WDT) і аналоговий компаратор (АС). .

Блок SPI призначений для послідовного введення і виведення даних і використовується для програмування мікроконтролера після установки його на друкарську плату.

Сторожовий таймер WDT (WATCHDOG) призначений для перезапуску програми тільки, якщо з'явиться збой у ході її виконання. Програма, що працює без збоїв, періодично скидає сторожовий таймер, не допускаючи його переповнювання. Сторожовий таймер має свій власний RC-генератор, що працює на частоті 1 МГц. На вході WDТ включений переддільник вхідної частоти з програмовним коефіцієнтом ділення, що дозволяє регулювати часовий інтервал переповнення таймера і скидання мікроконтролера. Таймер WDT може бути відключений програмним способом під час роботи мікроконтролера як в активному режимі, так і в будь-якому із режимів зниженого енергоспоживання. У останньому випадку це приводить до значного зниження споживаного струму.

Аналоговий компаратор AC порівнює по величині напруги сигнали, що надходять на входи Р1 0 і Р1.1. Результат порівняння подається на вхід Р3.6, що не має зовнішнього виводу.

Аналого-цифровий перетворювач ADC побудований по класичній схемі послідовних наближень із пристроєм вибірки/збереження (ПВЗ). Кожний з аналогових входів може бути з'єднаний із входом ПВЗ через аналоговий мультиплексор. Пристрій вибірки/збереження має свій власний підсилювач, що гарантує, що що вимірюється аналоговий сигнал буде стабільним протягом усього часу перетворення. Розрядність АЦП складає 10 біт при нормованій похибці +/- 2 розряди. АЦП може працювати в двох режимах - однократне перетворення по будь-якому обраному каналі і послідовний циклічний опит усіх каналів. Час перетворення вибирається програмно за допомогою установки коефіцієнта розподілу частоти спеціального предделителя, що входить до складу блока АЦП. Воно складає 70... 280 мкс для ATmega103 і 65... 260 мкс для всіх інших мікроконтролерів, що мають у своєму складі АЦП.

Внутрішній тактовий генератор МК AVR може запускатися від декількох джерел опорної частоти (зовнішній генератор, зовнішній кварцовий резонатор, внутрішній або зовнішній RC-ланцюжок). Оскільки AVR-мікроконтролери цілком статичні, мінімальна припустима частота нічим не обмежена, тобто можливо легко забезпечити навіть покроковий режим виконання програми. Максимальна робоча частота визначається конкретним типом мікроконтролера.

Мікроконтролери AVR можуть бути переведені програмними шляхом в один із шести режимів зниженого енергоспоживання.

Система команд AVR нараховує до 133 різних інструкцій. Розрізняють п'ять груп команд AVR: умовного розгалуження, безумовного розгалуження, арифметичні і логічні операції, команди пересилки даних, команди роботи з бітами. У останніх версіях AVR сімейства Mega реалізована функція апаратного множення. По розмаїтості і кількості реалізованих інструкцій AVR більше схожі на CISC, чим на RISC процесори. У PIC-контролерів система команд нараховує до 75 різних інструкцій, а в MCS51 вона складає 111.

У цілому, прогресивна RISC архітектура AVR у сполученні з наявністю регыстрового файлу і розширеної системи команд дозволяє створювати компактні програми з високою швидкостю виконання.