Что такое микроконтроллер — различия между версиями

Материал из roboforum.ru Wiki
Перейти к: навигация, поиск
(Устройства ввода-вывода)
(Прерывания)
Строка 37: Строка 37:
  
 
== Прерывания ==
 
== Прерывания ==
 +
Иногда возникает необходимость прервать исполнение программы, для того, чтобы обеспечить реакцию на внешнее событие. Например, микроконтроллер, управляющий электродвигателем, должен немедленно снять напряжение с мотора при возникновении короткого замыкания или заклинивании механизма, чтобы предотвратить выход из строя двигателя и схемы управления. Для обработки событий, требующих незамедлительной реакции, прменяются прерывания.
  
 +
Прерывание - это сигнал, сообщающий процессору о возникновении какого-либо события. Примеры таких событий: изменение сигнала на входе МК (нажатие кнопки, срабатывание датчика), истечение интервала времени, поступление байта данных через последовательный порт. При этом выполнение текущей последовательности команд приостанавливается, и управление передаётся обработчику прерывания, который выполняет работу по обработке события и возвращает управление прерванной программе.
 +
 +
Практически все устройства ввода-вывода микроконтроллеров ATmega могут вызывать прерывания.
  
 
[[Категория:Курс "Программирование МК AVR на Си"]]
 
[[Категория:Курс "Программирование МК AVR на Си"]]

Версия 06:46, 7 августа 2008

Микроконтроллер ATMega32 фирмы Atmel

Введение

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

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

В среде русскоговорящих робостроителей наиболее популярны микроконтроллеры семейства AVR, выпускаемые компанией Atmel. Более подробно устройство МК мы рассмотрим на примере микросхем серии ATMega этой фирмы.

Центральный процессор

Микроконтроллеры AVR является 8-битными. Это значит, что процессор оперирует данными размером в 1 байт. Процессор состоит из арифметико-логического устройства, 32 8-битных регистров общего назначения (РОН), регистра статуса и программного счетчика. Программный счетчик содержит адрес следующей исполняемой команды. Исходные данные для команд помещаются в регистры общего назначения, в них же помещаются результаты выполнения команд. Регистра статуса содержит дополнительную информацию о состоянии процессора и результате выполнения последней команды. Большинство команд процессор исполняет за один период тактовой частоты.

Память программ

Память программ предназначена для хранения команд, исполняемых процессором. Она представляет собой моногкратно перепрограммируемую флэш-память, допускающую не менее 10000 циклов перепрограммирования. Размер памяти программ в зависимости от модели может быть от 4KiB (ATmega48) до 256KiB (ATmega2560)

Память данных

Память данных (оперативное запоминающее устройство, ОЗУ) хранит данные, обрабатываемые процессором. Содерщимое памяти данных сохраняется только при наличии питающего напряжения. Микроконтроллеры ATMega имеют от 512 байт до 8KiB ОЗУ. Кроме того, некоторые модели имеют возможность подключения внешнего ОЗУ объемом до 64KiB.

EEPROM

Микроконтроллеры ATMega содержат также перепрограммируемое запоминающее устройство (EEPROM). Данные в памяти EEPROM не пропадают при выключении питания. Микроконтроллер имеет специальные команды для записи в EEPROM и чтения из него. Доступ к EEPROM во много раз медленне, чем к ОЗУ. EEPROM допускает не менее 100000 циклов перезаписи. Объем EEPROM может быть от 256 байт до 4KiB в зависимости от модели контроллера.

Устройства ввода-вывода

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

Многие выводы МК имеют альтернативные функции. Это значит, что вместо программного управления состоянием вывода, он подключается к одному из специальных устройств ввода-вывода. Устройства ввода-вывода МК ATmega включают в себя:

  • таймеры. Таймер является многофункциональным устройством. Он может использоваться для формирования временных задержек, подсчета количества импульсов на выводе МК, измерения длительносьти импульсов, генерации импульсов с заданной частотой. Микроконтроллеры ATMega имеют в своем составе от 2 до 6 таймеров.
  • аналоговый компаратор. Сравнивает значения напряжений, присутствующих на двух выводах МК. Результат сравнения может быть прочитан из программы.
  • аналогово-цифровой преобразователь (АЦП). Преобразует напряжение, присутствующее на выводе МК в цифровую форму. Результат преобразования может быть прочитан из программы. В зависимости от модели МК, АЦП может иметь от 6 до 16 входов.
  • последовательный интерфейс SPI.
  • двухпроводный интерфейс TWI. Аббревиатурой TWI компания Atmel называет интерфейс I²C, разработанный фирмой Philips.
  • универсальный синхронно-асинхронный приемопередатчик (USART). Может использоваться, например, для связи с компьютером через последовательный порт.


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

Прерывания

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

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

Практически все устройства ввода-вывода микроконтроллеров ATmega могут вызывать прерывания.