Процесор

CISC і RISC
За кількістю команд мікропроцесори поділяють на CISC (Complex Instruction Set Computer) і RISC (Reduced Instruction Set Computer). Термін CISC означає складну систему команд, RISC – скорочену.
Ідея RISC – це ретельний підбір команд, які можна було б виконати за один такт. Т. о. спрощується апаратна реалізація процесора, скорочується число транзисторів, знижується споживана потужність і ціна.
Очевидно, що в загальному випадку однієї CISC-команді повинні відповідати кілька RISC-команд. Проте зазвичай виграш у швидкодії у RISC перекриває втрати. Так, найбільша швидка команда у 8051 виконується за 12 тактів. Навіть якщо для кожної CISC-інструкції потрібно виконати три RISC-інструкції, то в підсумку RISC-архітектура буде в 4 рази продуктивніше.
В даний час межа між RISC і CISC стирається. Наприклад, AVR мають 133 команди, що відповідає CISC, але більшість з них виконується за один такт, що є ознакою RISC. Тому основною ознакою RISC стало прийнято вважати виконання команд за один такт.

Серцем мікроконтролерів AVR є 8-бітове мікропроцесорне ядро ??або центральне процесорний пристрій (ЦПУ), побудована на принципах RISK-архітектури. Основою цього блоку служить арифметико-логічне пристрій (АЛП). За системного тактовою сигналу з пам'яті програм відповідно до вмістом лічильника команд (Program Counter – PC) вибирається чергова команда і виконується АЛУ. Під час вибору команди з пам'яті програм відбувається виконання попередньої обраної команди, що й дозволяє досягти швидкодії 1 MIPS на 1 МГц.
АЛУ підключено до регістрів загального призначення РОН (General Purpose Registers – GPR). Регістрів загального призначення всього 32, вони мають байтовий формат, тобто кожен з них складається з восьми біт. РОН знаходяться на початку адресного простору оперативної пам'яті, але фізично не є її частиною. Тому до них можна звертатися двома способами (як до регістрів і як до пам'яті). Таке рішення є особливістю AVR і підвищує ефективність роботи і продуктивність мікроконтролера.
Відмінність між регістрами і оперативною пам'яттю полягає в тому, що з регістрами можна робити будь-які операції (арифметичні, логічні, бітові), а в оперативну пам'ять можна лише записувати дані з регістрів.

 

 

 

 

 

Пам'ять

У мікроконтролерах AVR реалізована Гарвардська архітектура, відповідно до якої розділені не тільки адресні простори пам'яті програм і пам'яті даних, але й шини доступу до них. Кожна з областей пам'яті даних (оперативна пам'ять і EEPROM) також розташована в своєму адресному просторі.

   Пам'ять програм (Flash ROM або Flash ПЗУ)

Фоннеймановская і Гарвардська архітектура
У 1945 р. американський математик Джон фон Нейман сформулював основні принципи роботи сучасних комп'ютерів. Їм була запропонована архітектура, що отримала його ім'я (von Neumann architecture) і передбачає зберігання програм і даних в загальній пам'яті (1946 р.). Сьогодні така архітектура найбільш характерна для мікропроцесорів, орієнтованих на використання в комп'ютерах. Прикладом можуть служити мікропроцесори сімейства х86.
Архітектура, передбачає роздільне використання пам'яті програм і даних, носить назву гарвардської (Harvard architecture). Гарвардська архітектура дозволяє центральному процесору працювати одночасно як з пам'яттю програм, так і з пам'яттю даних, що істотно збільшує продуктивність.

Пам'ять програм призначена для зберігання послідовності команд, що управляють функціонуванням мікроконтролера, і має 16-ти бітну організацію. Всі AVR мають Flash-пам'ять програм, яка може бути різного розміру – від 1 до 256 КБайт. Її головна перевага в тому, що вона побудована на принципі електричної Перепрограмміруємая, тобто допускає багатократне стирання і запис інформації. Програма заноситься в Flash-пам'ять AVR як за допомогою звичайного програматора, так і за допомогою SPI-інтерфейсу, у тому числі безпосередньо на зібраній платі. Можливістю внутрісхемного програмування (функція ISP) через комунікаційний інтерфейс SPI володіють всі мікроконтролери AVR, крім Tiny11 і Tiny28.
Всі мікроконтролери сімейства Mega мають можливість самопрограмування, тобто самостійної зміни вмісту своїй пам'яті програм. Ця особливість дозволяє створювати на їх основі дуже гнучкі системи, алгоритм роботи яких буде змінюватися самим микроконтроллером в залежності від будь-яких внутрішніх умов або зовнішніх подій.
Гарантоване число циклів перезапису Flash-пам'яті у мікроконтролерів AVR другого покоління становить не менше 10 тис. циклів при типовому значенні 100 тис. циклів. (В офіційній технічної документації Atmel Corp. вказується значення 10 тис. циклів.)

   Пам'ять даних

Пам'ять даних розділена на три частини: регістрова пам'ять, оперативна пам'ять (ОЗУ – оперативний запам'ятовуючий пристрій або RAM) і енергонезалежна пам'ять (ЕСППЗУ або EEPROM).

      Реєстрова пам'ять (РОН і РВВ)

Реєстрова пам'ять включає 32 регістра загального призначення (РОН або GPR), об'єднаних в файл, і службові регістри введення / виводу (РВВ). І ті й інші розташовані в адресному просторі ОЗУ, але не є його частиною.
В області регістрів вводу / виводу розташовані різні службові регістри (реєстри управління микроконтроллером, регістри стану і т. п.), а також регістри управління периферійними пристроями, що входять до складу мікроконтролера. По суті, управління микроконтроллером полягає в управлінні цими регістрами.

      Незалежна пам'ять даних (EEPROM)

Для довготривалого зберігання різної інформації, яка може змінюватися в процесі функціонування микроконтроллерной системи, використовується EEPROM-пам'ять. Всі AVR мають блок енергонезалежної електрично перезаписуваної пам'яті даних EEPROM від 64 Байт до 4 КБ. Цей тип пам'яті, доступний програмі мікроконтролера безпосередньо в ході її виконання, зручний для зберігання проміжних даних, різних констант, коефіцієнтів, серійних номерів, ключів і т.п. EEPROM може бути завантажена ззовні як через SPI інтерфейс, так і за допомогою звичайного програматора. Число циклів стирання / запис – Не менше 100 тис.

    Оперативна пам'ять (ОЗУ або RAM)

Внутрішня оперативна статична пам'ять Static RAM (SRAM) має байтовий формат і використовується для оперативного зберігання даних.
Розмір оперативної пам'яті може змінюватись у різних чіпів від 64 Байт до 4 КБ. Число циклів читання і запису в RAM не обмежена, але при відключенні живлячої напруги вся інформація втрачається.
Для деяких мікроконтролерів можлива організація підключення зовнішнього статичного ОЗУ об'ємом до 64К.

Периферія

Периферія мікроконтролерів AVR включає: порти (від 3 до 48 ліній введення і виведення), підтримку зовнішніх переривань, таймери-лічильники, сторожовий таймер, аналогові компаратори, 10-розрядний 8-канальний АЦП, інтерфейси UART, JTAG і SPI, пристрій скидання по зниженню харчування, широтно-імпульсні модулятори.

 Порти введення / виводу (I / O)

Порти введення / виводу AVR мають число незалежних ліній "вхід / вихід" від 3 до 53. Кожна лінія порту може бути запрограмована на вхід або на вихід. Потужні вихідні драйвери забезпечують струмовий навантажувальну здатність 20 мА на лінію порту (впадає струм) при максимальному значенні 40 мА, що дозволяє, наприклад, безпосередньо підключати до мікроконтролера світлодіоди і біполярні транзистори. Загальна струмова навантаження на всі лінії одного порту не повинна перевищувати 80 мА (всі значення наведено для напруги живлення 5 В).
Архітектурна особливість побудови портів вводу / виводу у AVR полягає в тому, що для кожної фізичної виводу (піна) існує 3 біти контролю / управління, а не 2, як у поширених 8-розрядних мікроконтролерів (Intel, Microchip, Motorola і т.д.). Це дозволяє уникнути необхідності мати копію вмісту порту в пам'яті для безпеки і підвищує швидкість роботи мікроконтролера при роботі з зовнішніми пристроями, особливо в умовах зовнішніх електричних перешкод.

 Переривання (INTERRUPTS)

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

  Таймери / лічильники (TIMER / COUNTERS)

Мікроконтролери AVR мають у своєму складі від 1 до 4 таймерів / лічильників з розрядністю 8 або 16 біт, які можуть працювати і як таймери від внутрішнього джерела тактовою частоти, і як лічильники зовнішніх подій.
Їх можна використовувати для точного формування тимчасових інтервалів, підрахунку імпульсів на висновках мікроконтролера, формування послідовності імпульсів, тактирования приемопередатчика послідовного каналу зв'язку. У режимі ШІМ (PWM) таймер / лічильник може являти собою широтно-імпульсний модулятор і використовується для генерування сигналу з програмованими частотою і шпаруватістю. Таймери / лічильники здатні виробляти запити переривань, переключаючи процесор на їх обслуговування з подій і звільняючи його від необхідності періодичного опитування стану таймерів. Оскільки основне застосування мікроконтролери знаходять у системах реального часу, таймери / лічильники є одним з найбільш важливих елементів.

  Сторожовий таймер (WDT)

Сторожовий таймер (WatchDog Timer) призначений для запобігання катастрофічних наслідків від випадкових збоїв програми. Він має свій власний RC-генератор, що працює на частоті 1 МГц. Як і для основного внутрішнього RC-генератора, значення 1 МГц є наближеним і залежить насамперед від величини напруги живлення мікроконтролера і від температури.
Ідея використання стоpожевого таймеp гранично проста і полягає в pегуляpном його сбpасиваніі під упpавлением пpогpамм або зовнішнього впливу до того, як закінчиться його видеpжка часової і не пpоізойдет сбpос процесора. Якщо пpогpамма pаботает ноpмально, то команда сбpоса стоpожевого таймеp повинна pегуляpно виконуватися, пpедохpаняя поцессоp від сбpоса. Якщо ж микpопpоцессоp випадково вийшов за межа пpогpамм (напpимеp, від сильної перешкоди по ланцюгу живлення) або зациклився на якій-небудь ділянці програма, команда сбpоса стоpожевого таймеp скоpее за все не буде виконана протягом достатнього часової і пpоізойдет повний сбpос пpоцессоpа, ініціалізіpующій все регістри і пpіводящій систему в pабочее стан.

   Аналоговий компаратор (AC)

Аналоговий компаратор (Analog Comparator) порівнює напруги на двох висновках (пінах) мікроконтролера. Результатом порівняння буде логічне значення, що може бути прочитане з програми.
Вихід аналогового компаратора можна включити на переривання від аналогового компаратора. Користувач може встановити спрацьовування переривання по наростаючому чи спадающему фронту або з переключення.
Присутній у всіх сучасних AVR, крім Mega8515

   Аналого-цифровий перетворювач (A / D CONVERTER)

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

Універсальний послідовний приемопередатчик (UART або USART)

Універсальний асинхронний або універсальний синхронно / асинхронний приймач (Universal Synchronous / Asynchronous Receiver and Transmitter – UART або USART) – зручний і простий послідовний інтерфейс для організації інформаційного каналу обміну мікроконтролера із зовнішнім світом. Здатний працювати в дуплексному режимі (одночасна передача і прийом даних). Він підтримує протокол стандарту RS-232, що забезпечує можливість організації зв'язку з персональним комп'ютером. (Для стикування МК і комп'ютера обов'язково знадобиться схема поєднання рівнів сигналів. Для цього існують спеціальні мікросхеми, наприклад MAX232.)

   Послідовний периферійний інтерфейс SPI


Послідовний периферійний трьохпровідний інтерфейс SPI (Serial Peripheral Interface) призначений для організації обміну даними між двома пристроями. З його допомогою може здійснюватися обмін даними між микроконтроллером і різними пристроями, такими, як цифрові потенціометри, ЦАП / АЦП, FLASH-ПЗУ та ін За допомогою цього інтерфейсу зручно проводити обмін даними між кількома мікроконтролерами AVR.
Крім того, через інтерфейс SPI може здійснюватися програмування мікроконтролера.

  Двухпроводной послідовний інтерфейс TWI

Двухпроводной послідовний інтерфейс TWI (Two-wire Serial Interface) є повним аналогом базової версії інтерфейсу I2C (двухпроводная двонаправлена ??шина) фірми Philips. Цей інтерфейс дозволяє об'єднати разом до 128 різних пристроїв з допомогою двобічної шини, що складається з лінії тактового сигналу (SCL) і лінії даних (SDA).

  Інтерфейс JTAG

Інтерфейс JTAG був розроблений групою провідних фахівців з проблем тестування електронних компонентів (Joint Test Action Group) і був зареєстрований як промислового стандарту IEEE Std 1149.1-1990. Чьотирьох інтерфейс JTAG використовується для тестування друкованих плат, внутрісхемний налагодження, програмування мікроконтролерів.
Багато мікроконтролери сімейства Mega мають сумісний з IEEE Std 1149.1 інтерфейс JTAG або debugWIRE для вбудованої налагодження. Крім того, всі мікроконтролери Mega з флеш-пам'яттю ємністю 16 кбайт і більше можуть програмуватися через інтерфейс JTAG.

   Тактовий генератор

Тактовий генератор виробляє імпульси для синхронізації роботи всіх вузлів мікроконтролера. Внутрішній тактовий генератор AVR може запускатися від декількох джерел опорної частоти (Зовнішній генератор, зовнішній кварцовий резонатор, внутрішня чи зовнішня RC-ланцюжок). Мінімальна допустима частота нічим не обмежена (аж до покрокового режиму). Максимальна робоча частота визначається конкретним типом мікроконтролера і вказується Atmel в його характеристиках, хоча практично будь AVR-мікроконтроллер із заявленою робочою частотою, наприклад, в 10 МГц при кімнатній температурі легко може бути "розігнаний" до 12 МГц і вище.

  Система реального часу (RTC)

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

Харчування

AVR функціонують при напрузі живлення від 1,8 до 6,0 Вольт. Струм споживання в активному режимі залежить від величини напруги живлення і частоти, на якій працює мікроконтролер, і становить менше 1 мА для 500 кГц, 5 … 6 мА для 5 МГц і 8 … 9 мА для частоти 12 МГц.
AVR можуть бути переведені програмним шляхом в один з трьох режимів зниженого енергоспоживання.

   Режим холостого ходу (IDLE).

Припиняє роботу тільки процесор і фіксується вміст пам'яті даних, а внутрішній генератор синхросигналов, таймери, система переривань і сторожовий таймер продовжують функціонувати. Струм споживання не перевищує 2,5 мА на частоті 12 МГц.

   Стоповий режим (POWER DOWN).

Зберігається вміст реєстрового файлу, але зупиняється внутрішній генератор синхросигналов, і, отже, зупиняються всі функції, поки не надійде сигнал зовнішнього переривання або апаратного скидання. При включеному сторожовому таймері струм споживання в цьому режимі складає близько 80 мкА, а при вимкненому – менше 1 мкА. (Всі наведені значення справедливі для напруги живлення 5 В).

   Економічний режим (POWER SAVE).

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

  Скидання при зниженні напруги живлення (BOD)

Схема BOD (Brown-Out Detection) відстежує напругу джерела живлення. Якщо схема включена, то при зниженні живлення нижче деякого значення вона переводить мікроконтроллер в стан скидання. Коли напруга живлення знову збільшиться до порогового значення, запускається таймер затримки скидання. Після формування затримки внутрішній сигнал скидання знімається і відбувається запуск мікроконтролера.

 

Джерело: myrobot.ru