Рабочий цикл микроконтроллера


Архитектура AVR микроконтроллеров, из чего состоит микроконтроллер

Рассмотрим внутреннюю архитектуру микроконтроллеров AVR, попробуем разобраться из каких блоков состоит кристалл микросхемы и за какие функции отвечает каждый блок, как они взаимодействуют между собою. Также будут приведены полезные сравнения и примеры, ценные заметки что помогут прояснить принципы работы микроконтроллера с внешними устройствами и периферией.

AVR микроконтроллер изнутри

Микроконтроллер изнутри — это компьютер со своим вычислительным устройством, постоянной и динамической памятью, портами ввода-вывода и разной периферией.

Рис. 1. Структура AVR микроконтроллера. Рисунок с сайта digikey.com

Внутри микроконтроллер содержит:

  • Быстродействующий процессор с RISC-архитектурой;
  • FLASH-память;
  • EEPROM-память;
  • Оперативную память RAM;
  • Порты ввода/вывода;
  • Периферийные и интерфейсные модули.

RISC (Reduced Instruction Set Computer) — архитектура с тщательно подобранным набором команд, которые как правило выполняются за один такт работы процессора. Современные AVR микроконтроллеры содержат около 130 команд, которые очень быстро выполняются и не требуют больших затрат как по внутри-процессорным ресурсам, так и по потребляемой мощности.

Структурная схема AVR микроконтроллера

Посмотрим на рисунок ниже и разберемся из каких блоков состоит микроконтроллер и как они связаны между собою:

Рис. 2. Структурная схема AVR микроконтроллера.

Рассмотрим кратко что изображено на блоках в схеме:

  • JTAG Interface (Joint Test Action Group Interface) — интерфейс внутрисхемной отладки (4 провода);
  • FLASH — перепрограммируемая память для сохранения программы;
  • Serial Peripheral Interface, SPI — последовательный периферийный интерфейс (3 провода);
  • EEPROM (Electrically Erasable Programmable Read-Only Memory) — перепрограммируемое ПЗУ, энергонезависимая память;
  • CPU (ЦПУ) — центральный процессор управления, сердце микроконтроллера, 8-битное микропроцессорное ядро;
  • ALU (АЛУ) — арифметико-логическое устройство, основа блока CPU;
  • RAM (Random Access Memory) — оперативная память процессора;
  • Program Counter — счетчик команд;
  • 32 General Purpose Registers — 32 регистра общего назначения;
  • Instruction Register — регистр команд, инструкций;
  • Instruction Decoder — декодер команд;
  • OCD (On-Chip Debugger) — блок внутренней отладки;
  • Analog Comparator — аналоговый компаратор, блок сравнения аналоговых сигналов;
  • A/D Converter (Analog/Digital converter) — аналогово-цифровой преобразователь;
  • LCD Interface (Liquid-Crystal Display Interface) — интерфейс для подключения жидко-кристаллического дисплея, индикатора;
  • USART (Universal Asynchronous Receiver-Transmitter), UART — универсальный асинхронный приемопередатчик;
  • TWI (Two-Wire serial Interface) — последовательный интерфейс с двухпроводным подключением;
  • Watchdog Timer — сторожевой или контрольный таймер;
  • I/O Ports — порты вода/вывода;
  • Interrupts — блок управления и реакции на прерывания;
  • Timers/Counters — модули таймеров и счетчиков.

Подробнее о внутренних блоках микроконтроллера

А теперь подробно рассмотрим все блоки микроконтроллера, разберемся что и для чего нужно, приведу простые примеры доступным языком.

JTAG Interface — важный интерфейс который позволяет производить внутреннюю отладку прямо в чипе используя блок внутренней отладки (OCD), без использования эмуляторов. Можно сказать что JTAG — это интерфейс для «железной» отладки микроконтроллера. Через JTAG-адаптер микросхема напрямую подключается к программному комплексу для программирования и отладки.

Используя данный интерфейс можно в пошаговом режиме выполнять программу прямо в микроконтроллере, смотреть как изменяется содержимое регистров, как мигают индикаторы и светодиоды что подключены к микроконтроллеру после каждого шага и т.п. Для подключения к JTAG интерфейсу достаточно 4-х проводников: TDI(Test Data In), TDO(Test Data Out), TCK(Test Clock), TMS (Test Mode Select).

JTAG интерфейс доступен далеко не во всех микроконтроллерах AVR, как правило таким вкусным дополнением обладают чипы у которых 40 и более лапок, а объем памяти доступен в размере не менее 16КБ. Для серьезных задач — серьезные материалы и инструменты. )

FLASH — память программ, энергонезависимое ПЗУ(постоянное запоминающее устройство) что выполнено по технологии FLASH. Здесь хранится программа, которая будет исполняться блоком ALU микроконтроллера. Флешь-память чипа можно многократно перезаписывать, тем самым меняя или дополняя программный код для выполнения. Данный тип памяти может сохранять записанные в нее данные в течение 40 лет, а количество возможных циклов стирания/записи может достигать 10000.

В зависимости от модели микроконтроллера размер FLASH-памяти может достигать 256 KБ.

Serial Peripheral Interface, SPI — последовательный периферийный интерфейс (SPI) который зачастую применяется для обмена данными между несколькими микроконтроллерами со скоростью до нескольких MГц (нескольких миллионов тактов в секунду).

Для обмена данными по SPI интерфейсу между двумя устройствами достаточно 3-х проводников:

  1. MOSI (Master Output Slave Input) — Данные от ведущего к ведомому;
  2. MISO (Master Input Slave Output) — Данные от ведомого к ведущему;
  3. CLK (Clock) — тактовый сигнал.

Устройства с SPI-интерфейсом делятся на два типа: ведущий(Master) и ведомый(Slave). Если к интерфейсу подключено несколько устройств то для обмена данными между ними нужны дополнительные линии связи(проводники) чтобы мастеру можно было выбрать ведомое устройство и сделать запрос к нему.

Также SPI интерфейс используется для внутрисхемного SPI программирования, по этому интерфейсу к микроконтроллеру подключается программатор.

EEPROM — энергонезависимая память данных в которой данные будут храниться даже при отключении питания микроконтроллера. В данной памяти можно хранить настройки выполнения программы, собранные данные для статистики работы устройства и другую полезную информацию. К примеру, собрав маленькую метеостанцию на микроконтроллере, в EEPROM на каждый день можно сохранять данные о температуре воздуха, давлении, силе ветра, а потом в любой момент считать эти собранные данные и провести статистические исследования.

Для EEPROM выделено отдельное адресное пространство которое отличается от адресного пространства RAM и FLASH. Память EEPROM микроконтроллера — очень ценный ресурс, поскольку ее как правило очень мало — от 0,5 до нескольких килобайт на чип. Количество перезаписей для данного типа памяти составляет порядка 100000 что в 10 раз больше чем ресурс FLASH памяти.

ALU — Арифметико-логическое устройство, которое синхронно с тактовым сигналом и опираясь на состояние счетчика команд (Program Counter) выбирает из памяти программ (FLASH) очередную команду и производит ее выполнение.

Тактовый сигнал для микроконтроллера вырабатывается тактовым генератором, и может быть подан из нескольких доступных источников на выбор:

  • внутренний RC-генератор, который можно калибровать на нужную частоту;
  • керамический или кварцевый резонатор с конденсаторами (не у всех моделей);
  • внешний тактовый сигнал.

Установка источника тактовых импульсов производится при помощи FUSE-битов.

FUSES (с англ.: плавление, пробка, предохранитель) — специальные 4 байта(4*8=32 бит) данных, которые настраивают некоторые глобальные параметры микроконтроллера в процессе прошивки. После прошивки данные биты нельзя изменить через внутреннюю программу что записана в МК.

Данной конфигурацией бит мы указываем микроконтроллеру вот что:

  • какой использовать задающий генератор (внешний или внутренний);
  • делить частоту генератора на коэффициент или нет;
  • использовать ножку сброса (RESET) для сброса или же как дополнительный пин ввода-вывода;
  • количество памяти для загрузчика;
  • другие настройки зависимо от используемого микроконтроллера.

CPU — это мозг микроконтроллера, который содержит в себе АЛУ, регистры и оперативную память.

К ALU подключен блок из 32-х регистров общего назначения (32 General Purpose Registers — регистровая память), каждый из которых представляет собою 1 байт памяти (8 бит). Адресное пространство регистров общего назначения размещено в начале оперативной памяти (RAM) но не является ее частью. С данными что помещаются в регистры можно производить разнообразные арифметические, логические и битовые операции. Выполнение подобных операций в оперативной памяти не доступно. Для работы с данными из RAM нужно их записать в регистры, произвести в регистрах нужные операции, а потом записать результирующие данные из регистров в память или в другие регистры для выполнения каких-то действий.

RAM — оперативная память. В нее можно записывать данные из регистров, считывать данные в регистры, все операции с данными и расчеты производятся в регистрах. Для разных семейств AVR чипов размер оперативной памяти ограничен:

  • ATxmega — до 32 KБ;
  • ATmega — 16 Кб;
  • ATtiny — 1 Кб.

Analog Comparator — данный блок сравнивает между собою два уровня сигнала и запоминает результат сравнения в определенном регистре, после чего сданный результат можно проанализировать и выполнить необходимые действия. Для примера: можно использовать этот блок как АЦП(Аналогово-Цифровой Преобразователь) и измерять напряжение батареи питания, в случае если если напряжение батареи достигло низкого уровня — произвести некоторые действия, помигать красным светодиодом и т.п. Также данный модуль можно применять для измерения длительности аналоговых сигналов, считывания установленных режимов работы устройства при помощи потенциометра и т.п.

A/D Converter — данный блок преобразовывает аналоговое значение напряжения в цифровое значение, с которым можно работать в программе и на основе которого можно выполнять определенные действия. Как правило диапазон напряжений что подаются на вход АЦП в AVR микроконтроллере находится в пределах 0-5,5 Вольт. Для данного блока очень важно чтобы микроконтроллер питался от стабильного и качественного источника питания. Во многих AVR микроконтроллерах есть специальный отдельный вывод для подачи стабильного питания на схему АЦП.

LCD Interface — интерфейс для подключения жидкокристаллического индикатора или дисплея. Применятся для отображения информации, состояния устройства и его узлов.

USART — последовательный асинхронный интерфейс для обмена данными с другими устройствами. Есть поддержка протокола RS-232, благодаря чему микроконтроллер можно соединить для обмена данными с компьютером.

Для подобной связи МК с COM-портом компьютера нужен конвертер логических уровней напряжения (+12В для COM — в +5В для микроконтроллера), или же просто RS232-TTL. Для подобных целей используют микросхемы MAX232 и им подобные.

Для подключения микроконтроллера к компьютеру через USB используя UART-интерфейс можно использовать специализированную микросхему FT232RL. Таким образом на новых компьютерах и ноутбуках можно не имея физического COM-порта привязать микроконтроллер используя USB-порт через USART интерфейс.

TWI — интерфейс для обмена данными по двухпроводной шине. К такой шине данных можно подключить до 128 различных устройств, используя две линии данных: тактовый сигнал (SCL) и сигнал данных (SDA). Интерфейс TWI является аналогом базовой версии интерфейса I2C.

В отличие от SPI интерфейса (один мастер и один/несколько ведомых) интерфейс TWI — двунаправленный, сто позволяет организовать между несколькими микроконтроллерами небольшую внутреннюю сеть.

Watchdog Timer представляет собою систему контроля зависания устройства с последующим его перезапуском. Это как автоматическая кнопка RESET для старенького компьютера с глючной ОС. ))

I/O Ports, GPIO — это набор блоков портов ввода/вывода к пинам которых можно подключить разнообразные датчики, исполняющие устройства и цепи. Количество пинов вход/выход, что идут от портов в микроконтроллере, может быть от 3 до 86.

Выходные драйверы в портах AVR микроконтроллера позволяют напрямую подключать нагрузку з потребляемым током 20 мА(максимум 40 мА) при напряжении питания 5В. Общий нагрузочный ток для одного порта не должен превышать значение в 80 мА (например на 4 пина для одного из портов повесить по светодиоду с током 15-20 мА).

Interrupts — это блок который отвечает за реакцию и запуск на выполнение определенных функций при поступлении сигнала на определенные входы микроконтроллера или же по какому-то внутреннему событию (например тиканью таймера). Под каждое прерывание разрабатывается и записывается в память отдельная подпрограмма.

Почему этот блок называется блоком прерываний? — потому что при возникновении определенного для прерывания события выполнение основной программы прерывается и происходит приоритетное выполнение подпрограммы что написана для текущего прерывания. По завершению выполнения подпрограммы происходит возвращение к выполнению основной программы с того момента где она была прервана.

Timers/Counters — набор таймеров и счетчиков. Микроконтроллер, как правило, содержит в себе от одного до четырех таймеров и счетчиков. Они могут применяться для подсчета количества внешних событий, формирования сигналов определенной длительности, вырабатывать запросы на прерывания и т.п. Разрядность таймеров и счетчиков составляет — 8 и 16 бит (смотреть в даташите для чипа).

Заключение

Вот в принципе и все что изначально полезно знать о структуре микроконтроллера AVR. Дальше, в процессе работы и программирования, у вас будет возможность на практике изучить даташиты для разных моделей AVR чипов, узнать более детально принципы работы каждого из структурных кубиков МК и изучить как они работают, поиграться с отладкой и т.п.

В следующей статье попробуем разобраться с маркировкой микроконтроллеров, поразмышляем о наиболее доступных и подходящих для начального изучения чипах.

What is my microcontroller power duty cycle?

Say I have a uC active for 1s every 100s, sleep otherwise. This will lead to 1% duty cycle.

But what if it is active ones every ten seconds, and once every 100 seconds, and then once every week? Over what period of time do I calculate the duty cycle?

Скажите, что у меня есть uC active для 1s каждые 100 секунд, спать иначе. Это приведет к 1% рабочего цикла.

Но что, если он активен каждые десять секунд и один раз каждые 100 секунд, а затем один раз в неделю? В какой период времени я рассчитываю рабочий цикл?

Создан 24 апр. 13 2013-04-24 05:27:26 chwi

3 ответа

If I read your question correctly then you have a wakeup at three different intervals simultaneously:

  • Once every ten seconds and
  • Once every 100 seconds and
  • Once every week

In this case you have to calculate the duty cycle over the longest interval, in this case one week. Then calculate all the smaller intervals in terms of the larger one.

A week is 7 days, each day is 24 hours, each hour has 3600 seconds, so your week is 7*24*3600 = 604800 seconds. During this interval you will wake up:

  • 60480 times (for the once / 10 sec interval), plus
  • 6048 times (for the once / 100 sec interval), plus
  • 1 time (for the once / week interval)

In other words, in 604800 seconds you will wake up 60480+6048+1 = 66529 times. Calculate the wake time for each wakeup (in seconds, even if it is fractional), multiply it by 66529 and divide 604800, then multiply by 100%: this is your duty cycle.

Создан 24 апр. 13 2013-04-24 06:45:56 angelatlarge

+1 for «\$seconds\$» / a nice calculation – Keelan 24 апр. 13 2013-04-24 08:03:48

Very specific answer to my question, thank you very much. – chwi 24 апр. 13 2013-04-24 08:36:24

The duty cycle for a microcontroller is just a figure that helps calculating the average power consumption. If the duty cycle is not fixed, like for example when it’s woken up by an asynchronous signal, it doesn’t make sense to express it in terms of duty cycle.

You could have an estimate if you could have the average period at which the event happens.

Создан 24 апр. 13 2013-04-24 05:41:26 clabacchio

The duty cycle indicates how long your uC is on, relatively to the period (\ $T\$ ) of the signal. Typically, it is \ $frac>\cdot100\%\$ . You have to calculate the duty cycle over one (or more) full periods. That is, you can only calculate the duty cycle of a periodic signal.

Let’s do an example:

In indicated the active time with \ $a\$ and the inactive time with \ $i\$ . You can see this signal repeats after \ $t_a+t_i\$ , so one period, \ $T=t_a+t_i\$ . You calculate the duty cycle over one period, so it is:

Now for a more advanced signal:

It isn’t a very good photo, but I gave the first on-time \ $a_1\$ , the first off-time \ $i_1\$ , the second on-time \ $a_2\$ and the second off-time \ $i_2\$ .

Again, you have to take the full period of the signal. You see the signal repeats itself after \ $T=t_+t_+t_+t_\$ . You can now calculate the duty cycle with:

So, to answer your question: calculate the duty cycle over one full period. This means you can only calculate the duty cycle of a periodic signal. If your uC wakes up due to, for example, an external signal, it doesn’t make sense to calculate the duty cycle. You can of course estimate how long it will be on and how long it will be off, to see how much energy it will consume.

Создан 24 апр. 13 2013-04-24 06:09:45 Keelan

Great answer, but @angel answered my specific question a bit better, would have accepted yours otherwise. – chwi 24 апр. 13 2013-04-24 08:35:56

@Wilhelmsen perfectly fine, but please do not accept an answer too fast. That discourages others from answering it, whilst there might be even better answers out there! Just wait one or two days and then pick an answer. I’m perfectly fine with it if that isn’t mine. – Keelan 24 апр. 13 2013-04-24 08:37:03

Oh, okey. I will wait a couple of days then =) – chwi 24 апр. 13 2013-04-24 08:38:26

@Wilhelmsen okay, thanks! – Keelan 24 апр. 13 2013-04-24 08:39:09

Микроконтроллеры в системах промышленной автоматизации

В статье рассматривается роль микроконтроллеров (МК) в системах промышленной автоматизации, в частности, речь пойдет о том, как на базе микроконтроллеров реализуется интерфейс реального мира для различного типа датчиков и исполнительных механизмов. Также мы обсудим необходимость интеграции в микроконтроллеры высокопроизводительных ядер, таких как ARM Cortex-M3, с прецизионной и специализированной периферией, которой снабжены микроконтроллеры серии ADuCM360 компании Analog Devices и семейства EFM32 компании Energy Micro (Silicon Labs). Также не останется без внимания относительно новый протокол обмена данными, который ориентирован на эту область приложений, с конкретной ссылкой на бюджетные микроконтроллеры семейства XC800/XC16x (Infineon) и MSP430F2274 (Texas Instruments), и на специализированные приемопередатчики, включая MAX14821 (Maxim).

Микроконтроллеры интегрируют в себе технические возможности для обработки смешанных сигналов и вычислительную мощность, при этом уровень производительности МК и их функционал постоянно растет. Однако существуют другие разработки, которые позволяют продлить жизненный цикл бюджетных и низкопроизводительных микроконтроллеров.

По определению, микроконтроллеры бесполезны без связи с «реальным миром». Они были разработаны, чтобы действовать в качестве концентраторов для входов и выходов, выполняя задачи условных переходов и управляя последовательными и параллельными процессами. Их роль определяется управлением, в то время как возможность программирования означает, что характер управления задается логикой. Тем не менее, они изначально разрабатывались с целью получить интерфейс для аналогового мира, и, следовательно, в своей работе микроконтроллеры существенно опираются на процесс аналого-цифрового преобразования. Часто это цифровое представление аналогового параметра, обычно получаемого от какого-то датчика, на основе которого строится процесс управления, и основное применение микроконтроллера в таком случае видится в системах автоматизации. Способность управлять большими и сложными механическими системами, используя миниатюрный и относительно дешевый «кусочек» кремния, способствовало тому, что микроконтроллеры стали самым важным элементом промышленных систем автоматизации, и не удивительно, что многие производители стали выпускать специализированные семейства микроконтроллеров.

Прецизионная работа

По соображениям коммерческой необходимости предполагается, что процесс преобразования данных, как ключевая функция микроконтроллеров, должен быть экономически эффективно внедрен в микроконтроллер, что приводит к повышению уровня интеграции функционала для обработки смешанных сигналов. Кроме того, рост уровня интеграции способствует увеличению нагрузки на ядро.

Низкая стоимость и гибкость функционала микроконтроллеров означает широкое применение микроконтроллеров в различных приложениях, но производители в настоящее время стремятся к объединению множества функций в одном микроконтроллере по соображениям экономической эффективности, сложности или безопасности. Где когда-то, возможно, использовались десятки микроконтроллеров, сейчас потребуется только один.

Поэтому неудивительно, что то, что начиналось с 4-разрядных устройств, теперь превратилось в очень сложные и мощные 32-разрядные процессорные ядра, а ядро ARM Cortex-M стало выбором многих производителей.

Совместить высокопроизводительное процессорное ядро с прецизионным и стабильным аналоговым функционалом – непростая задача. Технология КМОП идеальна для высокоскоростных цифровых схем, но с реализацией чувствительной аналоговой периферии могут быть проблемы. Одной из компаний, имеющей огромнейший опыт в этой области, является Analog Devices. Разработанное компанией семейство полностью интегрированных систем сбора данных ADuCM предназначено для непосредственного взаимодействия с прецизионными аналоговыми датчиками. При таком подходе не только уменьшается количество внешних компонентов, но и гарантируется точность преобразования и измерений.

Преобразователь, интегрированный, например, в систему ADuCM360 с ядром ARM Cortex-M3, представляет собой 24-разрядный сигма-дельта АЦП, являющийся частью аналоговой подсистемы. В указанную систему сбора данных интегрированы программируемые источники тока возбуждения и генератор напряжения смещения, но более важной частью являются встроенные фильтры (один из которых используется для прецизионных измерений, другой – для быстрых измерений), которые применяются для обнаружения больших изменений в исходном сигнале.

Работа с датчиками в режиме «глубокого сна»

Производители микроконтроллеров учитывают важную роль датчиков в системах автоматизации и начинают разрабатывать оптимизированные входные аналоговые схемы, которые обеспечивают специализированный интерфейс для индуктивных, емкостных и резистивных датчиков.

Разработаны даже такие входные аналоговые схемы, которые могут работать автономно, например, интерфейс LESENSE (Low Energy Sensor) в микроконтроллерах с ультранизким энергопотреблением компании Energy Micro (Рисунок 1). В состав интерфейса входят аналоговые компараторы, ЦАП и контроллер (секвенсер) с низким потреблением, который программируется ядром микроконтроллера, но затем работает автономно, в то время как основная часть устройства находится в режиме «глубокого сна».

Рисунок 1. Технология LESENSE, интегрированная в микроконтроллеры EFM32, подразумевает автономную работу интерфейса датчиков в системах промышленного контроля и автоматизации.

Контроллер интерфейса LESENSE работает от источника тактовой частоты 32 кГц и управляет его активностью, в то время как выходы компаратора могут быть сконфигурированы как источники прерываний для «пробуждения» процессора, а ЦАП может быть выбран в качестве источника опорного сигнала компаратора. Технология LESENSE также включает в себя программируемый декодер, который можно настроить на генерирование сигнала прерывания только при выполнении условий нескольких датчиков в одно время. Компания Digi-Key предлагает стартовый набор EFM32 Tiny Gecko Starter Kit, в состав которого входит демонстрационный проект LESENSE. Микроконтроллеры семейства Tiny Gecko выполнены на ядре ARM Cortex-M3 с рабочей частотой до 32 МГц и нацелены на применение в системах промышленной автоматизации, где требуется измерение температуры, вибрации, давления и регистрация движений.

Рисунок 2. Стартовый набор EFM32 Tiny Gecko Starter Kit позволит полностью оценить возможности микроконтроллеров семейства Tiny Gecko.

Протокол IO-Link

Внедрение нового мощного интерфейса датчиков и исполнительных механизмов помогает многим производителям продлить жизненный цикл своих 8- и 16-разрядных микроконтроллеров на арене промышленных систем автоматизации. Этот протокол интерфейса передачи данных получил название IO-Link и уже поддерживается лидерами в секторе промышленной автоматизации и, в частности, производителями микроконтроллеров.

Передача данных по протоколу IO-Link осуществляется по 3-проводному неэкранированному кабелю на расстояния до 20 метров, что позволяет внедрить интеллектуальные датчики и исполнительные механизмы в существующие системы. Протокол подразумевает, что каждый датчик или исполнительный механизм является «интеллектуальным», другими словами каждая точка выполнена на микроконтроллере, но сам протокол очень простой, поэтому для этих целей вполне будет достаточно 8-разрядного микроконтроллера, и это именно то, что используется в настоящее время многими производителями.

Протокол (также известный как SDCI — Single-drop Digital Communication Interface, регламентирован по спецификации IEC 61131-9) является сетевым коммуникационным протоколом связи типа «точка-точка», с помощью которого связываются датчики и исполнительные механизмы с контроллерами. IO-Link делает возможным интеллектуальным датчикам передавать в контроллеры свой статус, параметры всех настроек и внутренние события. Как таковой, он не предназначен для замены существующих коммуникационных уровней, таких как FieldBus, Profinet или HART, но может работать вместе с ними, упрощая обмен данными бюджетного микроконтроллера с прецизионными датчиками и исполнительными механизмами.


Консорциум производителей, использующих IO-Link, считает, что можно значительно снизить сложность систем, а также ввести дополнительные полезные функции, например, диагностику в реальном времени посредством параметрического мониторинга (Рисунок 3). При интеграции в топологию FieldBus через шлюз (опять же, реализуется на микроконтроллере или программируемом логическом контроллере), сложные системы могут контролироваться и управляться централизованно из диспетчерской. Датчики и исполнительные механизмы можно настроить удаленно, отчасти потому, что датчики по спецификации IO-Link знают о себе намного больше, чем «обычные» датчики.

В первую очередь заметим, что собственный идентификатор (и производителя) и различные настройки встроены в датчик в формате XML и доступны по запросу. Это позволяет системе мгновенно классифицировать датчик и понять его назначение. Но, что более важно, IO-Link позволяет датчикам (и исполнительным механизмам) предоставлять контроллеру данные непрерывно в реальном времени. Фактически, протокол подразумевает обмен тремя типами данных: данные о процессе, сервисные данные и данные о событиях. Данные о процессе передаются циклически, а сервисные данные передаются ациклично и по запросу ведущего контроллера. Сервисные данные могут использоваться при записи/чтении параметров устройства.

Рисунок 3. Интерфейс IO-Link предлагает для микроконтроллеров более простой способ обмена данными с интеллектуальными датчиками и исполнительными механизмами, а для разработчиков – возможность создавать интеллектуальные системы автоматизации.

Некоторые производители микроконтроллеров присоединились к консорциуму IO-Link, который недавно стал Техническим Комитетом (TC6) в составе международного сообщества PI (PROFIBUS & PROFINET International). По сути, IO-Link устанавливает стандартизированный метод для контроллеров (включая микроконтроллеры и программируемые логические контроллеры) для идентификации, контроля и обмена данными с датчиками и исполнительными механизмами, которые используют этот протокол. Список производителей IO-Link-совместимых устройств постоянно растет, как и всесторонняя аппаратно-программная поддержка производителей микроконтроллеров.

Часть этой поддержки исходит от компаний специализирующихся на этой области, например, Mesco Engineering – немецкая компания, которая сотрудничает с рядом производителей полупроводниковых приборов с целью разработки решений IO-Link. В списке ее партнеров достаточно крупные и известные компании: Infineon, STMicroelectronics, Atmel и Texas Instruments. Infineon, например, портировала программный стек от Mesco на свои 8-разрядные микроконтроллеры серии XC800, а также оказывает поддержку разработки ведущего устройства IO-Link на базе своих 16-разрядных микроконтроллеров.

Стек, разработанный Mesco, также был портирован на 16-разрядные микроконтроллеры Texas Instruments серии MSP430, в частности, для MSP430F2274.

Производители также уделяют свое внимание разработке дискретных приемопередатчиков интерфейса IO-Link. Например, компания Maxim выпускает микросхему MAX14821, которая реализует интерфейс физического уровня для микроконтроллера, поддержтвающего канальный уровень протокола (Рисунок 4). Два внутренних линейных регулятора вырабатывают общие для датчика и исполнительного механизма напряжения питания 3.3 В и 5 В, подключение к микроконтроллеру для конфигурирования и мониторинга осуществляется по последовательному интерфейсу SPI.

Рисунок 4. Микросхема приемопередатчика MAX14821 предоставляет физический уровень интерфейса IO-Link для микроконтроллера, реализующего канальный уровень интерфейса.

Вполне вероятно, что благодаря простоте реализации и внедрения интерфейса IO-Link, все больше производителей будут интегрировать этот физический уровень с другой специализированной периферией, присутствующей в микроконтроллерах, с целью применения в промышленных системах автоматизации. Компания Renesas уже представила ассортимент специализированных контроллеров IO-Link Master/Slave на основе своих 16-разрядных микроконтроллеров семейства 78К.

Системы промышленной автоматизации всегда зависели от сочетания измерений и управления. В течение последних нескольких лет заметен рост уровня промышленных сетевых коммуникаций и протоколов, однако, интерфейс между цифровой и аналоговой частью системы остался относительно неизменным. С введением интерфейса IO-Link датчики и исполнительные механизмы, разрабатываемые в настоящее время, способны все же взаимодействовать с микроконтроллером в более изощренной форме. Коммуникационный протокол связи типа «точка-точка» обеспечивает не только более простой способ обмена данными для управления элементами системы, но и расширение возможностей бюджетных микроконтроллеров.

Перевод: Vadim по заказу РадиоЛоцман

Каков рабочий цикл моего микроконтроллера?

Скажем, у меня активен ОК в течение 1 с каждые 100 с, иначе спать. Это приведет к рабочему циклу 1%.

Но что, если он активен каждые десять секунд, один раз каждые 100 секунд, а затем один раз в неделю? За какой период времени я рассчитываю рабочий цикл?

3 ответа

Если я правильно прочитал ваш вопрос, значит, у вас пробуждение с тремя разными интервалами одновременно:

  • Раз в десять секунд и
  • Один раз каждые 100 секунд и
  • Раз в неделю

В этом случае вы должны рассчитать рабочий цикл за самый длинный интервал, в данном случае одну неделю. Затем рассчитайте все меньшие интервалы с точки зрения большего.

Неделя составляет 7 дней, каждый день — 24 часа, каждый час — 3600 секунд, поэтому ваша неделя составляет 7 * 24 * 3600 = 604800 секунд. В течение этого интервала вы проснетесь:

  • 60480 раз (для интервала один раз / 10 секунд) плюс
  • 6048 раз (для интервала один раз / 100 секунд) плюс
  • 1 раз (для интервала раз в неделю)

Другими словами, через 604800 секунд вы проснетесь 60480 + 6048 + 1 = 66529 раз. Рассчитайте время пробуждения для каждого пробуждения (в секундах, даже если оно дробное), умножьте его на 66529 и разделите 604800, а затем умножьте на 100%: это ваш рабочий цикл.

Рабочий цикл показывает, как долго работает ваш ОК, относительно периода (\ $ T \ $) сигнала. Как правило, это \ $ \ frac > \ cdot100 \% \ $. Вы должны рассчитать рабочий цикл за один (или более) полных периодов. То есть вы можете рассчитать только коэффициент заполнения периодического сигнала.

Давайте сделаем пример:

Это не очень хорошая фотография, но я дал первое время \ $ a_1 \ $, первое время \ $ i_1 \ $, второе время \ $ a_2 \ $ и второе вне времени \ $ i_2 \ $.

Опять же, вы должны принять полный период сигнала. Вы видите, что сигнал повторяется после \ $ T = t_ + t_ + t_ + t_ \ $. Теперь вы можете рассчитать рабочий цикл с помощью:

Итак, чтобы ответить на ваш вопрос: рассчитайте рабочий цикл за один полный период. Это означает, что вы можете рассчитать только рабочий цикл периодического сигнала. Если ваш ОК включается, например, из-за внешнего сигнала, рассчитывать коэффициент заполнения не имеет смысла. Конечно, вы можете оценить, как долго он будет работать и как долго он будет выключен, чтобы увидеть, сколько энергии он будет потреблять.

Выбор микроконтроллера для автономных измерительных устройств

В данной статье описываются особенности применения микроконтроллеров в автономных устройствах. Рассматриваются такие характеристики микроконтроллеров как: диапазоны питания, производительность, режимы пониженного энергопотребления, наборы инструкций, ПЗУ, ОЗУ, интерфейсы микроконтроллеров фирм Motorola, Atmel, Microchip.

Рис.1

Микроконтроллеры являются основной частью для большинства современных автономных устройств. Он может выполнять как функции управления, так и служить промежуточным звеном между исследуемым объектом и устройством верхнего уровня. На рис.1 представлена обобщенная функциональная схема автономного измерительного устройства. Сигналы с датчиков D1-Dn поступают на преобразователи сигнала П1-Пn, после чего оцифровываются в АЦП1-АЦПn и через порты ввода/вывода попадают непосредственно в микроконтроллер. Блок АЦП нужен не всегда, например, если встроенное АЦП микроконтроллера удовлетворяет техническим требованиям, то можно им воспользоваться.

Полученная информация может храниться в ОЗУ микроконтроллера, во встроенном ППЗУ (перепрограммируемое постоянное запоминающее устройство), а если объема памяти недостаточно, то данные могут храниться во внешнем ППЗУ, либо по интерфейсу передаваться в устройство верхнего уровня. С помощью микроконтроллера намного легче организовывать различные функциональные узлы, что приводит к минимизации затрат времени и денег. Это объясняется тем, что в нем помимо микропроцессорного блока существуют и ряд периферийных модулей, которые могут заменять дополнительные схемы. Так, цифровой порт ввода/вывода может служить для управления какими-либо устройствами, и, одновременно принимать от них дискретные сигналы. Аналоговый порт/ввода вывода предназначен для тех же целей, только с аналоговыми сигналами. Последовательный порт незаменим для организации связи с другими микросхемами или устройствами. Но, в отличие от ряда других функциональных узлов, отказ микроконтроллера приводит к отказу всей системы. Поэтому при разработке устройств, выбору микроконтроллера уделяется особое внимание.

Требования, предъявляемые к микроконтроллерам в автономных устройствах, несколько отличаются от стандартных требований. Тогда как в стационарных устройствах требования к пониженному энергопотреблению микроконтроллеров не являются определяющими, в автономных устройствах они выходят на передней план. Также следует не забывать и про надежность микроконтроллеров, а, следовательно, и всей системы, ведь зачастую, автономная аппаратура вынуждена работать в полевых условиях. Есть еще ряд причин, которые позволяют отделить выбор микроконтроллера для автономных устройств от выбора микроконтроллера для стационарных систем.

Зачастую автономные устройства это системы с автономным питанием, то есть с питанием от батареек или аккумуляторов. В данном случае, желательно использовать микроконтроллер с расширенным либо с пониженном диапазоном питания. Микроконтроллеры с расширенным диапазоном питания относительно неприхотливы к напряжению питания и подходят как для устройств с сетевым, так и с автономным питанием. Микроконтроллеры с пониженным диапазоном питания предназначены для изделий с автономным питанием, т.к. их ток потребления в несколько раз меньше тока потребления других микросхем. В то же время следует помнить, что микроконтроллеры с пониженным диапазоном питания обычно имеют меньшую максимальную частоту тактирования. Поэтому сначала надо рассчитать требуемую тактовую частоту микроконтроллера, а только затем выбирать его тип.

Для микроконтроллеров, которые питаются от автономного источника напряжения, обязательна функция сброса по снижению напряжения питания. Если напряжение микроконтроллера опускается ниже определенного значения на заданное время, то происходит сброс. Также следует не забывать про режимы пониженного энергопотребления микроконтроллера. В данных режимах микроконтроллер не выполняет часть своих функций, однако потребляет намного меньше тока. У каждого типа микроконтроллера существуют свои особенности в построении, которые зачастую существенно отличаются друг от друга. Наиболее распространенными являются восьмиразрядные микроконтроллеры, поэтому рассмотрим особенности построения средних семейств восьмиразрядных микроконтроллеров ведущих фирм, таких как Microchip (PIC-контроллеры), Motorola и Atmel (AVR), применительно к автономным устройствам.

Микроконтроллеры фирмы Motorola семейства HC08 имеют 2 режима пониженного энергопотребления. В режиме ожидания (Wait mode) останавливается тактовый генератор центрального процессора, однако продолжается тактирование периферийных модулей и разрешаются прерывания. Также существует возможность программно отключать неиспользуемые периферийные модули, что приводит к меньшему энергопотреблению. Выход из этого режима может быть осуществлен по сигналу внешнего сброса, по переполнению сторожевого таймера, по запросу внешних прерываний и прерываний от периферийных модулей. В режиме останова (Stop mode) прекращается тактирование всей схемы микроконтроллера, и разрешаются прерывания. Выход из этого режима также может быть осуществлен по сигналу внешнего сброса и по запросу внешних прерываний.

У микроконтроллеров фирмы Microchip среднего семейства существует один режим энергосбережения – Sleep mode. В данном режиме выключается тактовый генератор микроконтроллера, сбрасывается сторожевой таймер, порты ввода/вывода свое состояние не изменяют. Выход из режима Sleep mode происходит при подачи сигнала внешнего сброса, при переполнении сторожевого таймера (если он разрешен) и при периферийном прерывании.

Для микроконтроллеров семейства Classic AVR предусмотрено 2 режима пониженного энергопотребления. При работе микроконтроллера в режиме холостого хода (Idle mode) центральный процессор останавливается, но продолжается тактирование таймеров/счетчиков и сторожевого таймера. Если прерывание от аналогового компаратора не требуется, то он может быть программно отключен. Выход из режима холостого хода происходит как от внешних прерываний, так и по переполнению таймеров/счетчиков или по сбросу сторожевого таймера. Когда микроконтроллер работает в экономичном режиме (Power Down Mode) останавливается генератор тактовых импульсов. Если разрешена работа сторожевого таймера, то выход из экономичного режима может произойти при его переполнении. В противном случае, выход произойдет только по сигналу внешнего сброса или внешнего прерывания.

Для микроконтроллеров семейства Classic AVR предусмотрено 2 режима пониженного энергопотребления. При работе микроконтроллера в режиме холостого хода (Idle mode) центральный процессор останавливается, но продолжается тактирование таймеров/счетчиков и сторожевого таймера. Если прерывание от аналогового компаратора не требуется, то он может быть программно отключен. Выход из режима холостого хода происходит как от внешних прерываний, так и по переполнению таймеров/счетчиков или по сбросу сторожевого таймера. Когда микроконтроллер работает в экономичном режиме (Power Down Mode) останавливается генератор тактовых импульсов. Если разрешена работа сторожевого таймера, то выход из экономичного режима может произойти при его переполнении. В противном случае, выход произойдет только по сигналу внешнего сброса или внешнего прерывания.

Из всего вышесказанного можно сделать вывод, что с точки зрения пониженного энергопотребления, микроконтроллеры фирм Motorola и AVR являются более предпочтительными, чем PIC-контроллеры. Это обусловлено наличием у данных микроконтроллеров двух режимов пониженного энергопотребления, тогда как у PIC-контроллеров он только один.

Основной целью выбора микроконтроллера является нахождение такой микросхемы, которая полностью бы удовлетворяла техническому заданию на устройство, но в тоже время была бы наименее дорогой. Прежде всего, следует определиться какой набор функций должен выполнять микроконтроллер. Как правило, микроконтроллер представляет собой законченную микропроцессорную систему, выполненную на одном кристалле, которая содержит основные функциональные блоки микропроцессорной системы (центральный процессор, постоянное запоминающее устройство, оперативное запоминающее устройство и периферийные устройства для ввода и вывода информации). В настоящее время всеми ведущими компаниями широко используется модульный принцип построения микроконтроллеров. При таком способе построения, у микроконтроллеров одного семейства есть базовый функциональный блок (процессорное ядро), который одинаковый для всех микроконтроллеров семейства, и изменяемый функциональный блок, который отличает микроконтроллеры разных моделей в приделах одного семейства. В изменяемый функциональный блок входят модули различных типов памяти, модули встроенных генераторов синхронизации, модули периферийных устройств и некоторые другие модули.

Как для автономных, так и для стационарных систем, одним из основных критериев выбора микроконтроллера является его производительность, которая напрямую зависит от производительности процессорного ядра. В настоящее время применяются 2 принципа построения ядра: с полной системой команд (CISC) и с сокращенной системой команд (RISC). По первому принципу построены микроконтроллеры таких производителей, как Motorola, Philips, Dallas, часть продукции Atmel. Микроконтроллеры с RISC архитектурой производятся фирмами Microchip, Scenix, Atmel.

Для процессора с CISC архитектурой применяется однобайтовый, двухбайтовый, трехбайтовый или четырехбайтовый формат команды. Выборка команды из памяти осуществляется в течение нескольких циклов синхронизации. Формат команд для RISC-процессоров может быть произвольным, например 14 или 16 байт, а выборка осуществляется за 1 цикл синхронизации, поэтому микроконтроллеры с RISC архитектурой имеют более высокую производительность по сравнению с CISC-контроллерами. Однако, следует учесть и внутреннее изменение тактовой частоты, так в PIC-контроллерах (Microchip) частота делится на 4, в микроконтроллерах AVR (Atmel) частота не изменяется, а в микроконтроллерах фирмы Motorola — увеличивается. Кроме того, у каждого типа микроконтроллера существует свой набор команд: семейство Classic AVR насчитывают 120 команд; система команд микроконтроллеров Motorola семейства HC08 включает 90 инструкций; среднее семейство PIC-контроллеров содержит 35 инструкций. Чем больше инструкций «понимает» процессор, тем меньше получается размер программы, а, следовательно, экономится память программ и увеличивается быстродействие. Также следует учесть, что производительность зависит от выполняемой программы. Так, в автономных измерительных устройствах редко используются сложные математические алгоритмы, поэтому наличие в системе таких инструкций, как деление и умножение не является определяющим. Автономные устройства часто используются для сбора различных данных, а для их хранения требуется формировать таблицы. В данном случае будут полезны команды ветвления и переходов, а также различные способы адресации. Исходя из этого, микроконтроллеры фирмы Motorola и AVR обладают наибольшем количеством требуемых инструкций, однако нельзя однозначно сказать, что их производительность выше, чем у PIC-контроллеров. Производительность микроконтроллера следует определять для каждого конкретного случая.

Практически все современные микроконтроллеры имеют закрытую архитектуру, т.е. не используют внешние микросхемы для хранения памяти программ. Как правило, для автономных устройств не требуется большой объем памяти программ, так что рассмотрим только ею технологию изготовления. В настоящие время широко применяются 2 типа памяти программ – однократно программируемое пользователем ПЗУ (OTPROM) и Flash память. OTPROM уже давно используется в микроконтроллерах и является конкурентоспособной благодаря достаточно небольшой цене. Flash память стоит несколько дороже, однако имеет ряд несомненных преимуществ перед OTPROM. В отличие от OTPROM, Flash память многократно программируемая, причем имеет достаточно большое число циклов стирания/программирования. Это может оказаться полезным при модернизации устройств. Если микроконтроллер с OTPROM придется заменить, то в микроконтроллер с Flash памятью надо всего лишь записать новую программу. Причем у большинства современных микроконтроллеров есть режим внутрисхемного (низковольтного) программирования, который позволяет записывать программу в память микроконтроллера непосредственно на плате изделия. Также Flash память программ очень удобна при разработке программы, когда приходиться много раз перепрограммировать контроллер.

Для микроконтроллеров фирмы Motorola семейства HC08 гарантированное число циклов стирания/записи составляет 105, информация хранится на протяжении 10 лет и имеется низковольтный режим программирования. Flash память микроконтроллеров AVR и среднего семейства PIC-контроллеров может перепрограммироваться 1000 раз, также имеется низковольтный режим программирования. Видно, что у рассматриваемых микроконтроллеров, характеристики Flash памяти программ у изделий фирмы Motorola наиболее лучшие.
Рассмотрим оперативную память микроконтроллеров фирм Microcip, Atmel, Motorola. ОЗУ микроконтроллеров первых двух компаний сделано по Гарвардской архитектуре, а у микроконтроллеров фирмы Motorola общее адресное пространство памяти программ и памяти данных. Автономные устройства часто работают без возможности самостоятельной передачи данных пользователю, поэтому необходимо место для хранения информации. Одним из решений является хранение данных в ОЗУ, следовательно, чем больше объем ОЗУ, тем больше данных может в нем храниться.

У микроконтроллеров AVR (семейство Classic AVR) максимальный объем ОЗУ составляет 512 байт, у микроконтроллеров Motorola семейства HC08 – 2КБ, а у PIC-контроллеров 368 байт. Кроме того, для автономных систем, очень важен такой параметр как напряжение хранения информации. Если напряжение питания снижается ниже минимально допустимого уровня, но выше напряжения хранения информации, то программа не выполняется, а данные в ОЗУ сохраняются. Напряжение хранения информации в микроконтроллерах фирмы Motorola, PIC и AVR составляет порядка 1-1,5В. Объем ОЗУ у микроконтроллеров фирмы Motorola семейства HC08 в несколько раз больше, чем у PIC-контроллерах или AVR, следовательно они могут хранить набольшее количество информации в ОЗУ.

Одной из важнейших особенностей микроконтроллера в автономном устройстве является наличие интерфейса. Интерфейс служит для двух целей: первая это организация связи автономного устройства с другими устройствами (с компьютером или интеллектуальным датчиком), а вторая – связь микроконтроллера с другими микросхемами на плате. Разумеется, часто случается, что автономное устройство работает вне какой-либо системы, и не требуется передачи или прием данных от другого устройства, тогда интерфейс нужен лишь для связи микроконтроллера с другими микросхемами. В настоящее время, большое количество интегральных микросхем имеют интерфейсы для обмена данными, например, микросхемы памяти, АЦП, ЦАП. Это значительно упрощает схемотехнику платы, и что особенно важно для автономных устройств — уменьшает ее размер. В основном, для данных целей применяются последовательные интерфейсы, так как, по сравнению с параллельными, требуется малое число проводов связи или малое число дорожек платы. Интерфейсы можно разделить на периферийные и приборные. Первые являются уже стандартными и общепринятыми интерфейсами, а вторые созданными специально для конкретного случая. Рассмотрим характеристики основных периферийных интерфейсов в средних семействах микроконтроллеров фирм Motorola, Atmel, Microchip.

В семействе микроконтроллеров HC08 фирмы Motorola существуют три модуля последовательных интерфейсов: SPI08, SCI08, msCAN08. Первый модуль реализует интерфейс SPI. SPI-шина представлена тремя общими линиями связи и линией выбора ведомого устройства. Только одно из устройств может быть ведущим, а остальные должны быть определены как ведомые. Для микроконтроллеров семейства HC08 модуль SPI08 обладает следующими характеристиками: поддерживает 2 режима работы (ведущий и ведомый); максимальная скорость обмена в ведущем режиме составляет 4 Мбит/с, а в ведомом – 8 Мбит/с; возможность программной настройки частоты обмена; генерирует запросы на прерывания с разными векторами; генерирует 2 флага нарушения работы. Модуль SCI08 служит для реализации последовательного асинхронного интерфейса SCI и предназначен для обмена с устройствами верхнего уровня. Этот модуль обладает следующими параметрами: дуплексный стандартный асинхронный режим обмена; программная настройка частоты; максимальная скорость обмена равна 131 кбит/с; генерирует запросы на прерывания с разными векторами; генерирует 4 флага нарушения работы. Модуль последовательного интерфейса msCAN08 формирует обмен данными по протоколам CAN2.0A и CAN2.0B. Данный модуль использует 2 вывода микроконтроллера, для подключения к CAN-шине требуется специализированная микросхема. Модуль msCAN08 обладает следующими характеристиками: максимальная скорость передачи — 1 Мбит/с; поддержка запросов данных от других устройств; двойная буферизация принимаемых кадров; тройная буферизация передаваемых кадров.
Часть микроконтроллеров AVR также поддерживают интерфейс SPI. Кроме того, в их состав входит встроенный универсальный асинхронный приемопередатчик UART. Основные характеристики данного модуля: генерация произвольных значений скорости; высокая скорость при низких тактовых частотах; фильтрация шума; определение переполнения; детектирование ошибок кадра; раздельные вектора прерывания.

В состав PIC-контроллеров входят модуль ведущего синхронного последовательного порта (MSSP) и универсальный синхронно-асинхронный приемопередатчик (USART). Модуль MSSP может работать в двух режимах: SPI и Inter-Integrated Circuit (I2C). В режиме SPI микроконтроллер может работать как в качестве ведущего, так и в качестве ведомого устройства. Существует возможность выбора: полярности тактового сигнала; фазы выборки входных данных; активного фронта тактового сигнала; частоты тактового сигнала. Также можно выбрать один из следующих режимов I2C: ведомый режим I2C с 7-разрядной адресацией; ведомый режим I2C с 10-разрядной адресацией; ведущий режим I2C; программная поддержка ведущего режима I2C. Модуль USART может работать в трех режимах: асинхронный полнодуплексный; ведущий синхронный полудуплексный; ведомый синхронный полудуплексный.

В настоящие время наиболее часто используемыми являются интерфейсы SPI и I2C, поэтому PIC-контроллеры являются наиболее предпочтительными в плане реализации связи с другими устройствами.
Таким образом, из всего вышесказанного можно сделать вывод, что микроконтроллеры фирмы Motorola семейства HC08 наиболее предпочтительны для использования в автономных устройствах. Кроме того, данные микроконтроллеры являются одними из самых надежных в мире, за что и были отмечены большим количеством наград. Однако, недостатком этих микроконтроллеров является отсутствие интерфейса I2C, что позволяет PIC-контроллерам в некоторых случаях быть предпочтительней.

Рабочий цикл микроконтроллера

В дополнение к стандартному режиму выполнения программы, микроконтроллеры семейства MAXQ имеют три других режима работы. В режиме сбороса микропроцессор временно приостанавливается внешним или внутренним источником сброса. В режиме управления питанием для снижения потребляемой мощности микропроцессор выполняет команды на пониженной тактовой частоте. В режиме останова для снижения потребляемой мощности приостанавливается выполнение программы и останавливаются все внутренние источники синхросигнала до тех пор, пока внешний сигнал не инициализирует продолжение выполнения программы.

В режиме сброса программа не выполняется, системные и периферийные устройства не выполняют никаких действий, а все выводы портов ввода-вывода переходят в заданное по умолчанию состояние. После окончания условия сброса микропроцессор начинает выполнять код с адреса 8000h.

Имеется четыре источника, которые могут перевести микроконтроллер MAXQ в режим сброса:

  • Сброс при включении питания или при кратковременном пропадании питания
  • Внешний источник сброса
  • Сброс при переполнении сторожевого таймера
  • Внутренний системный сброс

Сброс при включении питания или при кратковременном пропадании питания

Встроенная схема сброса при включении питания (POR) предназначена для обеспечения гарантированной инициализации всех внутренних узлов. Схема сброса при включении питания обеспечивает формирование минимальной задержки при включении питания, достаточной для их инициализации. При быстро нарастающем напряжении питания VDD микроконтроллер MAXQ будет гарантированно находиться в режиме сброса в течение инициализации питания. При медленно нарастающем напряжении питания VDD микроконтроллер MAXQ будет находиться в режиме сброса до тех пор, пока напряжение питания VDD не превысит порогового значения напряжения питания при сбросе. Минимальное время задержки и пороговое значение напряжения питания при сбросе у различных микроконтроллеров MAXQ могут быть различными. Для уточнения этих параметров следует обратиться к техническому описанию конкретного микроконтроллера.

Некоторые микроконтроллеры MAXQ также могут содержать схему обнаружения кратковременного пропадания напряжения питания. У этих приборов встроенные прецизионный источник опорного напряжения (ИОН) и компаратор отслеживают нахождение напряжение питания VDD в допустимых пределах. Если напряжение питания VDD становится меньше порогового значения, то эта схема формирует сигнал сброса. Это может произойти, когда микроконтроллер MAXQ включается до того, как напряжение питания VDD станет выше порогового напряжения POR или когда VDD выходит за допустимые пределы.

В любом случае микроконтроллер находится в режиме сброса до тех пор, пока VDD не превысит порог сброса VRST. После того, как VDD станет больше напряжения VRST, выполнение программы может быть продолжено после необходимой для запуска синхрогенератора задержки.

После выхода микроконтроллера из режима сброса при включении питания или при кратковременном пропадании питания в управляющем сторожевом регистре (WDCN) бит POR устанавливается в единицу и может быть сброшен программно. Этот бит позволяет прикладной программе определить, произошел ли сброс при включении питания или при другом условии.

Если в нормальном режиме работы на выводе RST в течение не менее четырех тактовых циклов присутствует низкий логический уровень, то микроконтроллер переходит в режим внешнего сброса. Если микроконтроллер MAXQ находится в режиме останова (то есть системный синхрогенератор не активен), то вывод RST становится асинхронным источником, вызывая переход в режим сброса сразу после установки на выводе сброса логического нуля. Микроконтроллер MAXQ находится в режиме сброса до тех пор, пока на выводе RST присутствует логический ноль. После установления на выводе RST логической единицы микропроцессор выходит из режима сброса за четыре тактовых цикла и начинает выполнение программы с адреса 8000h.

У многих микроконтроллеров MAXQ вывод RST может быть как входом, так и выходом. Если условие возврата вызвано другим источником (например, кратковременным пропаданием напряжения питания или внутренним сбросом), то на выводе RST в течение всего режима сброса устанавливается активный сигнал. Если к выводу RST подключена RC цепочка или аналогичная схема, то она не позволит сформировать сигнал сброса. Но даже это не повлияет на внутреннее условие сброса.

Сброс при переполнении сторожевого таймера

Сторожевой таймер — программируемый аппаратный таймер, который может быть настроен на сброс микроконтроллера в случае зацикливания программы или при какой-то другой ошибочной ситуации. При активном сторожевом таймере микропроцессор должен периодически сбрасывать его, чтобы избежать сброса. Если микропроцессор не сбросит сторожевой таймер до его переполнения, то он инициализирует режим сброса.

Если сторожевой таймер сбрасывает микропроцессор, то он остается в режиме сброса четыре тактовых цикла. После выхода из этого режима микропроцессор начнет выполнять программу с адреса 8000h. При сбросе при переполнении сторожевого таймера в регистре WDCN устанавливается бит сброса при переполнении сторожевого таймера, который может быть сброшен программно. Этот бит позволяет прикладной программе определить, что сброс произошел при переполнении сторожевого таймера.

Внутренний системный сброс

Микроконтроллеры MAXQ могут иметь функции, позволяющие формировать условие внутреннего системного сброса. Это условие также детектируется после сброса. Такая функция может быть вызвана при внутрисистемном программировании. По окончании внутрисистемного программирования может быть инициализирован сброс, условие возникновения которого будет определено при последующем запуске микроконтроллера.

Режим управления питанием

Потребляемая мощность в КМОП схемах складывается из нескольких составляющих, но рассмотрим только две основные. Первая составляющая — статическое потребление, вызванное непрерывным током утечки. Вторая — динамическое потребление, вызванное током, протекающим при переходных процессах, вызванных необходимостью зарядки и разрядки нагрузочных конденсаторов, а так же сквозным ток, протекающим между VDD и землей при переключении логических элементов.

Обычно динамическая составляющая (PD) является доминирующей, и рассчитать ее можно при известных емкости нагрузки (CL), напряжении питания (VDD) и рабочей частоте (f) как:

PD = CL x VDD2 x f

Емкость и напряжение питания — являются относительно постоянными величинами. Однако рабочая частота определяет тактовую частоту, и требуемая тактовая частота в различных приложениях может отличаться от частоты, рассчитанной исходя из требуемого потребления.

Если используется внешний кварцевый резонатор или внешний автогенератор, рабочая частота может быть изменена при помощи внешних элементов. Однако в некоторых приложениях часть задач должны выполняться с максимальной производительностью, а остальные могут выполняться более медленно. Режим управления питанием позволяет снизить частоту синхронизации, что приведет к снижению потребляемой мощности.

Режим управления питанием активизируется установкой бита PMME в единицу. После того, как этот бит установлен, один тактовый цикл системы формируется каждые 256 циклов автогенератора. В этом режиме все действия выполняются как в нормальном режиме за исключением того, что тактовая частота снижена. Режим управления питанием может быть отключен путем сброса бита PMME в ноль; кроме того, после любого сброса бит PMME также будет сброшен в ноль.

Бит PMME не может быть установлен в единицу, если активен любой Switchback источник. Попытки установить в этом случае бит PMME приводят к выполнению холостой команды.

В режиме управления питанием микроконтроллер MAXQ работает на уменьшенной тактовой частоте. Хотя выполнение программы продолжается как в нормальном режиме, периферийные устройства, которые тактируются от системных синхроимпульсов, например модули UART и SPI, не могут работать с обычным быстродействием. Кроме того, увеличивается время реакции на прерывание.

Характеристика Switchback используется для того, чтобы позволить микропроцессору, работающему в режиме управления питанием быстро переходить в нормальный режим при некоторых условиях, которые требуют высокого быстродействия. Режим Switchback активизируется путем установки бита SWB в единицу. Если активизирован режим Switchback, то микроконтроллер, работающий в режиме управления питанием, автоматически очищает бит PMME и возвращается в нормальный режим, как только происходит одно из следующих условий:

  • Возникновение внешнего разрешенного прерывания на одном из выводов INTx.
  • Установка на входе находящегося в активном состоянии приемника UART низкого уровня (режимы 1, 2 и 3).
  • Запись в регистр SBUF активного передатчика UART передаваемого бита.
  • Запись в регистр SPIB находящегося в активном ведущем режиме SPI модуля (STBY = 1) передаваемого бита.
  • Принятие находящемся в подчиненном режиме модулем SPI сигнала SSEL.
  • Формирование сигнала аварии или сигнала субсекундного интервала встроенными активными часами реального времени (RTC).
  • Достижения точки останова в режиме отладки или получение в фоновом режиме команды ‘Debug’.

Когда микроконтроллер MAXQ находится в режиме останова, то системный синхрогенератор остановлен, и также остановлена обработка всех процессов. Также остановлены все встроенные синхронные периферийные модули. Потребляемая мощность в режиме останова минимальна и определяется в основном статическими токами утечки.

Режим останова активизируется путем установки бита STOP в единицу. Микропроцессор входит в режим останова сразу после выполнения команды, установившей этот бит. Выход микроконтроллера MAXQ из режима останова произойдет после того, как возникнет одно из следующих условий:

  • Возникновение внешнего разрешенного прерывания на одном из выводов INTx. После выхода из подпрограммы обработки прерывания выполнение программы продолжится с команды, следующей за точкой останова.
  • Возникновение внешнего сигнала сброса на выводе RST. После снятия сигнала сброса выполнение программы начнется с адреса 8000h, как это бы было при сбросе микроконтроллера, находящегося в любом другом режиме.

В некоторых микроконтроллерах MAXQ схема обнаружения кратковременных пропаданий питания может быть отключена в режиме останова, поэтому это условие может не вызвать сброса микроконтроллера, как это произошло бы в любом другом режиме.

После выхода из режима останова микроконтроллер возобновляет выполнение программы следующим образом:

  • Если бит RGSL сброшен в ноль, то генератор тактовых импульсов, выбранный битом XT/RC, активизируется, проходя режим установки/стабилизации. В течение периода установки для выполнения может использоваться внутренний кольцевой генератор. По окончании режима установки коммутаторы источников синхронизации автоматически переключаются с внутреннего кольцевого генератора на XT/RC источник. Для определения окончания периода установки можно тестировать бит RGMD.
  • Если бит RGSL установлен в единицу, то для формирования сигналов синхронизации будет использоваться встроенный кольцевой автогенератор, а выбранный XT/RC генератор останется отключенным.

Лекция 12 Структурная схема микроконтроллера

Среди многообразия существующих архитектур МК применяемых в настоящее время сложно определить необходимые конфигурации при выборе конкретного микроконтроллера. Попробуем систематизировать данные, имеющиеся в литературе, и рассмотрим назначение дополнительных блоков входящих в микроконтроллер и их вклад в его работу.

Отличие МК от МП

Современный микроконтроллер состоит из

Центрального процессора (ядра) (процессор, два и более умножителя, 6 и более АЛУ)

памяти (память программ, память данных, память под порты ввода вывода, глобальная память)

Выполнение операций над данными как с фиксированной, так и с плавающей точкой повлекло за собой усложнение структуры функциональных устройств. Это в свою очередь отразилось на сложности МП.

Код программ выполняется на независимых функциональных устройствах в той же последовательности, в которой программируется. За счет применения инструкций сокращаются размеры кода и время выборки команд. Все инструкции содержат условия их выполнения, что снижает время на выполнение переходов по шине данных 256 разрядной можно передать восемь 32 разрядных команд. Для приложений требующих высокую степень точности применяют работу с 40 разрядными операндами. Повышенная точность достигается благодаря уменьшению ошибки округления результата в вычислительных модулях. Аккумулятор для 32 разрядных данных с фиксированной точкой имеет 80 разрядов.

Для повышения быстродействия применяются сигнальные микропроцессоры. Производительность процессоров на сигнальных алгоритмах достигается благодаря многофункциональной и гибкой системе команд, аппаратной реализации большинства типичных для приложений операций, высокой степени параллелизма процессов в МП, сокращению командного такта, применением модифицированной гарвардской архитектуры.
блок схема типового микроконтроллера

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

Память

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

Память программ (Flash ROM или Flash ПЗУ)
Память программ предназначена для хранения последовательности команд, управляющих функционированием микроконтроллера, и имеет 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емени и п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) отслеживает напряжение источника питания. Если схема включена, то при снижении питания ниже некоторого значения она переводит микроконтроллер в состояние сброса. Когда напряжение питания вновь увеличится до порогового значения, запускается таймер задержки сброса. После формирования задержки внутренний сигнал сброса снимается и происходит запуск микроконтроллера.

Рис Блок схема МК 8535

Архитектура микроконтроллера ATmega8535 включает в себя

· 130 команд процессора (большинство команд – однотактные);

· 32 8-разрядных регистра общего назначения;

· максимальная производительность 16 Mips (миллионов операций в секунду)

(максимальная тактовая частота 16 МГц);

· встроенный 2-тактный перемножитель;

· 8 кбайт встроенной электрически перепрограммируемой FLASH памяти (с

возможностью самопрограммирования), число циклов стирания-записи

памяти не менее 10000;

· 512 байт энергонезависимой памяти EEPROM;

· 512 байт внутреннего ОЗУ (SRAM);

· возможность защиты от чтения и модификации памяти программ и данных;

· возможность программирования непосредственно в системе через

последовательный интерфейс SPI.

· 2 8-разрядных независимых таймера-счетчика;

· 1 16-битный таймер-счетчик;

· счетчик реального времени с отдельным тактовым генератором;

· 8 каналов 10-битного АЦП;

· 2-проводный последовательный интерфейс;

· последовательный интерфейс SPI;

· встроенный сторожевой таймер;

· встроенный аналоговый компаратор;

· 4 порта ввода-вывода, включающих 32 линии;

· 40(44)- выводный корпус;

· напряжение питания 4,5…5,5 В;

· тактовая частота 0…16 МГц.

Архитектура ядра микроконтроллера ATmega8535

Ядро микроконтроллеров AVR семейства Mega выполнено по

усовершенствованной RISC-архитектуре (enhanced RISC) (рис. 4), в которой

используется ряд решений, направленных на повышение быстродействия

Арифметико-логическое устройство (АЛУ), выполняющее все вычисления,

подключено непосредственно к 32 рабочим регистрам, объединенным в

регистровый файл. Благодаря этому, АЛУ может выполнять одну операцию

(чтение содержимого регистров, выполнение операции и запись результата

обратно в регистровый файл) за такт. Кроме того, практически каждая из команд(за исключением команд, у которых одним из операндов является 16-битный

адрес), занимает одну ячейку памяти программ. Арифметико-логическое устройство (АЛУ) поддерживает арифметические и

логические операции с операндами в виде двух регистров, либо регистра и

константы. Большинство команд процессора выполняются за 1 такт, равный 1 периоду изменения тактового сигнала.

Указатель исполняемой команды хранится в программном счетчике и

автоматически изменяет свое значение при переходе на следующую команду.

Команды процессора выполняются последовательно, в порядке их следования в программе. При выполнении команд передачи управления (условный или безусловный переход, вызов подпрограммы, прерывание) счетчик команд

автоматически изменяет свое значение, указывая на новый адрес исполняемой команды. Во время прерывания или вызова подпрограммы адрес возврата в

вызывающую (основную) программу сохраняется в стеке. Размер стека ограничен

размером оперативной памяти.

Рис расположение выводов микросхемы.

Flash память позволяет отказаться от металлокерамических корпусов с кварцевым стеклом необходимых для памяти с ультрафиолетовым стиранием это привело к резкому снижению стоимости МК с перезаписываемой памятью.

Программируемый генератор тактов ожидания обеспечивает работу с медленной памятью. За счет увеличения числа тактов внешней шины при работе с медленным устройством. Параллельное функционирование генераторов сокращает длительность выполнения команды, позволяя за один такт выбирать из памяти команду и два операнда. В МП применяются генератор адресов команд (PS) , два генератора данных(DAG) . Наличие двух генераторов адреса обеспечивает пред и постформирование прямого и косвенного адреса данных, что позволяют выполнять над адресами модульные и бит реверсивные операции. Адресные генераторы обеспечивают аппаратную реализацию циклических буферов, позволяющих эффективно работать с АЦП, выполняя фильтрацию и преобразование Фурье

Таймер счетчик обеспечивает периодическую генерации прерываний.

Арбитр памяти обеспечивает совместное использование единой области памяти. Путем выработки сигналов запроса и сигналов готовности при обращении к глобальной памяти (память в МК делится на память программ, память данных память под порты ввода вывода, глобальная память)

Параллельное логическое устройство позволяет выполнять битовые и логические операции над операндами, содержащимися в памяти и различных секторах.

АЛУ способно выполнять арифметические или булевы операции, над комплексными числами используя два регистра аккумулятора или работать как два АЛУ, выполняя две операции одновременно.

Блок барабанного сдвига и блок адресной арифметики позволяют ускорить выполнение типовых операций сигнальной обработки. Блок барабанного сдвига осуществляет сдвиг данных на 0 -31 разряд влево или 0 -16 разрядов вправо за один такт, а также вычисления экспоненциальной функции. Он позволяет выполнять нормализацию содержимого аккумулятора за один такт. Эти функции сдвига позволяют процессору осуществлять масштабирование данных, выделять разряды числа, предотвращать возникновения переполнения и потери значимости.

Блок умножения с накоплением (МАС) повышает гибкость и производительность МК за счет выполнения над 17битными операндами операции S=S+a x b за один процессорный такт. Эта операция применяется для алгоритмов фильтрации свертки, вычисления корреляционной функции. Вместе с АЛУ может осуществлять операции в одном цикле одновременно.

Блок перекодировки позволяет перекодировать значения аккумулятора (интерпретировать его как значение аргумента функции.) за один такт Он позволяет быстро вычислять функцию y=exp(x) за один такт

Блок CMPS обеспечивает реализацию оператора Витерби и выполняет операцию сравнения с накоплением.

Переключатель банков памяти позволяет автоматически добавлять один такт при пересечении границ банка памяти внутри программного адресного пространства или при переходе от пространства адресов команд к пространству адресов данных. Этот дополнительный такт позволяет устройству памяти освободить шину раньше, чем другое устройство получит доступ к ней, избегая тем самым конфликтной ситуации при обращении к памяти.

Встроенный контроллер ПДП позволяет совмещать во времени выполнение обменов данными с памятью и вычисления

Умножитель данных в форматах с плавающей точкой и целочисленном позволяет производить умножение за один такт независимо от типа данных и параллельно с обработкой данных в других функциональных блоках (например, АЛУ)

Модуль регистровой арифметики (используются парами) позволяет работать параллельно с АЛУ и генерирует два адреса в одном такте

Регистр повышенной точности служат для размещения результатов операций с плавающей точкой. Они предназначены для хранения и обработки целых чисел и 40 разрядных чисел с плавающей точкой

Дополнительные регистры предназначены для косвенных способов адресации. Их основная задача генерация 32 разрядных адресов Они могут применятся как счетчики циклов и как регистры общего назначения.

Первичный регистровый файл содержит регистры общего назначения, которые используют АЛУ и умножители совместно.

Двухвходовый блок ROM содержит программу начальной загрузки

КЭШ команд процессора содержит часто используемые участки кода, что позволяет сократить среднее время выборки команд. Кэш работает избирательно — кэшируются только те команды выборка которых конфликтует с выборкой данных из памяти программ (РМ)

Контроллер обмена управляет операциями обмена процессоров и памяти как внутри кристалла через коммутатор, так и вне кристалла с использованием входящих в его состав интерфейсных схем поддерживающих распространенные стандарты памяти и обеспечивающих возможность динамического изменения разрядности шины от 8 до 64. Использование приоритетной дисциплины запросов памяти на обслуживание в режиме DMA контроллер обмена позволяет выполнять обмен данными не прерывая вычислений со скоростью 400Мбайт/с. Он поддерживает линейную и координатную адресацию памяти для эффективного выполнения обмена при работе с 2 и 3 мерными графическими изображениями.

Видеоконтроллер позволяет захватывать и отображать видеоинформацию в режимах как вертикального, так и горизонтального сканирования. Режимы захвата/ сканирования могут устанавливаться для каждого из контроллеров независимо.

М- модуль предназначен для умножения 24 и 32 разрядных целочисленных данных и 32 и 64 разрядных данных в формате с плавающей точкой

L -модуль предназначен для выполнения арифметических операций над 32 и 40 разрядными целочисленными данными и 32 и 64 разрядных данных в формате с плавающей точкой

S-модуль предназначен для выполнения операций сдвига , перехода и отдельных операций с 32 и 64 разрядных данных в формате с плавающей точкой

D — модуль предназначен для выполнения адресных операций.

Регистр режима адресации определяет способ адресации.

Устройство выборки декодирования диспетчеризации команд позволяет направлять до восьми 32 разрядных команд по каждому из путей обработки данных

Буфер каждый буфер состоит из внешнего и внутреннего регистров. При передаче внутренний регистр используется для приема данных из внутренней памяти под управлением контроллера или процессора. Внешний регистр используется для распаковки полубайтов для порта канала (линка). Старший полубайт следует первым. Эти два регистра формируют FIFO очередь. Два слова могут быть помещены в буфер прежде чем выработается сигнал заполнено. Если регистр пуст уровень сигнала низкий. При приеме внешний регистр упаковывает принимаемые полубайты в слова и передает их через внутренний регистр в память под управлением контроллера или процессора. Если они не успели извлечь данные из внутреннего регистра и оба регистра буфера заняты сигнал не выдается и прием прекращается.

Управляющий регистр хранит информацию о состоянии счетчика полубайтов каждого порта линка. Если по завершении передачи счетчик не обнулен то вырабатывается сигнал об ошибке при передаче . Для контроля этого сигнала применяются специальные протоколы на передающем и принимающем концах линка. В конце передачи блока сло передающий МП должен настроить свой порт на прием. Протокол обмена предусматривает передачу одного дополнительного пустого слова. Это позволяет принимающему МП переслать сообщение передающему. Протокол приема предусматривает после получения блока данных выработку прерывания, реализующего чтение управляющего регистра и передачу соответствующего сообщения передающему МП.

В МП используются:

Периферийные режимы. В нем центральный процессор останавливается и работают только периферийные устройства.

Режим сна. В нем процессор останавливается до получения сигнала прерывания

Рис Структурная схема МК

ОРГАНИЗАЦИЯ ПАМЯТИ МИКРОКОНТРОЛЛЕРА ATMEGA8535

Архитектура микропроцессора включает 3 типа памяти:

память программ FLASH;

оперативная память (ОЗУ) SRAM;

энергонезависимая память данных EEPROM.

В микроконтроллерах AVR семейства Mega разделены не только адресные пространства памяти программ и памяти данных, но также и шины доступа к ним. Способы адресации и доступа к этим областям памяти также различны. Такая структура позволяет центральному процессору работать одновременно как с памятью программ, так и с памятью данных, что существенно увеличивает производительность. Каждая из областей памяти данных (ОЗУ и EEPROM) также расположена в своем адресном пространстве.

Память программ размером 8 кбайт представляет собой электрически стираемое ППЗУ (FLASH) и организована в виде 4 кбайт × 16 бит с целью поддержки 16-битных команд . Для возможности защиты кода память программ разделена на 2 секции: секция загрузчика (Boot Program) и секция прикладных программ (Application Program). Поскольку микроконтроллеры AVR имеют 16-битную систему команд, объем памяти программ указан не в байтах, а в 16-битных словах. Память программ является электрически перепрограммируемой, количество циклов перезаписи превышает 10 тысяч. Микропроцессор поддерживает также внутрисхемное программирование, т. е. прошивку программы в микропроцессор можно осуществлять после монтажа на плату посредством специального разъема программирования.

Для адресации памяти программ используется счетчик команд (Program Counter – PC). Счетчик команд (PC) является 12-битным и адресует все адресное пространство памяти команд. По адресу 0x0000 памяти программ находится вектор сброса. После инициализации (сброса) микроконтроллера выполнение программы начинается с этого адреса (по этому адресу должна размещаться команда перехода к инициализационной части программы). Начиная с адреса 0x0001 памяти программ, располагается таблица векторов прерываний. При возникновении прерывания после сохранения в стеке текущего значения счетчика команд происходит выполнение команды, расположенной по адресу соответствующего вектора. Поэтому по данным адресам располагаются команды перехода к подпрограммам обработки прерываний. Положение вектора сброса и таблицы векторов прерываний может быть изменено. Они могут располагаться не только в начале памяти программ, как описано выше, но и в начале области загрузчика. Если в программе прерывания не используются, либо таблица векторов прерываний располагается в области загрузчика, то основная программа может начинаться непосредственно с адреса 0x0001. Память программ может использоваться не только для хранения кода программы, но и для хранения различных констант. Для пересылки байта из памяти программ в память данных существует специальная команда – LPM.

Оперативная память состоит из 608 ячеек, разделенных на 3 области:

32 регистра общего назначения;

64 служебных регистра;

512 байт памяти для хранения данных.

Микропроцессор поддерживает 5 способов адресации операндов команд:

косвенная адресация со смещением;

косвенная адресация с предварительным уменьшением адреса;

косвенная адресация с последующим увеличением адреса.

Регистры общего назначения

Все регистры общего назначения (РОН) объединены в регистровый файл быстрого доступа, структура которого показана на рис. 9. В микроконтроллерах AVR все 32 РОН непосредственно доступны АЛУ, в отличие от 8-битных микроконтроллеров других фирм, в которых имеется только один такой регистр – рабочий регистр W (аккумулятор). Благодаря этому любой РОН может использоваться практически во всех командах и как операнд-источник, и как операнд-приемник. Такое решение (в сочетании с конвейерной обработкой) позволяет АЛУ выполнять одну операцию (извлечение операндов из регистрового файла, выполнение команды и запись результата обратно в регистровый файл) за один такт. Каждый регистр файла имеет свой собственный адрес в пространстве памяти данных. Поэтому к ним можно обращаться двумя способами – как к регистрам и как к памяти, несмотря на то, что физически эти регистры не являются ячейками ОЗУ. Такое решение является еще одной отличительной особенностью архитектуры AVR, повышающей эффективность работы микроконтроллера и его производительность. Последние 6 регистров файла (R26. R31) могут также объединяться в три 16- битных регистра X, Y и Z (см. рис. 9), используемых в качестве указателей при косвенной адресации памяти данных.

Каждый служебный регистр имеет свое имя, адрес и назначение. Адресное пространство служебных регистров поддерживает обращение с помощью команд IN (считать данные из регистра) и OUT (записать данные в регистр). Обращение к отдельным битам служебных регистров возможно посредством команд SBI (установить бит), CBI (сбросить бит). Проверка содержимого битов служебных регистров возможна с помощью команд SBIS и SBIC. К регистрам ввода-вывода можно обращаться и как к ячейкам ОЗУ с помощью соответствующих команд ST/SD/SDD и LD/LDS/LDD (для дополнительных РВВ этот способ является единственно возможным). Среди служебных регистров есть один регистр, используемый наиболее часто в процессе выполнения программ. Это регистр состояния SREG. Он располагается по адресу 0x3F (0x5F) и содержит набор флагов, показывающих текущее состояние микроконтроллера. Большинство флагов автоматически устанавливаются в «1» или сбрасываются в «0» при наступлении определенных событий (в соответствии с результатом выполнения команд). Все биты этого регистра доступны как для чтения, так и для записи; после сброса

микроконтроллера все биты регистра сбрасываются в 0. Эта информация

анализируется при выполнении условных переходов. При возникновении

прерываний содержимое регистра SREG необходимо сохранять программно.

Формат этого регистра показан на рис. 10.

Рис. 10. Регистр состояния SREG

I – бит прерывания; разрешает прерывания, если установлен в «1»; значение «0» запрещает

T – источник сохранения/копирования бита; команды копирования бита (BLD – загрузка

бита; BST – сохранение бита) используют данный бит в качестве источника;

H – десятичный перенос; устанавливается в «1» при генерации переноса из младшей


тетрады битов (4бита) в старшую, используется при работе с двоично-десятичными числами;

S – знаковый бит; определяется как исключающее или битов XOR(V,N);

V – бит переполнения; устанавливается в «1» при выходе за разрядную сетку результата

N – бит отрицательного значения; устанавливается в «1» при отрицательном результате

выполнения последней команды;

Z – бит нулевого значения; устанавливается в «1» при нулевом результате выполнения

C – бит переноса; устанавливается в «1» при генерации переноса последней исполняемой

Память данных представляет собой 512 8-битных ячеек, расположенных по

МИКРОКОНТРОЛЛЕР.

Микроконтроллеры фирмы ATMEL с усовершенствованной RISC архитектурой обладают эффективными программно-аппаратными ресурсами для решения различных задач. Семейство микроконтроллеров AVR содержит и простые модели (AT90S1200, AT90S2313) с минимумом необходимых ресурсов, и весьма сложные модели megaAVR с существенно увеличенным объемом памяти, количеством портов ввода-вывода и других средств. Высокая эффективность микроконтроллеров AVR обеспечивается развитой системой команд, выполняющихся, как правило, за один рабочий такт, аппаратной реализацией многих стандартных функций (таймеры, модуляторы ШИМ, параллельные и последовательные порты ввода-вывода, компаратор, АЦП и др.) и возможностью внутрисистемного программирования, т.е. записи программ и данных в ПЗУ микроконтроллера непосредственно в схеме работающего устройства.

Общие архитектурные особенности и программная совместимость микроконтроллеров AVR позволяют использовать одни и те же алгоритмы и рабочие программы на разных моделях. Единственным ограничением применимости может служить только отсутствие необходимых для исполнения программ аппаратных средств в более простых моделях микроконтроллеров.

Существенной общей особенностью всего семейства AVR является использование 32 регистров общего назначения и гарвардской архитектуры с тремя раздельными адресными пространствами: памяти программ (флэш-памяти), оперативной памяти данных (ОЗУ), программируемой постоянной памяти данных (ППЗУ). Флэш-память и ППЗУ являются энергонезависимыми и, как обычно, сохраняют данные при отсутствии питающих напряжений. ОЗУ — это стандартная энергозависимая оперативная память. Система команд поддерживает стандартные операции с однобайтовыми данными, возможны определенные операции с двухбайтовыми словами и отдельными битами. Каждый из 32 восьмиразрядных регистров общего назначения может служить регистром-аккумулятором. Основной формат кодов команд — 2 байта, формат данных — 1 байт.

Управление и доступ к аппаратным средствам микроконтроллеров производятся с помощью специальных управляющих регистров — регистров ввода-вывода. Эти регистры определяют параметры и режимы работы устройств микроконтроллеров, обеспечивают необходимый обмен данными с ними. Система прерываний позволяет обслуживать программные прерывания, внутренние прерывания всех устройств микроконтроллеров через регистры ввода-вывода и внешние прерывания. Внутренние аппаратные и внешние прерывания имеют жестко закрепленные адреса векторов прерываний.

Микроконтроллер AT90S8535 (рис. 16) со 118 командами в системе команд содержит 8-разрядное арифметико-логическое устройство (АЛУ), память программ (флэш-память) объемом 8 Кбайт, электрически программируемое ППЗУ (EEPROM) объемом 0,5 Кбайт (также с возможностью внутрисистемного программирования), статическое ОЗУ объемом 0,5 Кбайт, 32 регистра общего назначения, 4 двунаправленных параллельных восьмиразрядных порта ввода-вывода, последовательный синхронный интерфейс SPI, последовательный асинхронный интерфейс UART, два восьмиразрядных и один шестнадцатиразрядный таймеры с возможностью реализации модулятора ШИМ, сторожевой таймер с автономным генератором, аналоговый компаратор, восьмиканальный АЦП.

На структурной схеме (рис.16) и в дальнейшем при описании микроконтроллеров будут использованы названия и обозначения, используемые фирмой ATMEL. Внешние выводы микроконтроллера:

VCC и GND (общий) — источник питания цифровых элементов;

AVCC, AGND (общий аналоговый), AREF — питание и опорное напряжение АЦП и его мультиплексора;

RESET — сигнал внешнего сброса (низкий уровень длительностью более 50 не), при включении питания сброс микроконтроллера производится автоматически;

XTAL1 и XTAL2 — соответственно вход и выход тактового генератора (для подключения частотозадающего кварцевого резонатора и общей синхронизации с другими устройствами), аналогичные электроды вспомогательного генератора асинхронного режима таймера 2 — выводы РС6 и РС7;

РАО-РА7, РВО-РВ7, РСО-РС7, PDO-PD7 — 32 линии ввода-вывода, объединены в 4 восьмиразрядных порта (PORTA, PORTB, PORTC, PORTD).

PORTA, PORTB, PORTC, PORTD могут использоваться как стандартные двунаправленные порты ввода-вывода либо для передачи сигналов других устройств микроконтроллера. Альтернативные функции PORTA: передача аналоговых сигналов через мультиплексор на вход АЦП. Альтернативные функции PORTB:

Рис.16. Структурная схема микроконтроллера АТ90S8535.

РВО и РВ1 — внешние входы ТО и Т1 таймеров 0 и 1 соответственно, РВ2 и РВЗ — входы AINO и AIN1 аналогового компаратора, остальные сигналы синхронного последователь- ного интерфейса SPI (PB4 — SS, PB5 — MOSI, PB6 — MISO, РВ7 — SCK). Альтернативные функции PORTC: PC6 и РС7 — вход и выход вспомогательного генератора таймера 2. Альтернативные функции PORTD: PDO и PD1 — сигналы RXD и TXD асинхронного последовательного интерфейса UART соответственно, PD2 и РВЗ сигналы внешних прерываний INTO и INT1, PD4-PD7 — сигналы ОС1В, OCIA, TCP, OC2 таймеров 1 и 2.

Запоминающие устройства микроконтроллера AT90S8535.

Запоминающие устройства микроконтроллера -флэш-память программ, ОЗУ, ППЗУ, регистры общего назначения и регистры ввода-вывода образуют три отдельных адресных пространства (рис. 17).

Флэш-память объемом 8 Кбайт состоит из 4 К двухбайтовых ячеек с адресами $000 — $FFF* и предназначена для хранения кодов программ и констант, в том числе и при выключенном питающем напряжении. Запись данных производится специальным программатором в процедуре внутрисистемного программирования, допустимое количество циклов перезаписи не менее 1000. Большинство кодов команд имеют 16-битовый формат, поэтому, как правило, одна ячейка флэш-памяти хранит код 1 команды или две 8-битовых константы. Адресация в этом адресном пространстве производится программным счетчиком.

В памяти данных ППЗУ (EEPROM) образует отдельное адресное пространство объемом 0,5 К однобайтовых ячеек с адресами $000 — $ IFF и хранением данных при выключении питающего напряжения. Доступ к данным в ППЗУ производится с помощью специальных регистров из файла регистров ввода-вывода; программно доступно и чтение, и запись данных. Запись данных также может производиться программатором в процедуре внутрисистемного программирования.

Третье адресное пространство является основной частью памяти данных и содержит 32 регистра общего назначения с адресами $000 — $01F, 64 регистра ввода-вывода с адресами $020 — $05F и ОЗУ объемом 0,5 К однобайтовых ячеек с адресами $060 — $25F. Такая организация памяти данных позволяет адресовать все эти регистры как ячейки ОЗУ с известными адресами либо использовать для их адресации соответствующие обозначения или адреса в регистровых файлах. Например, регистр управления АЦП имеет адрес ОЗУ $026, адрес в файле регистров ввода-вывода $06 или символическое имя ADCSR.

Адресация ячеек памяти в третьем адресном пространстве производится стандартными способами. При прямой адресации адрес содержится в командах STS k, Rr и LDS Rd, k, где к — адрес в диапазоне $000-$25F, Rr и Rd любые из регистров общего назначения.

Рис.17. Память микроконтроллера АТ90S8535.

Косвенная адресация возможна регистрами X, Y, Z. Каждый из этих адресных регистров образован парой регистров общего назначения: X -R27-R26, Y — R29-R28, Z — R31-R30. Адресация также возможна с помощью указателя стэка (пара регистров SPH-SPL файла регистров ввода-вывода), обычно в качестве вершины стэка используется наибольший адрес ОЗУ с символическим именем RAMEND, для данного микроконтроллера — это физический адрес S25F.

Адресация регистров общего назначения стандартная: в команде указывается номер регистра (например, mov r2, r0) или присвоенное ему ранее символическое имя (например, mov r2, temp). Обращение к файлу регистров ввода-вывода производится командами in, out с использованием, как правило, символических имен (символические имена регистров ввода-вывода приведены в приложении).

Параллельные порты ввода-вывода.

Микроконтроллер содержит 32 линии ввода-вывода, объединенные в 4 двунаправленных порта (А, В, С, D). Управление каждым портом производится тремя регистрами порта из файла регистров ввода-вывода, символические имена этих регистров содержат наименование порта. Так как процедуры управления для всех портов аналогичны, рассмотрим их на примере порта А.

Регистр управления порта А с символическим именем DDRA*, адресом в файле регистров ввода-вывода $1А, адресом ОЗУ $03 А программно доступен и для чтения, и для записи и определяет направление передачи данных: 0 — ввод, 1 — вывод. Каждый бит DDRA (DDAO — DDA7) управляет соответствующей линией ввода-вывода и программируется независимо, начальное значение всех битов DDRA — нулевое. Т.е. в процессе работы значение каждого бита не зависит от значений других битов, чтением содержимого регистра DDRA можно определить направление передачи данных по соответствующим линиям ввода-вывода в данный момент времени.

Регистр ввода данных PINA (адрес в файле регистров ввода-вывода -$19, адрес ОЗУ — $039) программно доступен только для чтения и обеспечивает считывание сигналов, поступающих в данный момент времени на соответствующие линии ввода-вывода (например, линия РА2 в режиме ввода формирует бит PINA2 регистра ввода данных). Никакого хранения данных регистр PINA не выполняет.

Регистр вывода данных PORTA (адрес в файле регистров ввода-вывода — $ 1В, адрес ОЗУ — $ОЗВ) программно доступен и для чтения, и для записи, обеспечивает хранение данных и выдачу их в режиме вывода на соответствующие линии ввода-вывода (например, PORTA4 — РА4). При чтении PORTA передает данные, ранее записанные в этот регистр для вывода.

Буферы портов в режиме вывода позволяют формировать логические сигналы с током нагрузки до 20 мА. В режиме ввода, кроме приема внешних сигналов, буферы позволяют подключать к входам портов внутренние резисторы, задавая на входах при отсутствии внешних сигналов уровень логического нуля. Например, DDA7=0 (ввод данных) при PORTA7=0 внутренний резистор буфера подключен и при отсутствии внешнего сигнала будет задавать на РА7 низкий уровень. Это позволяет устранить возможные неопределенности входных сигналов. При появлении сигнала внешнего источника уровень РА7 будет задаваться этим внешним сигналом. При PORTA7=1 внутренний резистор отключен и никакого влияния не оказывает.

Для остальных портов ввода-вывода используются такие же регистры с аналогичными именами и заменой буквы, обозначающей наименование порта. При использовании альтернативных функций портов ввода-вывода в регистрах управления должны задаваться соответствующие этим функциям направления передачи сигналов. Более детальное описание альтернативных функций будет приведено позже при описании соответствующих аппаратных средств микроконтроллера.

Последовательный интерфейс SPI.

Последовательный интерфейс SPI обеспечивает синхронный ввод-вывод данных в последовательном формате через линии ввода-вывода порта В сигналами SCK (альтернативная функция линии ввода-вывода РВ7), MOSI (альтернативная функция линии РВ5), MISO (альтернативная функция РВ6), SS (альтернативная функция РВ4). Контроллер при обмене данными может работать в режиме ведущий (master) или ведомый (slave). Структурная схема, поясняющая алгоритмы работы интерфейса, приведена на рис.18. Этот же интерфейс используется для внутрисистемного программирования микроконтроллера с записью данных во флэш-память и ППЗУ.

SPI-master управляет обменом данных, формируя информационную 8-битовую последовательность на выходе MOSI, стробирующую выдачу данных последовательность тактовых импульсов на выходе SCK и одновременно может принимать на входе MISO 8-битовую последовательность, стробируемую импульсами SCK. Если РВ4 конфигурируется как выход (DDB4=1), сигнал SS не используется, и РВ4 может работать в стандартном режиме вывода. Если РВ4 конфигурируют как вход (DDB4=0), при SS=1 продолжается работа в режиме SPI-master; SS=0, поступающий от другого устройства должен рассматриваться как запрос на переход в режим SPI-slave для приема данных.

Рис. 18. Интерфейс SPI.

SPI-slave управляется последовательностью импульсов на входе SCK и принимает информационную 8-битовую последовательность, подаваемую на его вход MOSI. Параллельно с приемом данных по этим же стробирующим импульсам SCK может формироваться выходная информационная последовательность на выходе MISO. Для этого режима РВ4 должен конфигурироваться входом. При SS=0 реализуется режим SPI-slave, если SS=1, интерфейс переходит в пассивное состояние и перестает работать.

Для режима SPI-master конфигурирование порта В следующее: MISO -вход, MOSI — выход, SCK — выход, SS — вход (как вход используется только при необходимости), для режима SPI-slave: MISO — выход, MOSI — вход, SCK — вход, SS — вход (задается сигнал логического нуля для работы интерфейса). Обмен данными между SPI-master и SPI-slave производится по алгоритму кольцевого регистра сдвига (рис.18), по каждому такту SCK данные сдвигаются на один бит, после 8 тактов содержимое регистра-master и регистра-slave меняется местами. Соединение MOSI — MOSI обеспечивает передачу от SPI-master к SPI-slave, а соединение MISO — MISO используется при необходимости передачи данных в обратном направлении.

Управление интерфейсом SPI производится тремя регистрами файла регистров ввода-вывода: регистром данных — SPDR, регистром управления — SPCR, регистром состояния — SPSR. SPDR и SPCR программно доступны и для чтения, и для записи, SPSR доступен только для чтения.

SPDR служит для записи передаваемых данных и чтения данных, которые поступили в регистр сдвига. SPCR содержит 8 бит управления интерфейсом (слева в таблице символических имен старший бит).

Символические имена битов управления в регистре SPCR

SPIE — бит разрешения прерывания SPI, 0 запрещает прерывания.

SPE — бит разрешения работы; при 0 запрещены любые операции в SP1,

1 разрешает работу интерфейса.

DORD — при 1 первым передается младший бит слова данных,

при 0 -старший бит.

MSTR — при 1 определяется режим SPI-master, при 0 — режим SPI-slave.

Младшие 4 бита SPCR определяют параметры тактового сигнала

CPOL — определяет пассивный уровень сигнала SCK в перерывах передачи данных, т.е. при 0 тактовый сигнал в пассивном состоянии интерфейса тоже нулевой.

СРНА — при 0 запись данных должна производиться каждым первым фронтом сигнала SCK после пассивного уровня, при 1 — каждым вторым фронтом сигнала после пассивного уровня.

SPR1 и SPR0 задают частоту сигнала SCK; коэффициент деления такто-вой частоты микроконтроллера для интерфейса определяется этими битами следующим образом:

00 — коэффициент деления 4,

01- коэффициент деления 16,

10 — коэффициент деления 64,

11 — коэффициент деления 128.

В регистре SPSR используется только 2 старших бита. SPIF (бит 7) — флаг прерывания, WCOL (бит 6) — флаг коллизии. SPIF устанавливается в 1 после каждого цикла передачи данных или после отмены режима SPI-master сигналом SS и вызывает вектор прерывания SPI_STC (адрес вектора $00а), если бит SPIE=1 (разрешение прерывания в SPCR) и установлен флаг глобального прерывания I в регистре состояния SREG». Флаг прерывания очищается автоматически при вызове вектора прерывания SPI_STC либо одновременно с очисткой флага WCOL. Флаг коллизии устанавливается в случае чтения регистра SPDR в период передачи данных в SPI (некорректное чтение данных) и автоматически очищается одновременно с флагом SPIF после чтения регистра SPSR и последующего обращения к регистру SPDR.

Если биты в регистре управления SPCR для выбора необходимого режима заданы, запись байта данных в регистр SPDR контроллера в режиме SPI-master приводит к началу рабочего цикла интерфейса. SPI-master (рис.4) передает на MOSI данные, с входа MISO может записывать данные от SPI-slave и на выходе SCK формирует 8 импульсов, управляющих передачей байта данных. Под управлением этих же сигналов SCK SPI-slave (рис. 16) принимает данные с входа MOSI и может передавать из своего регистра SPDR данные на выход MISO.

После завершения рабочего цикла обмена данными контроллер, работающий в любом режиме, устанавливает флаг прерывания для вызова вектора прерывания SPI_STC. Подпрограмма обработки этого вектора должна выполнять операции доступа к регистрам SPI для реализации необходимых функций интерфейса. Например, чтение из SPDR поступивших в предыдущем цикле данных и запись в него новых данных для передачи в следующем цикле. К контроллеру SPI-master для обмена данными вместо второго контроллера может быть подключен и обычный регистр сдвига разрядности, соответствующей формату данных.

Таким образом, интерфейс SPI обеспечивает за один рабочий цикл и передачу байта данных из SPDR на выход, и запись в этот же регистр нового байта данных, поступивших на вход. Запуск рабочего цикла производится записью в SPI-master очередного байта данных в регистр SPDR.

Структура и основные функции микроконтроллеров

Читайте также:

  1. Cущность банковского процента, его функции и роль.
  2. DES. Основные параметры
  3. I Основные понятия
  4. I. ОСНОВНЫЕ ЗАДАЧИ ВНЕШНЕЙ ПОЛИТИКИ
  5. I. Основные признаки грыж живота
  6. I. Основные этапы развития дерматологии и венерологии
  7. I. Функции времени в спутниковых технологиях.
  8. I. Экстремумы функции двух переменных
  9. I.1. Системы обыкновенных дифференциальных уравнений. Основные понятия и определения.
  10. I.15.11.1 Выработать основные положения проекта
  11. II. Основные направления социально-медицинской работы с семьями детей ограниченными возможностями
  12. II. Основные определения

МП состоит из интегральных микросхем или представляет собой монокристалл (рис. 11.4). Основой микропроцессора является арифметико-логическое устройство (АЛУ), в котором выполняются простейшие операции: сложение и вычитание двоичных чисел, логические операции И и ИЛИ, переадресация данных.

Для хранения программ используется постоянное запоминающее устройство (ПЗУ – по-английски ROM). Для хранения промежуточных результатов и вспомогательных величин используется оперативная память – ОЗУ (RAM). Но при выключении питания информация в ОЗУ, как правило, пропадает. Кроме того, в структуру процессора входят мультиплексоры, буферы, регистры и другие узлы. Работа всех узлов синхронизируется общим внешним тактовым сигналом процессора.

Рис. 11.4. Структура микропроцессорногй системы

Микроконтроллер (МК) – это МП-система с уст­ройствами ввода-вывода информации, прерывания, таймерами, компараторами и т.п. МК используются в составе многих КИПиА, на основе которых создаются децентрализованные САУ.

Процессор работает с портами ввода/вывода (port I/O)практически так же, как и с ячейками памяти. У каждого порта есть свой собственный адрес. Причем ячейки памяти и порты находятся в разных адресных пространствах.

Порты вывода предназначены для управления внешними устройствами (цифро-аналоговые преобразователи (ЦАП), индикаторы, принтеры). К этим портам можно подключать электронные ключи, которые позво­ляют МП системе управлять более мощными устройства­ми – электромагнитными реле, лампочками, светодиоды, мотор­чиками, соленоидами и т.п.

При помощи портов вывода можно делать переключения в самой схеме микропроцессорного устройства для его автоматической подстройки под выполняемую задачу.

Порт ввода – это специальная схема, при помощи которой МП может принимать внешние данные, например, информацию о ходе технологического процесса или состоянии оборудования. Для ее преобразования в цифровой код применяются специальные модули, например, ADAM фирмы ADVANTECH. К портам подклю­чают средства ручного ввода (клавиатуру, различные кнопки), дискретные и RS интерфейсы приборов, АЦП и т.д.

Главным управляющим элементом всей микропроцессорной системы, как указывалось, является процессор. Остальные же устройства («периферия») являются ведомыми.

Для достижения максимальной универсальности и упрощения протоколов обмена информацией в микропроцессорных системах применяется так называемая шинная структура связей между отдельными устройствами, входящими в систему.

Суть шинной структуры связей сводится к следующему. При классической структуре связей (рис. 11.5) все сигналы и коды между устройствами передаются по отдельным линиям связи. Каждое устройство, входящее в систему, передает свои сигналы и коды независимо от других устройств. При этом в системе получается очень много линий связи и разных протоколов обмена информацией.

Рис. 11.5. Классическая структура связей

При шинной структуре связей (см. рис. 11.7) все сигналы между устройствами передаются по одним и тем же линиям связи, но в разное время (так наз. мультиплексирование передачи). Причем передача по всем линиям связи может осуществляться в обоих направлениях попеременно (полудуплексный режим) или одновременно (дуплексный режим). В результате количество линий связи существенно сокращается, а правила обмена (протоколы) упрощаются. Группа линий связи, по которым передаются сигналы или коды как раз и называется шиной (англ. bus).

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

Большое достоинство шинной структуры связей состоит в том, что все устройства, подключенные к шине, должны принимать и передавать информацию по одним и тем же правилам (протоколам обмена информацией по шине). Соответственно, все узлы, отвечающие за обмен с шиной в этих устройствах, должны быть единообразны, унифицированы.

Существенный недостаток шинной структуры связан с тем, что все устройства подключаются к каждой линии связи параллельно. Поэтому любая неисправность любого устройства может вывести из строя всю систему, если она портит линию связи. По этой же причине отладка системы с шинной структурой связей довольно сложна и обычно требует специального оборудования.

В системах с шинной структурой связей применяют все три существующие разновидности выходных каскадов цифровых микросхем:

· стандартный выход или выход с двумя состояниями (обозначается 2С, 2S, реже ТТЛ, TTL);

· выход с открытым коллектором (обозначается ОК, OC);

· выход с тремя состояниями или (что то же самое) с возможностью отключения (обозначается 3С, 3S).

Упрощенно эти три типа выходных каскадов могут быть представлены в виде схем на рис. 11.6.

У выхода 2С два ключа замыкаются по очереди, что соответствует уровням логической единицы (верхний ключ замкнут) и логического нуля (нижний ключ замкнут). У выхода ОК замкнутый ключ формирует уровень логического нуля, разомкнутый – логической единицы. У выхода 3С ключи могут замыкаться по очереди (как в случае 2С), а могут размыкаться одновременно, образуя третье, высокоимпедансное, состояние. Переход в третье состояние (Z-состояние) управляется сигналом на специальном входе EZ.

Рис. 11.6. Три типа выходов цифровых микросхем

Типовая структура микроконтроллера приведена на рис. 11.7. Она включает в себя три основных типа устройств:

· центральный процессор (CPU – Central Processing Unit);

· оперативную память (ОЗУ, RAM – Random Access Memory) и постоянную память (ПЗУ, ROM – Read Only Memory), которая служит для хранения данных и программ;

· порты ввода/вывода (Port I/O – Input/Output Devices), служащие для связи микропроцессорной системы с внешними устройствами – приема (ввода, чтения, Read) входных сигналов и выдачи (вывода, записи, Write) выходных сигналов.

Эти узлы соединены между собой общей системной шиной (магистралью), по которой производится весь обмен информацией в микропроцессорной системе.

Рис. 11.7. Схема передачи сигналов в микропроцессорной системе

Системная магистраль включает в себя четыре основные шины нижнего уровня, каждая из которых физически представляет собой набор проводников (разрядов), по которым происходит параллельная (одновременная) передача двоичных чисел в электронной форме.

Шина данных (Data Bus)

Шина данных – это основная шина, которая используется для передачи информационных кодов между всеми устройствами микропроцессорной системы. Обычно в пересылке информации участвует процессор, который обменивается данными с периферийными устройствами или ячейками памяти. Но возможна также и передача информации между устройствами без участия процессора.

Шина данных всегда двунаправленная. Она должна иметь не менее восьми разрядов для передачи информации по байтам (1 байт = 8 бит, 1 байт / с = 1 бод, 1 Кбайт = 1024 байт). 16-тиразрядная шина данных может за один такт пере­давать 2 байта, 32-разрядная шина – 4 байт, 64­-разрядная – 8 байт.

Шина адреса (Addres bus)

Эта шина служит для определения адреса (номера) устройства, с которым процессор обменивается информацией в данный момент. Каждому устройству (кроме процессора), каждой ячейке памяти в микропроцессорной системе присваивается собственный адрес. Поэтому двоичные числа, передаваемые по шине адреса, представляют собой адрес ячейки памяти или порта ввода/вывода, к которому в данный момент об­ращается процессор.

Шина адреса может быть однонаправленной или двунаправленной. Минимальное количество разрядов адресной шины – 16.

Шина управления (Control bus)

В шину управления условно объединяют набор линий, передающих управляющие сигналы от процессора к периферийным устройствам. Каждый из этих сигналов имеет свою функцию. Некоторые сигналы служат для стробирования передаваемых или принимаемых данных (то есть определяют моменты времени, когда информационный код выставлен на шину данных). Другие управляющие сигналы могут использоваться для подтверждения приема данных, для сброса всех устройств в исходное состояние, для тактирования работы устройств и т.п.

Линии шины управления могут быть однонаправленными или двунаправленными. В любой шине управления обязательно присутствуют линии, передающие следующие сигналы:

RD (Read) – чтение;

WR (Write) – запись;

MREQ – инициализация устройств памяти (ОЗУ или ПЗУ);

IORQ – инициализация портов ввода/вывода;

Шина питания (Power Bus) – на рисунке не показана.


Эта шина предназначена не для пересылки информационных сигналов, а для питания системы. Она состоит из линий питания и общего провода. В микропроцессорной системе может быть один источник питания (чаще +5 В) или несколько (обычно еще –5 В, +12 В и –12 В). Каждому напряжению питания соответствует своя линия связи. Все устройства подключены к этим линиям параллельно.

По отношению к любым периферийным устройствам, центральный процессор может выполнять в каждый момент времени одну из четы­рех основных операций: чтение или запись в ячейку памяти, чтение из порта ввода и запись в порт вывода.

Например, процесс записи данных в память происходит следующим образом:

а) сначала центральный процессор выставляет на адресную шину адрес ячейки памяти;

б) затем на шину данных выстав­ляется байт информации, предназначенный для записи в эту ячейку;

в) после чего акти­визируется сигнал MREQ, дающий доступ к модулю памяти;

г) затем процессор устанавливает сигнал WR в активное состояние. Происходит запись байта в адресованную ячейку памяти.

Для того, чтобы прочитать байт из ячейки памяти, процессор сначала устанавливает на шине данных адрес нужной ячейки. Затем он устанавливает в активное состояние сигнал MREQ, который поступает на устройства памяти и служит разрешением для их работы. При этом сигнал IORQ остается равным лог. 1, поэтому порты ввода/вывода микропроцессор­ной системы остаются неактивными. Далее, процессор переводит в активное состояние сигнал RD. Этот сигнал поступает как на устрой­ства памяти, так и на порты ввода/вывода. Однако порты не реагируют на него, так как они отключены высоким уровнем сигнала IORQ.

Уст­ройство памяти, напротив, получив управляющие сигналы RD и MREQ, выдает на шину данных байт информации из той ячейки памяти, адрес которой присутствует в этот момент на шине адреса.

Операции чтения из порта и записи в порт происходят аналогично операциям чтения/записи ОЗУ. Различие лишь в том, что вместо сиг­нала MREQ в активное состояние переходит сигнал IORQ, разрешаю­щий работу портов.

Если информация должна пройти сложную многоступенчатую обработку, то процессор может хранить промежуточные результаты в системной оперативной памяти. В оперативной и постоянной памяти находятся также и управляющие коды (команды выполняемой процессором программы), которые процессор также читает по шине данных с адресацией по шине адреса.

Постоянная память используется, в основном, для хранения программы начального пуска микропроцессорной системы, которая выполняется каждый раз после включения питания. Информация в нее заносится изготовителем микропроцессора.

Устройства ввода/вывода тоже могут иметь в своем составе микропроцессоры, т.е. быть специализированными микропроцессорными системами. Это позволяет переложить часть программных функций на эти устройства ввода/вывода, разгрузив центральный процессор системы.

Дата добавления: 2014-01-07 ; Просмотров: 2140 ; Нарушение авторских прав? ;

Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

Устройство и структура микроконтроллеров AVR

УСТРОЙСТВО МИКРОКОНТРОЛЛЕРОВ AVR

Микроконтроллер AVR содержит: быстрый RISK-процессор, два типа энергонезависимой памяти (Flash-память программ и память данных EEPROM), оперативную память RAM, порты ввода/вывода и различные периферийные интерфейсные схемы.

Процессор

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емени и п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) отслеживает напряжение источника питания. Если схема включена, то при снижении питания ниже некоторого значения она переводит микроконтроллер в состояние сброса.

Когда напряжение питания вновь увеличится до порогового значения, запускается таймер задержки сброса. После формирования задержки внутренний сигнал сброса снимается и происходит запуск микроконтроллера.

Каждый электрик должен знать:  Схема моечной машины
Добавить комментарий