Разработка быстродействующей системы контроля влажности почвы на основе микропроцессора ATmega16 фирмы Atmel

Структурная схема системы управления. Характеристики первичных датчиков, электронасоса, индикатора, микроконтроллера, системы прерываний. Работа регистров и аналого-цифрового преобразователя. Алгоритм работы микропроцессора - управляющего устройства.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 06.02.2013
Размер файла 2,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Содержание

Введение

1. Структурная схема системы управления

2. Описание аппаратной части

2.1 Первичные датчики

2.2 Исполнительное устройство

2.3 Индикация

2.4 Управляющее устройство

2.4.1 Архитектура микропроцессора

2.4.2 Область Ввода/Вывода

2.4.3 Работа аналого-цифрового преобразователя

2.4.4 Система прерываний

3. Алгоритм работы микропроцессора

Заключение

Список литературы

Приложения

Введение

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

1. Структурная схема системы управления

Любая система управления характеризуется следующими элементами:

- управляющее устройство (УУ);

- исполнительное устройство (ИУ);

- объект управления (ОУ);

- первичные датчики (ПД);

- индикация и ввод информации (ИВИ).

Для данного проекта не предусмотрены задачи ввода информации, поэтому средств ввода нет. На рисунке 1 представлена структурная схема.

Рисунок 1 - Структурная схема

Управляющим устройством является микропроцессор.

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

Объект управления - 8 участков оранжереи.

Первичные датчики - 8 датчиков влажности почвы.

Индикация - 2 семисегментных индикатора.

микропроцессор регистр микроконтроллер преобразователь

2. Описание аппаратной части

2.1 Первичные датчики

В качестве первичных датчиков выбраны датчики влажности почвы EC-5 компании Decagon Devices Inc. Он имеет следующие характеристики:

Время отклика: 10 мс.

Погрешность: не более 2%.

Напряжение питания: от 2.5 до 3.6 В.

Диапазон температур: от -40? до +60? С.

Диапазон измерений: от 0 до 100%.

Размеры датчика: 8,9 х 1,8 х 0,7 см.

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

Формула вычисления влажности почвы:

, (1)

где V - значение выходного напряжения датчика в милливольтах,

- значение влажности почвы в процентах.

На рисунке 2 представлен соединительный штекер датчика, а на рисунке 3 показан вид датчика[1].

Рисунок 2 - Штекер датчика TSR Jack 3,5 мм.

Рисунок 3 - Внешний вид датчика.

2.2 Исполнительное устройство

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

Производитель: Aquatechnica, Россия;

Тип насоса: Самовсасывающий центробежный, с внутренним эжектором;

Максимальный напор: 52 м;

Мощность: 970 Вт;

Рабочая среда: Вода;

Производительность: 54 л/мин;

Максимальная высота всасывания: не более 8 м;

Максимальный размер всасываемых частиц: не более 2мм;

Питание: 220В~50Гц;

Содержание механических примесей: не более 100г/м3;

Максимальная температура воды: не более 40°С;

На рисунке 4 показан электронасос.

Рисунок 4 - Внешний вид электронасоса.

Электронасос будет управляться силовым коммутатором PDH1028RD1 компании ПРИБОРИКА с характеристиками[2]:

Рабочий ток нагрузки: 10 А.

Коммутируемое напряжение переменного тока: 240 В.

Способ управления: произвольное фазовое включение.

Входное напряжение управления: постоянное 4…16 В.

Минимальное напряжение включения: 4 В.

Максимальное напряжение отключения: 1 В.

На рисунке 5 отображен вид силового коммутатора, на рисунке 6 показано обозначение силового коммутатора, на рисунке 7 фронтальный вид корпуса с размерами.

Назначение контактов: 1 и 2 - контакты для подключения коммутируемого электрического тока, 3 - управляющее напряжение, 4 - общий (земля).

Рисунок 5 - Внешний вид коммутатора

Рисунок 6 - Обозначение силового коммутатора

Рисунок 7 - Вид корпуса коммутатора

2.3 Индикация

Два семисегментных индикатора в одном корпусе DC56-11 компании Kingbright являются средством отображения среднего значения влажности.

Рисунок 8 - Чертёж индикатора

На рисунке 8 представлен чертёж индикатора, где размеры представлены в миллиметрах, а в скобках в дюймах. На рисунке 9 показан внешний вид индикатора. На рисунке 10 - электрическая схема индикатора[3].

Рисунок 9 - Внешний вид индикатора

Рисунок 10 - Схема подключения индикатора

2.4 Управляющее устройство

Управляющим устройством выбран микропроцессор ATmega16 фирмы Atmel, построенный с использованием расширенной RISC архитектуры AVR. Исполняя по одной команде за период тактовой частоты, ATmega16 имеет высокую производительность около 16 MHz[4].

Так как этот микроконтроллер является самым дешевым, примерно 270 рублей, и обладает большим ресурсом, низким энергопотреблением, не удивительно, что он является самым популярным.

Характеристики ATmega16[5]:

· Прогрессивная RISC архитектура 130 высокопроизводительных команд, большинство команд выполняется за один тактовый цикл 32 8-разрядных рабочих регистра общего назначения. Полностью статическая работа Производительность приближается к 16 MIPS (при тактовой частоте 16 МГц) Встроенный 2-цикловый перемножитель

· Энергонезависимая память программ и данных 16 Кбайт внутрисистемно программируемой Flash памяти (In-System Self-Programmable Flash) Обеспечивает 10000 циклов стирания/записи Дополнительный сектор загрузочных кодов с независимыми битами блокировки Внутрисистемное программирование встроенной программой загрузки Обеспечен режим одновременного чтения/записи (Read-While-Write) 512 байт EEPROM обеспечивает 100000 циклов стирания/записи 1 Кбайт встроенной SRAM. Программируемая блокировка, обеспечивающая защиту программных средств пользователя

· Интерфейс JTAG (совместимый с IEEE 1149.1) Возможность сканирования периферии, соответствующая стандарту JTAG Расширенная поддержка встроенной отладки Программирование через JTAG интерфейс: Flash, EEPROM памяти, перемычек и битов блокировки

· Встроенная периферия. Два 8-разрядных таймера/счетчика с отдельным предварительным делителем, один с режимом сравнения Один 16-разрядный таймер/счетчик с отдельным предварительным делителем и режимами захвата и сравнения Счетчик реального времени с отдельным генератором 8-канальный 10-разрядный аналого-цифровой преобразователь 8 несимметричных каналов

2 дифференциальных канала с программируемым усилением в 1, 10 или 200 крат (только в корпусе TQFP) Байт-ориентированный 2-проводный последовательный интерфейс Программируемый последовательный USART Последовательный интерфейс SPI (ведущий/ведомый) Программируемый сторожевой таймер с отдельным встроенным генератором Встроенный аналоговый компаратор

· Специальные микроконтроллерные функции Сброс по подаче питания и программируемый детектор кратковременного снижения напряжения питания Встроенный калиброванный RC-генератор Внутренние и внешние источники прерываний

Шесть режимов пониженного потребления: Idle, Power-save, Power-down, Standby, Extended Standby и снижения шумов ADC

· Выводы I/O и корпуса 32 программируемые линии ввода/вывода 40-выводной корпус PDIP и 44-выводной корпус TQFP

· Рабочие напряжения 2,7 - 5,5 В (ATmega16L) 4,5 - 5,5 В (ATmega16)

· Рабочая частота 0 - 8 МГц (ATmega16L) 0 - 16 МГц (ATmega16)

Расположение выводов ATmega16:

Рисунок 11 - PDIP корпус микроконтроллера

Рисунок 12 - TQFP корпус микроконтроллера

Описание выводов:

· VCC - Питание;

· GND - Земля;

· Port A (PA7..PA0) - Порт А - 8-ми битный, двунаправленный порт ввода вывода. Пины порта могут использовать внутренний источник питания (pullups)(Для каждого пина отдельно). Выходной буфер порта А может питаться 40 мА и может управлять LED дисплеем напрямую. Порт A служит мультипликативной шиной Адреса/Данных (Multiplexed Addres/Data) при использовании внешней статической памяти (SRAM). Также выводы порта могут использоваться как входы 8-ми канального 10-ти разрядного АЦП;

· Port B (PB7..PB0) - Порт B- 8-ми битный, двунаправленный порт ввода вывода c внутренним питанием пинов. Входной буфер порта B может питаться 40 мА. Порт В используется для различных специальных возможностей ATmega16;

· Port C (PC7..PC0) - 8-ми битный двунаправленный порт ввода вывода c внутренним питанием пинов. Выходной буфер порта С может питаться 40 мА Порт С также служит для вывода адреса при использовании SRAM;

· Port D (PD7..PD0) - Порт D- 8-ми битный, двунаправленный порт ввода вывода c внутренним питанием пинов. Выходной буфер порта D может питаться 40 мА. Порт D также используется для различных специальных возможностей ATmega16;

· RESET - входной пин. Низкий уровень сигнала в течение двух машинных тактов на этом пине приводит к перезагрузке устройства;

· XTAL1 - Вход для инвертирующего генератора-усилителя, a также вход для внутренней схемы часов;

· XTAL2 - Выход для подключения кварцевого или керамического резонатора;

· AVCC - Питание для Аналого-Цифрового Преобразователя (ADC);

· AREF - Аналоговый управляющий входной сигнал задаёт опорное напряжение для АЦП (analog reference input);

2.4.1 Архитектура процессора

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

6 из 32 8-ми битовых регистров могут использоваться как три 16-и битовых. Такое использование регистров делает более эффективным адресацию. Один из 16-ти битовых регистров используется для адресования функции поиска таблиц констант. 16-ти битовые регистры соответственно называются X-Register, Y-Register, Z-Register[4].

Рисунок 13 - Блок схема ядра микропроцессора

ALU Производит арифметические и логические действия между двумя регистрами и между регистром и константой. Также ALU производит действия с одним операндом - регистром. Адресное пространство Ввода/Вывода содержит 64 адреса через которые можно адресоваться к Регистрам, Таймеру/счетчику, аналого-цифровому преобразователю. Адреса с первого по 32-й соответствуют регистрам, поэтому есть возможность адресоваться не непосредственно к регистру, а через его адрес.

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

Гибкий контроллер прерываний имеет собственный управляющий регистр в памяти Ввода/Вывода (Через эту память можно адресоваться к этому регистру), также есть специальный бит - главный бит прерываний (global interupt enable) в регистре статуса. Все различные прерывания имеют отдельные вектора в таблице векторов прерываний, которая находится в начале Программной памяти. Прерывания имеют приоритет в соответствии с положением их в таблице: чем ниже вектор находится в таблице, тем выше у него приоритет.

В соответствии с AVR архитектурой вся память линейна и имеет регулярную структуру.

Блок регистров:

Все операции с регистрами выполняются напрямую и занимают во времени один такт. Исключение составляют лишь пять логических и арифметических команд работающих с константами: SBCI, SUBI, CPI, ANDI, ORI

Весь 1 Килобайт статической памяти доступен по адресам: $0060 - $0400

X-Register, Y-Register, Z-Register:

Регистры R26-R31 имеют несколько дополнительных функций помимо их основного использования. Эти регистры используются для косвенной адресации статической памяти.

Высоко производительное Арифметическое Логическое Устройство(ALU) AVR работает напрямую со всеми 32-мя рабочими регистрами. Операции ALU делятся на три категории: арифметические, логические и побитовые.

ATmega16 имеет 16K встроенной, загружаемой, программной памяти.

Для памяти данных предусмотрено пять способов адресации:

· Прямой

· Косвенный с замещением

· Косвенный

· Косвенный с пред-Вычитанием (Pre-Decrement)

· Косвенный с пост-Вычитанием (Post-Decrement)

ATmega16 содержит 512 байт памяти EEPROM. Она организована как отдельная область памяти, в которой каждый бит можно читать и записывать. Память EEPROM имеет гарантию на 100,000 раз записи/стирания. Для доступа в EEPROM используются три регистра: регистр адреса EEPROM, регистр данных, управляющий регистр.

2.4.2 Область Ввода/Вывода

Описание регистров, а также расположение области ввода/вывода в статической памяти показано в таблицах 1 и 2:

Таблица 1 - Регистры.

Таблица 2 - Регистры настройки

В пространстве регистров ввода-вывода находятся и регистры управления процессором микроконтроллера: регистр состояния, указатель стека, регистр выбора страницы, регистр управления процессором, регистр управления коэффициентом деления частот.

Формат этих регистров следующий:

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

Бит 7 - I - Общее разрешение прерываний. При установке этого бита в 1 прерывания разрешаются.

Бит 6 - T - Используется командами BLD(Загрузить бит) и BST(Сохранить бит) как бит-источник и бит-приемник.

Бит 5 - H - Флаг полу-переноса. Используется в некоторых арифметических операциях.

Бит 4 - S - Знаковый бит. Зависит от битов V и N. S = N+V.

Бит 3 - V - Флаг переполнения двойного дополнения (Two's Complement OverFlow Flag).

Бит 2 - N- Бит знака результата. Значения бита зависят от знака арифметической или логической операции

Бит 1 - Z - Флаг нуля. Бит показывает был ли результат равным нулю.

Бит 0 - С - Флаг переноса.

Регистр управления MCUCR

Биты регистра управления MCUCR управляют выполнением основных функций процессора.

MCUCR. 7 - SRE: Разрешение внешнего ОЗУ. Установленный (=1) бит SRE разрешает обращение к внешней памяти данных и переводит работу выводов AD0 - 7 (Порт А), А8 - 15 (Порт С), WR и RD на выполнение альтернативной функции. Бит SRE также перенастраивает установки направлений в соответствующих регистрах направления данных.

Очистка бита SRE (=0) запрещает обращение к внешней памяти данных и восстанавливает нормальные установки направлений выводов и данных. MCUCR.6 - SRW: Режим состояния ожидания. При установленном (=1) бите SRW к циклу обращений к внешней памяти данных добавляется один цикл ожидания. При сброшенном (0) бите SRW обращение к внешней памяти выполняется по трехцикловой схеме.

MCUCR.5 - SE: Разрешение режима энергосбережения. Установленный в 1 бит SE разрешает перевод MCU в режим sleep по команде SLEEP. Чтобы исключить перевод MCU в незапланированный режим sleep, рекомендуется устанавливать бит SE непосредственно перед выполнением команды SLEEP.

MCUCR.4,3 ~ SM1, SM0: Биты выбора режима энергосбережения. Эти биты позволяют выбрать один из трех возможных режимов энергосбережения следующим образом.

MCUCR.2..0 -- Зарезервированные биты

Каждый порт имеет три регистра: DDRx, PORTx, PINx, где x - буква порта. Например порт А имеет регистры: DDRA, PORTA, PINA.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

PINA не является регистром, при обращении по этому адресу читаются значения на выводах порта. При чтении регистра PORTA читается состояние защелок данных порта А.

Все восемь линий порта А при его использовании в качестве цифрового устройства ввода/вывода работают одинаково. Соответствующий бит DDAn определяет направление вывода, а бит PORTAn = 1 при работе вывода в качестве входа подключает нагрузочный резистор. После сброса выводы портов находятся в третьем состоянии. Воздействие битов DDAn на работу выводов порта А показано в таблице 3.

Таблица 3 - Направление данных порта.

DDAn

PORTAn

I/O

Нагрузочный резистор

Описание

0

0

Вход

Не подключен

Третье состояние

0

1

Вход

Подключен

При входном низком уровне

РАn обеспечивает вытекающий ток

1

0

Выход

Не подключен

Низкий уровень, двухтактный выход

1

1

Выход

Не подключен

Высокий уровень, двухтактный выход

2.4.3 Работа аналого-цифрового преобразователя

Аналого-цифровой преобразователь может работать в двух режимах: режиме однократного преобразования и режиме циклического преобразования. В режиме однократного преобразования каждое преобразование инициируется пользователем. В режиме циклического преобразования ADC осуществляет выборку и обновление содержимого регистра данных ADC непрерывно. Выбор режима производится битом ADFR регистра ADCSR.

Работа ADC разрешается установкой в состояние 1 бита ADEN в регистре ADCSR. Первому преобразованию, начинающемуся после разрешения ADC, предшествует пустое инициализирующее преобразование. На пользователе это отражается лишь тем, что первое преобразование будет занимать 27 тактовых циклов, вместо обычных 14.

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

Поскольку ADC формирует 10-разрядный результат, то по завершении преобразования результирующие данные размещаются в двух регистрах данных ADCH и ADCL. Для обеспечения соответствия результирующих данных считываемому уровню используется специальная логика защиты. Этот механизм работает следующим образом: при считывании данных первым должен быть считан регистр ADCL. Как только ADCL считан обращение ADC к регистрам данных блокируется. Таким образом, если после считывания состояния ADCL, но до считывания ADCH, будет завершено следующее преобразование, ни один из регистров не будет обновлен и записанный ранее результат не будет искажен. Обращение ADC к регистрам ADCH и ADCL разрешается по завершении считывания содержимого регистра ADCH.

ADC имеет свое собственное прерывание, которое может быть активировано по завершению преобразования. Когда обращение ADC к регистрам запрещено, в процессе считывания регистров ADCL и ADCH, прерывание будет активироваться, даже если результат будет потерян.

Рисунок 14 - Схема АЦП

Мультиплексор АЦП имеет регистр управления ADMUX описание которого представлено в таблице 4.

Таблица 4 - Регистр управления мультиплексором АЦП- ADMUX.

Разряд

7

6

5

4

3

2

1

0

REFS1

REFS0

ADLAR

MUX4

MUX3

MUX2

MUX1

MUX0

ADMUX

Чтение/запись

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Исх. значение

0

0

0

0

0

0

0

0

Разряд 7:6 - REFS1:0: Биты выбора источника опорного напряжения

Данные биты определяют какое напряжение будет использоваться в качестве опорного для АЦП (см. табл. 5). Если изменить значения данных бит в процессе преобразования, то новые установки вступят в силу только по завершении текущего преобразования (т.е. когда установится бит ADIF в регистре ADCSRA). Внутренний ИОН можно не использовать, если к выводу AREF подключен внешний опорный источник.

Таблица 5 - Выбор опорного источника АЦП.

REFS1

REFS0

Опорный источник

0

0

AREF, внутренний VИОН отключен

0

1

AVCC с внешним конденсатором на выводе AREF

1

0

Зарезервировано

1

1

Внутренний источник опорного напряжения 2.56В с внешним конденсатором на выводе AREF

Разряд 5 - ADLAR: Бит управления представлением результата преобразования. Бит ADLAR влияет на представление результата преобразования в паре регистров результата преобразования АЦП. Если ADLAR = 1, то результат преобразования будет иметь левосторонний формат, в противном случае - правосторонний. Действие бита ADLAR вступает в силу сразу после изменения, независимо от выполняющегося параллельно преобразования.

Разряд 4:0 - MUX4:0: Биты выбора аналогового канала и коэффициента усиления

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

Таблица 6 - Выбор входного канала и коэффициента усиления.

MUX4..0

Однополярный вход

Неинвертирующий дифференциальный вход

Инвертирующий дифференциальный вход

Коэффициент усиления, Ку

00000

ADC0

Нет

00001

ADC1

00010

ADC2

00011

ADC3

00100

ADC4

00101

ADC5

00110

ADC6

00111

ADC7

01000

Нет

ADC0

ADC0

10

01001

ADC1

ADC0

10

01010

ADC0

ADC0

200

01011

ADC1

ADC0

200

01100

ADC2

ADC2

10

01101

ADC3

ADC2

10

01110

ADC2

ADC2

200

01111

ADC3

ADC2

200

10000

ADC0

ADC1

1

10001

ADC1

ADC1

1

10010

ADC2

ADC1

1

10011

ADC3

ADC1

1

10100

ADC4

ADC1

1

10101

ADC5

ADC1

1

10110

ADC6

ADC1

1

10111

ADC7

ADC1

1

11000

ADC0

ADC2

1

11001

ADC1

ADC2

1

11010

ADC2

ADC2

1

11011

ADC3

ADC2

1

11100

ADC4

ADC2

1

11101

ADC5ADC21 Нет111110В(GND)

11110

1.23В (VBG)

Регистр управления и статуса АЦП - ADCSRA.

Таблица 7 - Регистр ADCSRA.

Разряд

7

6

5

4

3

2

1

0

ADEN

ADSC

ADFR

ADIF

ADIE

ADPS2

ADPS1

ADPS0

ADCSRA

Чтение/запись

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Исх. значение

0

0

0

0

0

0

0

0

Разряд 7 - ADEN: Разрешение работы АЦП

Запись в данный бит лог. 1 разрешает работу АЦП. Если в данный бит записать лог. 0, то АЦП отключается, даже если он находился в процессе преобразования.

Разряд 6 - ADSC: Запуск преобразования АЦП

В режиме одиночного преобразования установка данного бита инициирует старт каждого преобразования. В режиме автоматического перезапуска установкой этого бита инициируется только первое преобразование, а все остальные выполняются автоматически. Первое преобразование после разрешения работы АЦП, инициированное битом ADSC, выполняется по расширенному алгоритму и длится 25 тактов синхронизации АЦП, вместо обычных 13 тактов. Это связано с необходимостью инициализации АЦП.

В процессе преобразования при опросе бита ADSC возвращается лог. 1, а по завершении преобразования - лог. 0. Запись лог. 0 в данный бит не предусмотрено и не оказывает никакого действия.

Разряд 5 - ADFR: Выбор режима автоматического перезапуска АЦП

Если в данный бит записать лог. 1, то АЦП перейдет в режим автоматического перезапуска. В этом режиме АЦП автоматически выполняет преобразования и модифицирует регистры результата преобразования через фиксированные промежутки времени. Запись лог. 0 в этот бит прекращает работу в данном режиме.

Разряд 4 - ADIF: Флаг прерывания АЦП

Данный флаг устанавливается после завершения преобразования АЦП и обновления регистров данных. Если установлены биты ADIE и I (регистр SREG), то происходит прерывание по завершении преобразования. Флаг ADIF сбрасывается аппаратно при переходе на соответствующий вектор прерывания. Альтернативно флаг ADIF сбрасывается путем записи лог. 1 в него. Обратите внимание, что при выполнении команды "чтение-модификация-запись" с регистром ADCSRA ожидаемое прерывание может быть отключено. Данное также распространяется на использование инструкций SBI и CBI.

Разряд 3 - ADIE: Разрешение прерывания АЦП

После записи лог. 1 в этот бит, при условии, что установлен бит I в регистре SREG, разрешается прерывание по завершении преобразования АЦП.

Разряды 2:0 - ADPS2:0: Биты управления предделителем АЦП

Данные биты определяют на какое значение тактовая частота ЦПУ будет отличаться от частоты входной синхронизации АЦП.

Таблица 8 - Управление предделителем АЦП.

ADPS2

ADPS1

ADPS0

Коэффициент деления

0

0

0

2

0

0

1

2

0

1

0

4

0

1

1

8

1

0

0

16

1

0

1

32

1

1

0

64

1

1

1

128

Регистры данных АЦП - ADCL и ADCH.

Таблица 9 - ADLAR = 0.

-

-

-

-

-

-

ADC9

ADC8

ADCH

ADC7

ADC6

ADC5

ADC4

ADC3

ADC2

ADC1

ADC0

ADCL

Чтение/запись

Чт.

Чт.

Чт.

Чт.

Чт.

Чт.

Чт.

Чт.

Исх. значение

0

0

0

0

0

0

0

0

Таблица 10 - ADLAR = 1.

ADC9

ADC8

ADC7

ADC6

ADC5

ADC4

ADC3

ADC2

ADCH

ADC1

ADC0

-

-

-

-

-

-

ADCL

Чтение/запись

Чт.

Чт.

Чт.

Чт.

Чт.

Чт.

Чт.

Чт.

Исх. значение

0

0

0

0

0

0

0

0

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

Если выполнено чтение ADCL, то доступ к этим регистрам для АЦП будет заблокирован (т.е. АЦП не сможет в дальнейшем модифицировать результат преобразования), пока не будет считан регистр ADCH.

Левосторонний формат представления результата удобно использовать, если достаточно 8 разрядов. В этом случае 8-разрядный результат хранится в регистре ADCH и, следовательно, чтение регистра ADCL можно не выполнять. При правостороннем формате необходимо сначала считать ADCL, а затем ADCH.

2.4.4 Система прерываний

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

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

Микроконтроллеры содержат два 8-разрядных регистра масок прерываний: регистр масок внешних прерываний EIMSK (External Interrupt Mask) и регистр масок прерываний таймеров/счетчиков TIMSK (Timer/Counter Interrupt Mask). Кроме того, в регистрах управления блоков ввода/вывода имеются и другие биты разрешения и масок.

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

Таблица 11 - Векторы сброса и прерываний.

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

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

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

Внешние прерывания по уровню сигнала флага не имеют и условия прерывания имеют место, пока активен внешний сигнал.

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

EIMSK.7.4 - Разрешение внешних прерываний INT7..INT4. При установленных битах INT7-INT4 и установленном бите I регистра SREG разрешаются запросы по соответствующим входам внешних прерываний. Биты управления идентификацией регистра EICR (External Interrupt Control Register) определяет условия возникновения запроса: по нарастающему/спадающему фронту сигнала или по логическому уровню. Активность сигнала по любому из этих выводов вызовет запрос прерывания, даже если вывод определен как выход.

EIMSK.3..0 - Разрешение внешних прерываний INT3..INT0. При установленных битах INT3-INT0 и установленном бите I регистра SREG разрешаются прерывания по соответствующим входам внешних прерываний. Активным всегда является низкий уровень сигнала. Активность сигнала по любому из этих выводов вызовет запрос прерывания, даже если вывод определен как выход. Запрос прерывания по логическому уровню, если он разрешен, будет существовать до тех пор, пока на входе будет низкий уровень сигнала.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

EIFR.7.4 - Флаги внешних прерываний INTF7 - INTF4. При идентификации активного сигнала на входах INT7 - INT4 соответствующий флаг прерывания INTF7 - INTF4 устанавливается (=1). Если бит I регистра SREG и соответствующий бит разрешения (INT7 - INT4) регистра EIMSK установлены, то выполняется переход по вектору прерывания. При этом переходе флаг очищается. Кроме того, флаг можно очистить, записав в него логическую 1.

Внимание! Программно установить флаг внешнего прерывания нельзя!

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

EICR.7..О - ISCX1, ISCX0: Биты управления идентификацией внешних прерываний INT7-INT4. Запросы внешних прерываний на выводах INT7 - INT4 идентифицируются по значениям ISCxl/ISCx0 в соответствии со следующей таблицей:

Таблица 12 - Управление идентификацией прерываний.

ISCx1

ISCx0

Описание

0

0

Запрос прерывания идентифицируется по низкому уровню на INTx

0

1

Зарезервирован

1

0

Запрос прерывания идентифицируется по спадающему фронту на INTx

1

1

Запрос прерывания идентифицируется по нарастающему фронту на INTx

х = 7.. 4

При изменении значений битов ISCxl/ISCx0 прерывание должно быть запрещено очисткой бита разрешения в регистре GIMSK. Иначе может произойти прерывание в момент изменения значения битов.

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

TIMSK.7 - OCIE2: Разрешение прерывания по совпадению Таймера 2. При установленном бите OCIE2 и установленном бите I регистра SREG разрешается прерывание по совпадению содержимого регистра сравнения и рабочего регистра Таймера 2.

TIMSK.6 - TOIE2: Разрешение прерывания по переполнению Таймера 2. При установленном бите TOIE2 и установленном бите I регистра SREG разрешается прерывание по переполнению Таймера 2.

TIMSK.5 - TICIE1: Разрешение прерывания по захвату Таймера 1. При установленном бите TICIE1 и установленном бите I регистра SREG разрешается прерывание по захвату Таймера 1.

TIMSK.4 - OCIE1A: Разрешение прерывания по совпадению регистра OCR1A с Таймером 1. При установленном бите OCIE1A и установленном бите I регистра SREG разрешается прерывание по совпадению значения в регистре OCR1A со значением в рабочем регистре Таймера1.

TIMSK.3 - OCIE1B: Разрешение прерывания по совпадению регистра OCR1B с Таймером 1. При установленном бите OCIE1B и установленном бите I регистра SREG разрешается прерывание по совпадению значения в регистре OCR1B со значением в рабочем регистре Таймера 1.

TIMSK.2 - TOIE1: Разрешение прерывания по переполнению Таймера 1. При установленном бите TOIE1 и установленном бите I регистра SREG разрешается прерывание по переполнению Таймера 1.

TIMSK. 1 - OCIE0: Разрешение прерывания по совпадению Таймера 0. При установленном бите OCIE0 и установленном бите I регистра SREG разрешается прерывание по совпадению содержимого регистра сравнения OCR0 и рабочего регистра Таймера 0.

TIMSK.0 - TOIE0: Разрешение прерывания по переполнению Таймера 0. При установленном бите TOIE0 и установленном бите I регистра SREG разрешается прерывание по переполнению Таймера 0.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

TIFR.7 - OCF2: Флаг совпадения значения Таймера 2. Бит OCF2 устанавливается при совпадении значения Таймера 2 и содержимого регистра OCR2. Бит OCF2 аппаратно очищается при переходе на вектор прерывания. Возможна очистка флага записью в бит логической 1.

TIFR.6 - TOV2: Флаг переполнения Таймера 2. Бит TOV2 устанавливается при переполнении Таймера 2. Он аппаратно очищается при переходе на вектор прерывания. Возможна очистка бита записью во флаг логической 1. В режиме PWM этот бит устанавливается при переходе через $00.

TIFR.5 - ICF1: Флаг захвата входа Таймера /. Бит ICF1 устанавливается в случае захвата по входу и показывает, что значение Таймера 1 послано в регистр захвата ICR1. Бит очищается аппаратно при переходе на вектор прерывания. Возможна очистка бита записью во флаг логической 1.

TIFR.4 - OCF1A: Флаг А совпадения выхода Таймера 1. Бит OCF1A устанавливается при совпадении значения в Таймере 1 и содержимого регистра OCR1A. Бит OCF1A аппаратно очищается при переходе на вектор прерывания. Возможна очистка бита записью во флаг логической 1.

TIFR.3 - ОСF1В: Флаг В совпадения выхода Таймера 1. Бит OCF1B устанавливается при совпадении значения в Таймере 1 с содержимым регистра OCR1B. Бит OCF1B аппаратно очищается при переходе на вектор прерывания. Возможна очистка бита записью во флаг логической 1.

TIFR.2 - TOV1: Флаг переполнения Таймера 1. Бит TOV1 устанавливается при переполнении Таймера 1. Он аппаратно очищается при переходе на вектор прерывания. Возможна очистка бита записью во флаг логической 1.

TIFR.1 - OCF0: Флаг совпадения выхода Таймера 0. Бит OCF0 устанавливается при совпадении значения в Таймере 0 с содержимым регистра OCR0. Бит OCF0 аппаратно очищается при переходе на вектор прерывания. Возможна очистка бита записью во флаг логической 1.

TIFR.0 - TOV0: Флаг переполнения Таймера 0. Бит TOV0 устанавливается при переполнении Таймера 0. Он аппаратно очищается при переходе на вектор прерывания. Возможна очистка бита записью во флаг логической 1.

3. Алгоритм работы микропроцессора

На рисунке 15 представлен алгоритм работы микропроцессора.

Рисунок 15 - Алгоритм работы

Заключение

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

Список литературы

1. User's Manual ЕС-5, Decagon Devices, Washington - 2012.

2. Твердотельные однофазные реле серии PD, М.: Приборика - 2012.

3. KINGBRIGHT FULL-LINE CATALOG. [Электронный ресурс] - http://lib.chipdip.ru/151/DOC000151610.pdf

4. Евстифеев А.В., Микроконтроллеры AVR семейства Mega: Руководство пользователя. - М.: Додэка-XXI - 2007. - 594 с.

5. Мортон Д., Микроконтроллеры AVR вводный курс. - М.: Додэка-XXI, 2006.

Приложения

Перечень элементов

Таблица 13 - Элементы.

Обозначение

Тип

Кол-во

Примечание

Конденсаторы

С1

К10-7В-100пФ-50В

1

Дроссели

L1

ДМ 0.1-100

1

Микросхемы

DD1

ATmega16-16PI

1

DD2

DC56-11

1

Резисторы

R1, R2

C5-35В- 3.3 Ом

2

R3

C1-4 - 10 кОм

1

Разъёмы

X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16

ST-033

16

Листинг программы

; ******************************************************

; BASIC.ASM template file for AVR

; ******************************************************

.include "C:\PROGRA~1\cvavr2\VMLAB\include\m16def.inc"

; Define here the variables

;

.def temp =r22

.defdrem16uL=r14

.defdrem16uH=r15

.defdres16uL=r16

.defdres16uH=r17

.defdd16uL=r16

.defdd16uH=r17

.defdv16uL=r18

.defdv16uH=r19

.defdcnt16u=r20

; Define here Reset and interrupt vectors, if any

;

reset:

rjmp start

reti; Addr $01

reti; Addr $02

reti; Addr $03

reti; Addr $04

reti; Addr $05

reti; Addr $06 Use 'rjmp myVector'

reti; Addr $07 to define a interrupt vector

reti; Addr $08

reti; Addr $09

reti; Addr $0A

reti; Addr $0B This is just an example

reti; Addr $0C Not all MCUs have the same

reti; Addr $0D number of interrupt vectors

reti; Addr $0E

reti; Addr $0F

reti; Addr $10

reti; Addr $11

reti; Addr $12

reti; Addr $13

reti; Addr $14

reti; Addr $15

reti; Addr $16 Use 'rjmp myVector'

reti; Addr $17 to define a interrupt vector

reti; Addr $18

reti; Addr $19

reti; Addr $1A

reti; Addr $1B This is just an example

rjmp aadd; Addr $1C Not all MCUs have the same

; Program starts here after Reset

;

aadd:

in r17,adch

lsr r17

lsr r17

rjmp tsi

start:

ldi r16,0x80

out sreg,r16;разрешение прерываний

clr r13

clr r14

ldi r16,0x00;настройка портов

out DDRA,r16

ldi r16,0xff

out DDRB,r16

out DDRC,r16

out DDRD,r16

clr r16

forever:

out admux,r16;выборка канала датчика

ldi r17,0xc8

nop

out adcsr,r17;запуск АЦП

tsi:

push r17;сохранение значения

cpi r17,76;влажность меньше 90%?

brsh pro

cpi r16,0;включение i-го насоса

brne pr1

sbi portb,0

rjmp plu

pr1:

cpi r16,1

brne pr2

sbi portb,1

rjmp plu

pr2:

cpi r16,2

brne pr3

sbi portb,2

rjmp plu

pr3:

cpi r16,3

brne pr4

sbi portb,3

rjmp plu

pr4:

cpi r16,4

brne pr5

sbi portb,4

rjmp plu

pr5:

cpi r16,5

brne pr6

sbi portb,5

rjmp plu

pr6:

cpi r16,6

brne pr7

sbi portb,6

rjmp plu

pr7:

cpi r16,7

brne plu

sbi portb,7

rjmp plu

pro:

cpi r17,79;влажность больше 96%?

brlo plu

cpi r16,0;выключение i-го насоса

brne pr12

cbi portb,0

rjmp plu

pr12:

cpi r16,1

brne pr22

cbi portb,1

rjmp plu

pr22:

cpi r16,2

brne pr32

cbi portb,2

rjmp plu

pr32:

cpi r16,3

brne pr42

cbi portb,3

rjmp plu

pr42:

cpi r16,4

brne pr52

cbi portb,4

rjmp plu

pr52:

cpi r16,5

brne pr62

cbi portb,5

rjmp plu

pr62:

cpi r16,6

brne pr72

cbi portb,6

rjmp plu

pr72:

cpi r16,7

brne plu

cbi portb,7

plu:

inc r16

cpi r16,7

brlo rii

rjmp start

rii:

clr r16

clr r17

clr r18

clr r19

clr r20

vos:

pop r17;восстановление значения

add r19,r17

adc r18,r20

inc r16

cpi r16,8

brlo vos

mov r17,r18;настройка для деления

mov r16,r19

clr r19

ldi r18,8;начало деления

div16u:clrdrem16uL;clear remainder Low byte

subdrem16uH,drem16uH;clear remainder High byte and carry

ldidcnt16u,17;init loop counter

d16u_1:roldd16uL;shift left dividend

roldd16uH

decdcnt16u;decrement counter

brned16u_2;if done

ret; return

d16u_2:roldrem16uL;shift dividend into remainder

roldrem16uH

subdrem16uL,dv16uL;remainder = remainder - divisor

sbcdrem16uH,dv16uH;

brccd16u_3;if result negative

adddrem16uL,dv16uL; restore remainder

adcdrem16uH,dv16uH

clc; clear carry to be shifted into result

rjmpd16u_1;else

d16u_3:sec; set carry to be shifted into result

rjmpd16u_1

cpi r17,0

breq fre

rjmp forever

fre:

ldi r17,31;преобразование среднего значения

sub r16,r17

cpi r16,40

brlo da1

ldi r19,8

ldi r17,40

sub r16,r17

rjmp mla

da1:

cpi r16,30

brlo da2

ldi r19,6

ldi r17,30

sub r16,r17

rjmp mla

da2:

cpi r16,20

brlo da3

ldi r19,4

ldi r17,20

sub r16,r17

rjmp mla

da3:

cpi r16,10

brlo da4

ldi r19,2

ldi r17,10

sub r16,r17

rjmp mla

da4:

clr r19

mla:

lsl r16

cpi r16,10

brlo vi

subi r16,10

inc r19

vi:

cpi r19,9;начало вывода среднего значения

brlo ba1

ldi r20,0b11011110

ba1:

cpi r19,8

brlo ba2

ldi r20,0b11111110

ba2:

cpi r19,7

brlo ba3

ldi r20,0b00001110

ba3:

cpi r19,6

brlo ba4

ldi r20,0b11111010

ba4:

cpi r19,5

brlo ba5

ldi r20,0b11011010

ba5:

cpi r19,4

brlo ba6

ldi r20,0b11001100

ba6:

cpi r19,3

brlo ba7

ldi r20,0b00001110

ba7:

cpi r19,2

brlo ba8

ldi r20,0b10110110

ba8:

cpi r19,1

brlo ba9

ldi r20,0b00001100

ba9:

ldi r20,0b01111110

cpi r16,9

brlo ba11

ldi r21,0b11110110

ba11:

cpi r16,8

brlo ba21

ldi r21,0b11111110

ba21:

cpi r16,7

brlo ba31

ldi r21,0b11100000

ba31:

cpi r16,6

brlo ba41

ldi r21,0b10111110

ba41:

cpi r16,5

brlo ba51

ldi r21,0b10110110

ba51:

cpi r16,4

brlo ba61

ldi r21,0b01100110

ba61:

cpi r16,3

brlo ba71

ldi r21,0b11110010

ba71:

cpi r16,2

brlo ba81

ldi r21,0b11011010

ba81:

cpi r16,1

brlo ba91

ldi r21,0b01100000

ba91:

ldi r21,0b11111100

out portc,r20;вывод

out portd,r21

clr r16

rjmp forever

Размещено на Allbest.ru


Подобные документы

  • Структурная схема микроконтроллера, процесс разработки принципиальной схемы и программного обеспечения. Конфигурирование регистров аналого-цифрового преобразователя. Код программы на языке Assembler, конфигурирование регистров внешних прерываний.

    курсовая работа [267,5 K], добавлен 08.06.2019

  • Внутренняя архитектура микропроцессора Intel 486. Формат данных и команд. Регистры общего назначения. Программная модель устройства FPU, регистр флагов. Разработка структуры и микропрограммы микропроцессора, управляющего автомата с жесткой логикой.

    курсовая работа [1,6 M], добавлен 27.05.2013

  • Особенности разработки устройства управления системой измерения веса, построенного на микроконтроллере ATmega16 фирмы Atmel. Схема включения микроконтроллера, сброса, стабилизатора напряжения. Проектирование функций микроконтроллера. Листинг программы.

    курсовая работа [153,6 K], добавлен 19.12.2010

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

    реферат [100,7 K], добавлен 20.09.2009

  • Прерывание и его природа. Контролер прерываний. Обработка прерываний в реальном режиме. Характеристики реального режима работы микропроцессора. Схема обработки прерываний в реальном режиме. Написание собственного прерывания. Разработка в общем случае.

    доклад [347,0 K], добавлен 22.09.2008

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

    курсовая работа [925,3 K], добавлен 09.03.2012

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

    курсовая работа [1,5 M], добавлен 29.02.2012

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

    курсовая работа [871,9 K], добавлен 16.09.2010

  • Выбор элементной базы. Разработка системы управления отопительного котла на основе семейства восьмибитных микроконтроллеров фирмы Atmel с архитектурой AVR на языке Assembler. Усилитель сигнала датчика температур. Схема подключения шагового двигателя.

    курсовая работа [2,5 M], добавлен 26.11.2012

  • Создание рабочего модуля аналого-цифрового преобразователя с минимальным количеством микросхем на основе микроконтроллера ATmega8L. Описание блок-схемы АЦП. Схема запуска преобразования. Программа микроконтроллера в среде программирования CodeVision.

    курсовая работа [1,2 M], добавлен 04.10.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.