- •Глава 1. Архитектура микроконтроллерa Atmega 128
- •Организация памяти
- •Память программ
- •1.1.2. Память данных
- •1.2.Счетчик команд и выполнение программы
- •1.2.1.Счетчик команд
- •1.2.2.Функционирование конвейера
- •1.2.3.Стек
- •Глава 2
- •2.1Тактовый генератор
- •2.3Режимы пониженного энергопотребления
- •Idle (ждущий режим)
- •2.4. Сброс
- •Глава3. Прерывания
- •Глава4. Порты ввода/вывода
- •Глава5. Таймеры
- •Глава 6. Аналоговый компаратор
- •6.1. Функционирование компаратора
- •Глава7. Аналого-цифровой
- •7.1 Общие сведения
- •7.2. Функционирование модуля ацп
- •Глава 8. Универсальный асинхронный
- •8.1 Общие сведения
- •8.2. Использование модулей usart
- •Глава 9. Последовательный
- •9.1 Функционирование модуля spi
- •9.2 Режимы передачи данных
- •Глава 10. Последовательный двухпроводный интерфейс
- •10.1 Общие сведения
- •10.2. Принципы обмена данными по шине twi
- •10.3. Модуль twi
- •10.4. Взаимодействие прикладной программы
- •10.5. Режимы работы модуля twi
Введение
В настоящее время, для управления различными объектами широко используются вычислительные системы на базе микроконтроллеров.
Микроконтро́ллер ( Micro Controller Unit, MCU) — микросхема, предназначенная для управления электронными устройствами. Типичный микроконтроллер сочетает на одном кристалле функции процессора и периферийных устройств, содержит ОЗУ или ПЗУ. По сути, это однокристальный компьютер, способный выполнять простые задачи.
С появлением однокристальных микро-ЭВМ связывают начало эры массового применения компьютерной автоматизации в области управления. Первый патент на однокристальную микро-ЭВМ был выдан в 1971 году инженерам М. Кочрену и Г. Буну, сотрудникам американской Texas Instruments. Именно они предложили на одном кристалле разместить не только процессор, но и память с устройствами ввода-вывода.
В 1976 году американская фирма Intel выпускает микроконтроллер i8048. В 1978 году фирма Motorola выпустила свой первый микроконтроллер MC6801, совместимый по системе команд с выпущенным ранее микропроцессором MC6800. Через 4 года, в 1980 году, Intel выпускает следующий микроконтроллер: i8051. Удачный набор периферийных устройств, возможность гибкого выбора внешней или внутренней программной памяти и приемлемая цена обеспечили этому микроконтроллеру успех на рынке. С точки зрения технологии микроконтроллер i8051 являлся для своего времени очень сложным изделием — в кристалле было использовано 128 тыс. транзисторов, что в 4 раза превышало количество транзисторов в 16-разрядном микропроцессоре i8086.
На сегодняшний день существует более 200 модификаций микроконтроллеров, совместимых с i8051, выпускаемых двумя десятками компаний, и большое количество микроконтроллеров других типов. Популярностью у разработчиков пользуются 8-битные микроконтроллеры PIC фирмы Microchip Technology и AVR фирмы Atmel, 16-битные MSP430 фирмы TI, а также 32-битные микроконтроллеры, архитектуры ARM, которую разрабатывает фирма ARM Limited.
При проектировании микроконтроллеров приходится соблюдать баланс между размерами и стоимостью с одной стороны и гибкостью и производительностью с другой. Для разных приложений оптимальное соотношение этих и других параметров может различаться очень сильно. Поэтому существует огромное количество типов микроконтроллеров, отличающихся архитектурой процессорного модуля, размером и типом встроенной памяти, набором периферийных устройств, типом корпуса и т. д. В отличие от обычных компьютерных микропроцессоров, в микроконтроллерах часто используется гарвардская архитектура памяти, то есть раздельное хранение данных и команд в ОЗУ и ПЗУ соответственно.
Кроме ÎÇÓ, микроконтроллер может иметь встроенную энергонезависимую память для хранения программы и данных. Во многих контроллерах вообще нет øèí для подключения внешней памяти. Наиболее дешёвые типы памяти допускают лишь однократную запись. Такие устройства подходят для массового производства в тех случаях, когда программа контроллера не будет обновляться. Другие модификации контроллеров обладают возможностью многократной перезаписи энергонезависимой памяти.
Неполный список периферии, которая может присутствовать в микроконтроллерах, включает в себя:
универсальные цифровые порты, которые можно настраивать как на ввод, так и на вывод;
различные интерфейсы ввода-вывода, такие как UART, I²C, SPI, CAN, USB, IEEE 1394, Ethernet;
аналого-цифровые и цифро-аналоговые преобразователи;
компараторы;
широтно-импульсные модуляторы;
таймеры;
контроллеры бесколлекторных двигателей;
контроллеры дисплеев и клавиатур;
радиочастотные приемники и передатчики;
массивы встроенной флеш-памяти;
встроенный тактовый генератор и сторожевой таймер;
Производители стремятся обеспечить работу своих изделий на высоких частотах, они, в то же время, предоставляют заказчикам выбор, выпуская модификации, рассчитанные на разные частоты и напряжения питания. Во многих моделях микроконтроллеров используется статическая память для ОЗУ и внутренних регистров. Это даёт контроллеру возможность работать на меньших частотах и даже не терять данные при полной остановке тактового генератора. Часто предусмотрены различные режимы энергосбережения, в которых отключается часть периферийных устройств и вычислительный модуль.
В настаящее время наиболее известны семейства микроконтроллеров:
MCS 51 (Intel), MSP430 (TI),ARM (ARM Limited),AVR (Atmel)-ATmega,ATtiny,XMega, PIC (Microchip).
Использование в современном микроконтроллере достаточного мощного вычислительного устройства с широкими возможностями, построенного на одной микросхеме вместо целого набора, значительно снижает размеры, энергопотребление и стоимость построенных на его базе устройств. Используются в управлении различными устройствами и их отдельными блоками:
в вычислительной технике: материнские платы, контроллеры дисководов жестких и гибких дисков, CD и DVD;
электронике и разнообразных устройствах бытовой техники, в которой используется электронные системы управления — стиральных машинах, микроволновых печах, посудомоечных машинах, телефонах и современных приборах;
устройств промышленной автоматики — от программируемого реле и встраиваемых систем до ПЛК,
систем управления станками
В то время как 8-разрядные процессоры общего назначения полностью вытеснены более производительными моделями, 8-разрядные микроконтроллеры продолжают широко использоваться. Это объясняется тем, что существует большое количество применений, в которых не требуется высокая производительность, но важна низкая стоимость. В то же время, есть микроконтроллеры, обладающие больши́ми вычислительными возможностями, например цифровые сигнальные процессоры.
Программирование микроконтроллеров обычно осуществляется на языке ассемблера или Си, хотя существуют компиляторы для других языков, например, Форта. Используются также встроенные интерпретаторы Бейсика.
Известные компиляторы Си для МК:
CodeVisionAVR (для AVR)
IAR [1] (для любых МК)
WinAVR (для AVR и AVR32)
Keil (для архитектуры 8051 и ARM)
HiTECH (для архитектуры 8051 и PIC от Microchip)
Для отладки программ используются программные симуляторы (специальные программы для персональных компьютеров, имитирующие работу микроконтроллера), внутрисхемные эмуляторы (электронные устройства, имитирующие микроконтроллер, которые можно подключить вместо него к разрабатываемому встроенному устройству) и интерфейс JTAG.
Настоящее пособие посвящается вопросам проектирования вычислительных систем на базе микроконтроллеров. В качестве примера используется один из наиболее полных микрокотроллера семейства AVR Atmega 128.
Глава 1. Архитектура микроконтроллерa Atmega 128
Микроконтроллер Atmega AVR семейства Mega являются 8 разрядным микроконтроллерoм с RISC архитектурой. Он имеeт электрически стираемую память программ (FLASH) и данных (EEPROM), а также разнообразные периферийные устройства. Следует отметить, что микроконтроллеры семейства Mega, к которому относится Atmega `128, имеют самый богатый набор периферийных устройств по сравнению с микроконтроллерами других семейств.Более того, состав этих устройств от модели к модели практически не меняется (меняются только их функциональные возможности). К устройствам, присутствующим не во всех моделях семейства, относятся АЦП, модуль двухпроводного интерфейса TWI (Two Wire Interface, аналог шины I2C ), а также модуль интерфейса JTAG.Структурная схема микроконтроллерa Atmega128 приведена на Рис. 1.1. $<_IL_078>$
ATmega128 содержит следующие элементы: 128 кбайт внутрисистемно программируемой флэш-памяти, 4 кбайт ЭСППЗУ, 4 кбайт статического ОЗУ, 53 линии универсального ввода-вывода, 32 универсальных рабочих регистра, счетчик реального времени (RTC), четыре гибких таймера-счетчика с режимами сравнения и ШИМ, 2 USART, двухпроводной последовательный интерфейс (TWI) ориентированный на передачу байт, 8-канальный 10-разр. АЦП , программируемый сторожевой таймер с внутренним генератором, последовательный порт SPI, испытательный интерфейс JTAG совместимый со стандартом IEEE 1149.1, который также используется для доступа к встроенной системе отладке.
В целях достижения максимальной производительности и параллелелизма у AVR-микроконтроллеров используется Гарвардская архитектура с раздельными памятью и шинами программ и данных. Команды в памяти программ выполняются с одноуровневой конвейеризацией. В процессе выполнения одной инструкции следующая предварительно считывается из памяти программ. Данная концепция позволяет выполнять одну инструкцию за один машинный цикл. Память программ представляет собой внутрисистемно программируемую флэш-память.
Регистровый файл с быстрым доступом содержит 32 x 8-разр. рабочих регистров общего назначения с однотактовым циклом доступа. Благодаря этому достигнута однотактность работы арифметико-логического устройства (АЛУ). При обычной работе АЛУ сначала из регистрового файла загружается два операнда, затем выполняется операция, а после результат отправляется обратно в регистровый файл и все это происходит за один машинный цикл.
АЛУ поддерживает арифметические и логические операции между регистрами, а также между константой и регистром. Кроме того, АЛУ поддерживает действия с одним регистром. После выполнения арифметической операции регистр статуса обновляется для отображения результата выполнения операции.
Рис.1.1
Микропроцессор имеет внутренный генератор для формирования тактовых сигналов, а также выволы для потключения внешных генераторов.
Для подключения к внешним устройствам в состав контроллера входит 7 двунаправленных 8 разрядных порта : PA,PB, PC,PD, PE,PG,PF.
