Микропроцессоры и микроконтроллеры

 
 
 
«'Legacy code' often differs from its suggested alternative by actually working and scaling.»
Bjarne Stroustrup
Русский | Українська


Микропроцессоры и микроконтроллеры :: Микроконтроллерные вычислители :: 13.3 Применение МК AVR в учебном процессе.Часть вторая

13.3 Применение МК AVR в учебном процессе.Часть вторая

Кроме того, практически все линии портов использованы для поддержки периферийных функций (входы таймеров и прерываний, входы многоканального АЦП, выходы ШИМ, интерфейс программирования SPI и др.)

При использовании портов для байтового или битового ввода-вывода данных работа каждого из портов обеспечивается тремя регистрами (см. рис.5.1):

·  регистр данных порта PORTx – режимы чтения и записи; определяет информацию, выдаваемую через порт;

·  регистр направления данных DDRx – задает направление работы каждой линии соответствующего порта («0» – вход, «1» – выход);

·  регистр выводов порта PINx – только чтение уровня сигналов с внешних физических выводов (каждая линия содержит триггер Шмита для обеспечения крутизны фронтов сигнала).

5.6  Таймеры микроконтроллера AVR ATmega16

5.6  Таймеры микроконтроллера AVR ATmega16

Модель ATmega16 имеет в своем составе три таймера-счетчика с условными именами Т0, Т1 и Т2. По функциональности 8-разрядные таймеры Т0 и Т2 аналогичны.

В состав каждого из идентичных таймеров Т0 и Т2 входят по три регистра из пространства ввода-вывода:

·  счетный регистр TCNT0 (TCNT2),

·  регистр управления TCCR0 (TCCR2);

·  регистр сравнения OCR0 (OCR2).

Таймер Т2 содержит также регистр ASSR для управления его модулем (коэффициентом счета) в асинхронном режиме.

Таймеры Т0 и Т2 могут работать в таких режимах:

·  8-разрядный счетчик (Т0 и Т2);

·  счетчик внешних импульсов (только Т0);

·  ШИМ (Т0 и Т2) – режимы генерации FastPWM и Phase-CorrectPWM;

·  формирователь сигналов на внешнем вывода МК (Т0 и Т2);

·  часы реального времени (только Т2)

Таймер Т1 является 16-разрядным. Для него допустимы все режимы работы, характерные для таймеров Т0 и Т2. Кроме того, он может по внешнему сигналу сохранять свое состояние в отдельном регистре (режим захвата).

В состав таймера Т1 входят:

·  счетный регистр TCNT1;

·  регистр захвата ICR1;

·  два регистра сравнения OCR1A и OCR1B (все регистры 16-разрядные);

·  два 8-разрядных регистра управления TCCR1A и TCCR1B.

Все 16-разрядные регистры реализованы как пара 8-разрядных с соответствующими именами: TCNT1H и TCNT1L. Поскольку таймер содержит два регистра сравнения, он может работать как двухканальный ШИМ-генератор.

5.7  Прерывания микроконтроллера AVR ATmega16

5.7  Прерывания микроконтроллера AVR ATmega16

Таймеры в процессе работы формируют 8 флагов прерываний по событиям «переполнение», «совпадение» и «захват» (для таймера Т1). Флаги прерываний фиксируются в регистре TIFR (timer interrupt flag register).

Для разрешения/запрещения прерываний от таймеров предназначен регистр TIMSK.

Кроме прерываний от таймеров, обслуживаются также внешние запросы (INT0, INT1), прерывание от АЦП, аналогового компаратора, последовательных интерфейсов UART, SPI и TWI.

5.8  Аналого-цифровой преобразователь МК AVR ATmega16

5.8  Аналого-цифровой преобразователь МК AVR ATmega16

Микроконтроллеры ATmega16 оснащены 10-разрядным АЦП последовательного приближения. Основные параметры этого модуля следующие:

·  абсолютная погрешность: ±2 МЗР;

·  интегральная нелинейность: ±0.5 МЗР;

·  быстродействие до 15 тыс. выборок/с.

На входе модуля АЦП всех моделей имеется 8-канальный аналоговый мультиплексор, что позволяет построить на основе МК многоканальную систему сбоар данных.

В модели ATmega16 входы АЦП могут также объединяться попарно для формирования в общей сложности до 13 каналов с дифференциальным входом. Два канала при этом имеют возможность 20 - и 200-кратного предварительного усиления входного сигнала.

В качестве источника опорного напряжения UREF для АЦП может использоваться как напряжение питания микроконтроллера, так и внутренний либо внешний источник напряжения.

АЦП может функционировать в двух режимах:

·  режим одиночного преобразования, когда запуск каждого преобразования инициируется программой;

·  режим непрерывного преобразования через определенные интервалы времени, задаваемые таймерами, компаратором или внешними сигналами.

Для управления модулем АЦП в микроконтроллере ATmega16 предусмотрены следующие регистры:

·  ADCSR – регистр управления и состояния;

·  ADMUX– регистр выбора мультиплексора АЦП;

·  SFIOR – регистр специальных функций (выбор сигнала запуска АЦП).

Регистры данных АЦП – ADCL и ADCH – фиксируют результат преобразования в зависимости от настройки в регистре ADMUX.

Наибольшая точность преобразования достигается, если АЦП работает с тактовой частотой в диапазоне от 50 до 200 кГц.

На частоте преобразования 200 кГц, согласно теореме Котельникова, АЦП адекватно сможет отслеживать аналоговый гармонический сигнал частотой 20кГц.

Более детально работа с ресурсами МК AVR представлена в книгах А.В. Евстифеева  «Микроконтроллеры AVR семейств Tiny и Mega фирмы «Atmel» и «Микроконтроллеры AVR семейства Classic фирмы «Atmel».

5.9  Технология программирования МК AVR

5.9  Технология программирования МК AVR

Разработку программного обеспечения для МК AVR выполняют как на языке Ассемблер, так и высокоуровневыми средствами, как правило, на языке Си.

Технология программирования включает традиционные этапы:

·  анализ задачи и разработка алгоритмов на основе структурного подхода;

·  распределение аппаратных ресурсов МК (память, таймеры, прерывания, порты ввода-вывода) в соответствии с функциональными алгоритмами;

·  разработка отдельных программных модулей на языке Ассемблер или Си;

·  компиляция и сборка программы;

·  автономная отладка на симуляторах;

·  загрузка в контроллер и тестирование готовой программы.

Для поддержки технологии программирования существует целый рад интегрированных сред:

·  AVR Studio – бесплатный продукт Atmel Corp.

·  WinAVR;

·  Code Vision.