Будь умным!


У вас вопросы?
У нас ответы:) SamZan.ru

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

Работа добавлена на сайт samzan.ru: 2016-03-30

Акция
Закажите работу сегодня со скидкой до 25%
Узнать стоимость работы
Рассчитаем за 1 минуту, онлайн

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

Всё возрастающее применение 8-разрядных микроконтроллеров (МК) семейства HC11 фирмы MOTOROLA во встраиваемых системах управления делает актуальной разработку относительно недорогих систем отладки, доступных широкому классу разработчиков.

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

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

выбор типа МК (на основании количества необходимых линий управления, вычислительной мощности, объема памяти, требований к наличию периферийных устройств, габаритов, энергетических характеристик и прочего);

ознакомление со структурой, системой команд и особенностями функционирования выбранного МК;

написание и отладка программного обеспечения для МК.

В данном курсовом проекте необходимо разработать ШИМ-регулятор мощности двигателя постоянного тока типа ДПМ для микродрели на базе микроконтроллера MC68HC11. Требования, предъявляемые к проектируемой системе, определяются требованиями потребителей или пользователей, на    которых рассчитывается проектируемое устройство.

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

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

Каковы общие требования к системе?

Каким образом задавать значение требуемой мощности?

Каким образом ускорить переход к требуемой мощности?

Каковы требования к сложности и удобству управления?

Что необходимо предусмотреть для аварийной ситуации?

Каким образом пользователь узнаёт текущее значение мощности?

Что нужно предусмотреть для нормальной работы микродрели при возобновлении состояния после аварийного останова?

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

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

  1.  Обеспечивать задание мощности двигателя путём выбора из фиксированного набора значений;
  2.  Обеспечивать задание мощности двигателя с помощью двух кнопок и семисегментного индикатора;
  3.  Обеспечивать режим автоповтора;
  4.  Быть несложным в управлении, обеспечивать максимальное удобство пользователю;
  5.  Аварийный останов;
  6.  Индикация состояния микродрели;
  7.  Плавный разгон двигателя.

1 Анализ задачи

1.1  Функциональная спецификация системы

Функциональная спецификация включает два основных компонента:

1) список функций выполняемых системой;

2) описание интерфейса между системой и пользователем.

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

  1.  Какие  средства   необходимо  предусмотреть  для   управления системой?
  2.  Какие средства необходимо предусмотреть для определения пользователем текущей мощности?
  3.  Какие   средства   необходимо   предусмотреть   для  автоповтора?
  4.  Какие средства необходимо предусмотреть для плавного разгона?
  5.  Какие средства  необходимо  предусмотреть для обеспечения
    аварийного останова?
  6.  Какие  средства   необходимо  предусмотреть  для   управления двигателем постоянного тока?

Ответив на эти  вопросы,  можно  приступить  к составлению функциональной спецификации.

Требования пользователя:

  1.  Дрель предназначена для сверления отверстий в печатных платах.
  2.  Ряд значений мощности: 0, 1, 2, 3, 4, 5, 6, 7, 8.

Функциональная спецификация:

  1.  Посредством двух кнопок обеспечиваем выбор одной из 8 значений мощности двигателя. Одна кнопка, при однократном её нажатии, отвечает за увеличение значения мощности на единицу, другая, соответственно, за её уменьшение. Обеспечивается невозможность выхода за пределы значения мощности.
  2.  Номер выбранной мощности индицируется на семисегментном индикаторе. При включении на индикаторе показывается «0». Для удобства вывода значений на индикатор используем семисегментный дешифратор.
  3.  Для включения режима автоповтора используем удержание какой-либо кнопки. При переходе на требуемую мощность обеспечивается плавный разгон.
  4.  При включении питания восстанавливается скорость двигателя, с которой он работал до отключения питания, и разгон производится так же плавно. Это достигается путём постепенного увеличения мощности до требуемого уровня.
  5.  Нажатием кнопки останова мгновенно отключается питание двигателя. Чтобы вновь включить двигатель, нужно снова нажать кнопку останова.
  6.  Посредством ШИМ, который реализуется с помощью таймера и прерываний.

Если распределить эту информацию по категориям ВХОДЫ, ВЫХОДЫ и ФУНКЦИИ, функциональную спецификацию микродрели можно представить в следующем виде:

ВХОДЫ.

Кнопка уменьшения мощности.

Кнопка увеличения мощности.

Кнопка останова

ВЫХОДЫ.

Семисегментный индикатор.

Управление мощностью дрели.

ФУНКЦИИ.

Посредством кнопок выбираем значение мощности, обеспечиваем аварийный останов и автоповтор.

Индикатор индицирует выбранную мощность.

1.2 Описание интерфейса между системой и пользователем

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

Рисунок 1 – Интерфейс между системой и пользователем

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

Для переключения уровней мощностей предусмотрены две кнопки: «Ув. мощности» и «Ум. мощности». Для аварийного останова – кнопка «Останов».

Управление системой производится следующим образом. При включении микродрели в сеть питания происходит инициализация (мощность = 0). При нажатии кнопки «Ув. мощности» микродрель начинает работать (уровень мощности равен 1, или при автоповторе соответствующая). Если перед работой нужно установить определённый уровень мощности (не 1-ый), нажимается кнопка «Останов»; кнопками «Ув. мощности» и «Ум. мощности» задается мощность и затем повторным нажатием кнопки «Останов» микродрель, плавно разгоняясь, начинает работать на заданной мощности. Если во время работы нужно быстро перейти к какой-либо скорости – удерживаем соответствующую клавишу, что вызывает автоповтор. Для паузы в работе или при аварийной ситуации нажимаем кнопку «Останов». Для возобновления работы нажимаем эту кнопку повторно.

На семисегментном индикаторе отображается соответствующее значение мощности.

2 Предварительное проектирование системы

2.1 Разбиение системы на модули

Используя предварительные данные, разобьем нашу проектируемую систему на отдельные модули.

  1.   Системный исполнительный модуль обеспечивает последовательное исполнение системой функций необходимых для нормального функционирования нашей системы. Исполнительный модуль содержит программные средства, необходимые для реализации исполнительной процедуры. Исполнительный модуль представляет собой программное обеспечение системы.
  2.  Модуль инициализации. После включения питания устройства происходит начальная инициализация устройства.
  3.  Модуль мощности уменьшает, увеличивает или задаёт автоповтор мощности в зависимости от нажатой кнопки.
  4.  Модуль аварийного останова выключает микродрель при нажатии кнопки останова.
  5.  Входной модуль осуществляет считывание текущего состояния кнопок и его запоминание (хранение).
  6.  Выходной модуль. Управление мощностью нашего двигателя.
  7.  Модуль ШИМа управляет переключением частоты ШИМа.
  8.  Модуль индикации: управляет выводом на семисегментный индикатор текущего значения мощности.

Полученная таким образом модульная структура системы показана на рисунке 2.

Рисунок 2 – Модульная структура системы

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

Рассмотрим, как распределяются функции по модулям  системы управления мощности двигателя постоянного тока.

  1.  Исполнительный модуль состоит из единственной управляющей функции.
    1.  Входной модуль включает:

– считывание состояния кнопок Ув./Ум. мощности

– считывание состояния кнопки аварийного останова

3.    Выходной модуль включает:

– подача управляющего сигнала на двигатель постоянного тока

– вывод на семисегментный индикатор

4. Модуль мощности включает единственную функцию задания мощности в соответствии с нажатием кнопок.

5.   Модуль инициализации включает:

– инициализацию  системы  при  начальном  включении (включение питания);

6.     Модуль ШИМа управляет формированием импульсов.

7.     Модуль аварийного останова включает:

– прекращение работы двигателя при нажатии на кнопку аварийного останова

– возобновление работы двигателя

8. Модуль индикации управляет выводом на семисегментный индикатор

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

Рисунок 3 – Функционально-модульная структура устройства управления

2.2 Соотношение между аппаратными и программными средствами

Связь между аппаратными и программными модулями системы устройства управления микродрели представлена на рисунке 4.

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

Рисунок 4 – Связь между аппаратными и программными модулями

Модуль ШИМа имеет аппаратную и программную часть. Программная часть осуществляет управление ШИМом и задаёт его работу.

Входной и выходной модули необходимо поместить в программную часть. Они непосредственно считывают (или записывают) из портов (в порты) ввода (вывода) данные и анализируют их.

Модули инициализации проще всего выполнить при помощи программного обеспечения.

Все остальные модули отнесем к аппаратной части.

2.3 Построение структурной схемы аппаратной части системы

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

Для подключения внешних устройств у микроконтроллера предусмотрено пять 8-ми разрядных портов.

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

Структурная электрическая схема устройства приведена на чертеже БГУИ.ХХХХХХ.001 Э1.

3 Проектирование аппаратных средств системы

Основой аппаратной части является микроконтроллер МС68НС11А8.

В нашем случае микроконтроллер будет работать в однокристальном режиме, поэтому на вход MODA нужно подать логический '0', а на вход MODB логическую ‘1’.

Микроконтроллер адресует до 64 Кбайт памяти (адреса $0000-SFFFF), которые делятся на 16 страниц по 4 Кбайта. Полный объем памяти доступен в расширенном режиме, когда к выводам портов В и С подключается внешняя память. В нашем случае используется однокристальный режим работы,  поэтому доступна только внутренняя память микроконтроллера: ПЗУ, РПЗУ, ОЗУ, а порты В и С служат для обмена данными с внешними устройствами. Две последние страницы адресного пространства (адреса $EOOO-$FFFF) занимает внутреннее масочное ПЗУ, содержимое которого  программируется  в процессе изготовления микроконтроллера по заказу пользователя. В ПЗУ будет содержаться наша программа. РПЗУ размещена по адресам SB600-5B7FF и в данном курсовом проекте не используется ОЗУ при начальной установке микроконтроллера (процедура RESET) занимает адресное пространство $OOOO-$OOFF. Распределение адресного пространства памяти микроконтроллера показано на рисунке 5.

Рисунок 5 – Карта распределения адресного пространства

Служебные регистры определяют конфигурацию и режимы работы микроконтроллера. Содержимое регистра INIT (рисунок 6) определяет старшие четыре разряда адреса (номер страницы) размещения ОЗУ (биты RAM3-RAM0) и блока внутренних регистров (биты REG3-REG0). При начальной установке микроконтроллера биты данного регистра принимают значения RAM3-RAM0 = 0000 (обращение к странице 0), REG3-REG0 = 0001 (обращение к странице 1). В данном курсовом проекте значения, установленные после начальной установки изменяться не будут.

7

6

5

4

3

2

1

0

RA

RA

RA

RA

RE

RE

RE

RE

Рисунок 6 – Служебный регистр INIT (адрес $103D)

Регистр CONFIG определяет конфигурацию микроконтроллера, разрешая или запрещая использование внутренних ПЗУ, РПЗУ и блока контроля функционирования Регистр OPTION определяет функционирование отдельных блоков микроконтроллера. Содержимое регистров HPRIO, INIT, OPTION записывается непосредственно после начальной установки микроконтроллера и затем может быть только считано. Исключение составляют только разряды PSEL3-PSEL0 в регистре HPRIO и разряды ADPU, CSEL в регистре OPTION, которые могут изменяться в процессе работы микроконтроллера путем записи в эти регистры. Содержимое регистра ONFIG  программируется  таким  же образом,  как  и  содержимое внутреннего   РПЗУ,    и   может   изменяться   только   в   процессе программирования.   Этим   обеспечивается   его   сохранение   при отключении питания. Синхронизация микроконтроллера формируется следующей схемой (рисунок 7).

Рисунок 7 - Схема синхронизации микроконтроллера.

Резистор R1 имеет номинал 10 МОм , конденсаторы С1, С2 – номинал 24 пФ. ZQ  - кварцевый резонатор (частота 8 МГц). Схема синхронизации подключается к выводам XTAL и EXTAL микроконтроллера. Длительность такта микроконтроллера Тс = 1/Ft определяется генератором тактовых импульсов (ГТИ). Частота следования тактовых импульсов Ft задается кварцевым резонатором. При этом частота F, в 4 раза меньше частоты внешнего резонатора или генератора Ft = Fg/4. Импульсы с частотой Ft поступают на выход Е микроконтроллера и используются для синхронизации работы других устройств системы.

Так как микроконтроллер работает в рабочем режиме (однокристальном   или   расширенном),   то   в   процессе   начальной установки при включении питания или поступлении сигнала RESET# = 0 в  программный счетчик PC загружаются два байта: старший байт РСН из ячейки памяти с адресом $FFFE, младший байт PCL - SFFFF. Эти байты являются адресом первой команды, выполняемой микроконтроллером после начальной установки. Так как микроконтроллер работает в однокристальном режиме, данные байты выбираются из внутреннего.  При включении питания требуется время 4064Тс для запуска ГТИ и  начального состояния регистров, после чего начинается нормальная работа микроконтроллера. Для начальной установки по сигналу RESET# его длительность должна быть не меньше 4ТС. В курсовом проекте для обмена данными с внешними устройствами используются параллельные порты В, С и D, а также вход . Порты A и Е не используются.

К входу  подключена кнопка аварийного останова, посредством которой подаётся немаскируемый сигнал прерывания.

Порт  В  (регистр PORTB,  адрес $1004)  используется  как 8-разрядный  порт вывода данных. Т.к. в регистре управления PIOC установлено значение разряда HNDS = 1, то порт В работает в режиме нестробированного вывода, при котором не происходит формирование стробирующего сигнала на выходе STRB. На выходы PB0-PB3 подключен семисегментный дешифратор CD4543B фирмы Texas Instruments, который преобразует двоично-десятичный код для отображения на семисегментном индикаторе. Из входов микросхемы, помимо входов данных, особое внимание заслуживают три: LD, BL и Ph. BL – вход, при подаче логической единицы на который на выходах дешифратора образуется комбинация из всех нулей, что соответствует очистке семисегментного индикатора. При подаче на вход LD '1' на выходах дешифратора формируется комбинация для отображения на индикаторе, соответствующая текущей комбинации, которая подаётся на входы данных. При подаче ‘0’ на вход LD в независимости от входной комбинации на входах данных, на индикаторе отображается последняя комбинация, при которой на LD был подан '1'. Вход Ph отвечает за вывод комбнации на выходы дешифратора. При подаче на этот вход '1' комбинация инвертированная.

При подаче неверной комбинации (от 10 до 15) семисегментный индикатор также очищается.

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

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

В данном  проекте порт С служит для ввода данных – проверка состояний кнопок уменьшения, увеличения мощности.

Двунаправленный порт D (регистр PORTD, адрес $1008) имеет  шесть выводов PD5-PD0, которые служат входами или выходами данных в зависимости от установки значения битов в регистре направления DDRD (адрес $1009). В данной работе, все шесть выводов настроены на вывод данных. На выход PD0 подключён двигатель постоянного тока. Схема его подключения представлена на рисунке 9.

Рисунок 9 – Схема подключения двигателя постоянного тока

В данной работе был выбран двигатель постоянного тока типа ДПМ-25-02. Двигатель управляется с помощью малогабаритного полевого транзистора IRFD024 фирмы International Rectifier. Для управления этим транзистором не требуется драйвер, так как он надежно открывается напряжением логической 1, равным 5 В, и нагрузочная способность порта микроконтроллера достаточна для этой цели. Резистор R2 обеспечивает закрытое состояние транзистора, когда после включения питания микроконтроллер находится в сброшенном состоянии. При отсутствии этого резистора в моменты включения питания двигатель может делать кратковременные рывки. Резистор R1 нужен для ограничения тока перезарядки затвора полевого транзистора в моменты смены логических уровней. Помимо ограничения допустимого тока, резистор R1 также влияет на скорость нарастания напряжения на двигателе. Если поставить на его место резистор меньшего номинала, то от резких импульсов тока управления начнет страдать микроконтроллер, давая сбои и зависая. Если ставить резистор с большим сопротивлением, скорость нарастания напряжения на двигателе может настолько снизиться, что транзистор перестанет успевать за частотой переключения ШИМа.

Диоды VD2, VD4 служат для подавления резких выбросов напряжения в моменты переключения транзистора. В отсутствие диодов эти импульсы приводят к сбоям в работе микроконтроллера. Быстрый диод VD3 необходим для гашения возможной ЭДС самоиндукции обмотки двигателя. Стабилитрон VD1 защищает шину питания от импульсов высокого напряжения, с которыми не успевает справляться стабилизатор. Т.к. у нас используется двигатель ДПМ на напряжение питания 27 В, то питать прибор следует от источника постоянного нестабилизированного напряжения около 30 В. Больше 35 В не рекомендуется, так как будет превышено максимально допустимое входное напряжение стабилизатора КР1157ЕН5Б и конденсатора C2. Для защиты полевого транзистора от перегрева и выхода из строя из-за более длительной блокировки вала или коротком замыкании обмотки двигателя служит предохранитель FU1.

В контроллере имеется встроенный таймер. Он реализован на базе 16-разрядного счетчика TCNT (адрес старшего байта $100Е, адрес младшего байта $100F). Этот счетчик запускается при начальной установке микроконтроллера, и после запуска его состояние может быть только считано, например командами LDD, LDX, LDY.

Функционирование таймера определяется 8-разрядными регистрами управления. В данном курсовом проекте таймер используется для периодической генерации запросов прерывания. Для разрешения генерации прерывания реального времени устанавливаем бит RTII регистра TMSK2 (адрес $1024) в 1.

Для прерываний используется специальный флаг RTIF в регистре TFLG2 (адрес $1025). Этот флаг принимает значение RTIF = 1 через заданное время Т = 8192TCKt, где величина коэффициента Кt определяется разрядами RTR1-RTR0 в регистре PACTL (адрес $1026). Сброс признака RTIF в состояние 0 производится путем записи соответствующего значения в регистр TFLG2.

В данном курсовом проекте разряды RTR1-RTR0 равны '0'. Разряд разрешения запроса прерывания RTII в регистре TMSK2 имеет значение RTII = 1. Т.к. к микроконтроллеру подключён кварцевый резонатор с частотой 8 МГц, период работы схемы генерации прерываний реального времени равен 4.10 мс.

Регистры TMSK2, TFLG2 и PACTL представлены на рисунке 10.

7

6

5

4

3

2

1

0

TOI

RTII

PAOVI

PAII

0

0

PR1

PR0

TMSK2

7

6

5

4

3

2

1

0

DDRA7

PAEN

PAMOD

PEDGE

0

0

RTR1

RTR0

PACTL

7

6

5

4

3

2

1

0

TOF

RTIF

PAOVF

PAIF

0

0

0

0

TFLG2

Рисунок 10 - Регистры TMSK2, TFLG2 и PACTL

При подаче на РC0 или РC1 логический уровень сигнала ‘0’ соответственно увеличивается или уменьшается уровень мощности. При подаче '0' на вход вызывается подпрограмма прерывания по внешнему сигналу.

Разряд РD0 порта D посредством ШИМа управляют мощностью двигателя. Допустим требуемый уровень мощности “6”, тогда подаём на этот разряд '1' шесть тактов из восьми. Оставшиеся два такта подаем уровень '0'. Один такт равен 4,10 мс. Т.е. частота на выходе ШИМа = 243 Гц, что достаточно для нормальной работы двигателя.

Разряды PB0..PB3 порта B представляют собой двоично-десятичный код 8-4-2-1.

Электрическая принципиальная схема устройства управления мощностью двигателя представлена на чертеже БГУИ.ХХХХХХ.002 Э3.

4 Проектирование программного обеспечения

С точки зрения программиста разработанная система управления состоит из программно доступных регистров микроконтроллера, трёх портов В, C и D и входа . Вся работа системы заключается в определении состояния входных портов, выполнения определённых вычислений и выводе данных из микроконтроллера Motorola (ввод данных в порты).

Блок-схема алгоритма работы программы приведена на чертеже БГУИ.ХХХХХХ.003 Э8 приложения Б.

Кнопка «Ув. мощности» подсоединена к разряду РС0 порта С. Когда она нажата в данный разряд поступает логическая '0'. После чего проверяется на нажатие кнопка «Ум. мощности» дабы по одновременному нажатию двух кнопок мощность не менялась. Кнопка «Ум. мощности» подсоединена к разряду PC1 порта С.

В процессе работы системы порт С постоянно опрашивается и значение текущей мощности в виде двоично-десятичного кода подаётся на разряды PB0-PB3 порта B, к которым через семисегментный дешифратор подключён семисегментный индикатор.

К разряду PD0 порта D подключён двигатель постоянного тока. Активный уровень – логическая '1'. Управления мощностью двигателя реализуется посредством ШИМ. Для установления длительности импульсов используется встроенный таймер и прерывания реального времени с периодом 4,10 мс.

Ко входу  подключена кнопка «Останов», при нажатии на которую на вход подаётся '0'. Вызывается немаскируемое прерывание, в котором запрещается прерывания реального времени и мощность устанавливается в ноль.

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

Таблица 1 – Карта памяти

ОЗУ

$0000 - $001F

$0020 - $00FF

Стек

Переменные

Регистры и Порты

$1002

$1003

$1004

$1008

$1025

$1024

$1026

$1007

$1009

PIOC

PORTC

PORTB

PORTD

TFLG2

TMSK2

PACTL

DDRC

DDRD

ПЗУ

$E000 - $E082

$E085 - $E0A7

$E0A8 - $E0DA

$FFF0 - $FFFE

Основная программа

Пользовательские подпрограммы

Подпрограмма обработки прерывания

Вектора обработки прерываний

 

ЗАКЛЮЧЕНИЕ

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

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

Методическое пособие по микроконтроллеру семейства М68НС11

Микропроцессорная техника: Учеб. пособие по курсовому проектированию по дисциплине для студ. спец. 40 02 02 «Электронные вычислительные средства» дневной формы обуч. / А.А. Петровский, М.В. Качинский, А.Б. Давыдов и др. – Мн.: БГУИР, 2005. – 51 с.: ил.ISBN 985-444-837-1

Однокристальная микроЭВМ MC68HC11A8. Техническое описание.

ПРИЛОЖЕНИЯ

Приложение А

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

0001 0000                    RAM  EQU $0000

0002 1000                    REG  EQU $1000

0003 e000                    ROM  EQU $E000

0004 1000                    TCNT  EQU  REG+$OE

0005                         *----timer

0006 1023                    TFLG1 EQU REG+$23

0007 1022                    TMSK1 EQU REG+$22

0008 1025                    TFLG2 EQU REG+$25

0009 1024                    TMSK2 EQU REG+$24

0010 1026                    PACTL EQU REG+$26

0011                         *----ports

0012 1004                    portb EQU $1004 *регистр данных порта B

0013 1003                    portc EQU $1003 *регистр данных порта C

0014 1008                    portd EQU  $1008 *регистр данных порта D

0015 1002                    pioc  EQU $1002 *регистр управления портов B и C

0016 1007                    ddrc  EQU  $1007 *регистр определения напр.выв.п.С

0017 1009                    ddrd  EQU  $1009 *регистр определения напр.выв.п.D

0018                         *----Маски

0019 0001                    minus EQU  $01 *м. для выделения бита Уменьшение мощности с порта С[0]

0020 0002                    plus  EQU  $02 *м. для выделения бита Увеличение мощности с порта С[1]

0021 0040                    rtif  EQU  $40 *м. для снятия маски прерывания rtif в рег.tflg2

0022 0010                    hnds  EQU $10 *м. для установки бита HNDS в регистре PIOС (порт B -нестробированный вывод, порт С - двунаправленный обмен)

0023                         *----RAM

0024 001f                      ORG RAM+$1F

0025 001f                    STACK RMB 1

0026 0020 08                 cnttime FCB  $08

0027 0021 01                 flag  FCB $01

0028 0022 00                 power FCB 0

0029 0023 00                 razgon FCB 0

0030 0024 00                 pwm_skv FCB 0

0031                         *----interrupt

0032 fff0                      ORG ROM+$1FF0

0033 fff0 e0 a8              VRTI  FDB OBRRTI

0034 fff2 e0 bb              VIRQ  FDB OBRIRQ

0035 fffe                      ORG ROM+$1FFE

0036 fffe e0 00              VRST  FDB START

0037                         *----ROM

0038 e000                      ORG ROM

0039 e000 8e 00 1f           START: LDS #STACK *Занесение в рег.SP нач адреса стека

0040 e003 86 00                LDAA #$00

0041 e005 b7 10 26             STAA PACTL *период работы схемы 4,10 мс (Е=2 МГц)

0042 e008 86 00                LDAA #00

0043 e00a b7 10 24             STAA TMSK2 *запрет прерывания реального времени

0044                          

0045 e00d b6 10 02             LDAA pioc

0046 e010 8a 10                ORAA #hnds

0047 e012 b7 10 02             STAA pioc

0048                         

0049 e015 86 00                LDAA #$00 *ИНИЦИАЛИЗАЦИЯ ВСЕГО

0050 e017 b7 10 07             STAA ddrc *ПОРТА С НА ВВОД

0051                          

0052 e01a 86 ff                LDAA  #$ff *

0053 e01c b7 10 09             STAA  ddrd *все выводы порта D - вывод данных 

0054                           

0055 e01f 86 00                LDAA #0

0056 e021 b7 10 04             STAA portb *семисегментный индикатор показывает 0

0057 e024 b7 10 08             STAA portd *мощность=0,

0058                          

0059                         *----основная программа

0060                          

0061 e027 96 22              ost:  LDAA power *

0062 e029 97 23                STAA razgon *

0063                          

0064 e02b 86 08              incr: LDAA #$08

0065 e02d 97 20                STAA cnttime *счётчик циклов = 8

0066 e02f 86 00                LDAA #$00 *

0067 e031 b7 10 24             STAA TMSK2 *запрет прерывания реального времени

0068                          

0069 e034 b6 10 03             LDAA portc *считываем порт С

0070 e037 94 02                ANDA plus *выделение бита, соответствующего кнопке "Ув. мощн."

0071 e039 26 09                BNE decr *кнопка не нажата, проверяем кнопку "Ум. мощн."

0072 e03b 96 22                LDAA power *иначе

0073 e03d 81 08                CMPA #8 *проверяем на выход за пределы возможного ур-ня мощн. (>8)

0074 e03f 27 03                BEQ decr *если 8 ур-нь - переходим к проверке кнопки Ум. мощн.

0075 e041 7c 00 22             INC power *если был <8, то увеличиваем переменную мощности

0076                          

0077 e044 b6 10 03           decr: LDAA  portc

0078 e047 94 01                ANDA  minus *выделение бита, соответствующего кнопке "Ум. мощн."

0079 e049 26 09                BNE indi *кнопка не нажата, выводим текущую мощность на индикатор

0080 e04b 96 22                LDAA power *иначе

0081 e04d 81 00                CMPA #0 *проверяем на выход за пределы возможного ур-ня мощн. (<0)

0082 e04f 27 03                BEQ indi *если 0 ур-нь, показываем на индикаторе

0083 e051 7a 00 22             DEC power *иначе уменьшаем переменную мощности

0084                           

0085 e054 96 22              indi: LDAA  power *

0086 e056 b7 10 08             STAA  portd *Вывод переменной мощности на индикатор

0087                          

0088 e059 bd e0 85             JSR pow *переход к подпрограмме формир. вектора мощн.

0089                          

0090 e05c 7d 00 21             TST flag *порверяем флаг работы

0091 e05f 27 c6                BEQ ost *если он равен 0, запрещаем прерывания реального времени

0092                         

0093 e061 7d 00 23             TST razgon *проверяем значение мощности до прерывания

0094 e064 27 12                BEQ razr *если равна нулю - переходим к установлению текущего ур-ня мощн.

0095 e066 7f 00 24             CLR pwm_skv *если не равна - очищаем вектор мощности

0096 e069 7d 00 23           razg: TST razgon

0097 e06c 27 0a                BEQ razr

0098 e06e 86 40                LDAA #rtif *

0099 e070 b7 10 24             STAA TMSK2 *разрешение прерывания реального времени

0100 e073 bd e0 96             JSR plavn *переходим к подпрограмме плавного разгона

0101 e076 20 f1                BRA razg *возвращаемся к проверке значения мощности

0102                         

0103 e078 86 40              razr: LDAA #rtif *

0104 e07a b7 10 24             STAA TMSK2 *разрешение прерывания реального времени

0105 e07d 7d 00 20           prov: TST cnttime *

0106 e080 27 a9                BEQ incr *цикл закончился - переход к осн. прог.

0107 e082 7e e0 7d             JMP prov *цикл не закончился - переход в начало цикла

0108                          

0109                         *----Подпрограмма формирования вектора мощности

0110                          

0111 e085 7f 00 24           pow:  CLR pwm_skv *очищаем Вектор

0112 e088 96 22                LDAA power *загружаем в регистр А переменную мощности

0113 e08a 27 09                BEQ zero *если она равна нулю - выход. Вектор = 0

0114 e08c 78 00 24           vector: LSL pwm_skv *иначе вектор сдвигаем влево

0115 e08f 7c 00 24             INC pwm_skv *увеличиваем на 1

0116 e092 4a                   DECA  *количество итераций = переменной мощности

0117 e093 26 f7                BNE vector *если счётчик цикла не равен 0, повторяем цикл

0118 e095 39                 zero: RTS  *иначе выход из подпрограммы

0119                         

0120                         *----Подпрограмма плавного разгона

0121                         

0122 e096 78 00 24           plavn: LSL pwm_skv *формируем вектор мощности

0123 e099 7c 00 24             INC pwm_skv *постепенно увеличивая его до требуемого ур-ня

0124 e09c 7a 00 23             DEC razgon *уменьшаем переменную разгона

0125 e09f 7d 00 20           prov2: TST cnttime *

0126 e0a2 27 03                BEQ exit0 *цикл закончился - переход к осн. прог.

0127 e0a4 7e e0 9f             JMP prov2 *цикл не закончился - переход в начало цикла

0128 e0a7 39                 exit0: RTS

0129                         

0130                         *----Подпрограмма обработки прерывания RTIF

0131                         

0132 e0a8 86 01              OBRRTI: LDAA #%00000001

0133 e0aa 94 24                ANDA pwm_skv *выделяем младший бит Вектора

0134 e0ac b7 10 08             STAA portd *загружаем его в порт D[0]

0135 e0af 76 00 24             ROR pwm_skv *циклически сдвигаем вектор вправо

0136 e0b2 7a 00 20             DEC cnttime *уменьшаем счётчик циклов

0137                          

0138 e0b5 86 40                LDAA  #rtif *

0139 e0b7 b7 10 25             STAA  TFLG2 *сброс флага RTIF

0140                          

0141 e0ba 3b                   RTI

0142                         

0143                         *----Подпорграмма обработки прерывания IRQ#

0144                         

0145 e0bb 7d 00 21           OBRIRQ: TST flag *проверяем флаг работы двигателя

0146 e0be 26 0b                BNE zapret *если он не равен нулю (равен 1), останавливаем двигатель

0147 e0c0 86 01                LDAA #1 *иначе

0148 e0c2 97 21                STAA flag *устанавливаем флаг в 1

0149 e0c4 86 40                LDAA #rtif *

0150 e0c6 b7 10 24             STAA TMSK2 *разрешаем прерывание реального времени

0151 e0c9 20 0f                BRA exit *выходим из прерывания

0152 e0cb 7f 00 21           zapret: CLR flag *сбрасываем флаг в 0

0153 e0ce 86 00                LDAA #$00 *и

0154 e0d0 b7 10 24             STAA TMSK2 *запрещаем прерывание реального времени

0155 e0d3 b7 10 08             STAA portd *мощность=0

0156 e0d6 96 22                LDAA power *сохраняем текущий ур-нь мощности

0157 e0d8 97 23                STAA razgon *для плавного разгона

0158 e0da 3b                 exit: RTI  *выходим из прерывания


   $0000

1000

$B600

$FFFF

Внешняя память

0000

00FF

$E000

1000

103F

B600

B7FF

FFC0

FFFF

256 байт ОЗУ

64 байта блок регистров

512 байт РПЗУ

Векторы

E000

FFFF

8К ПЗУ

Внешняя память

Внешняя память


Акция
Закажите работу сегодня со скидкой до 25%
Узнать стоимость работы
Рассчитаем за 1 минуту, онлайн


1. ки лингвист закономерностей изучаемого языка особенности его грамматического строя фонетич и лексич сис
2. а мае выдатны помнік ~ эпас пра Гільгамэша
3. Вариант 1 1 Какие из видов песен предназначены младенцу Песня приветствие bСеренада cПесня проща
4. на него как серьезное
5. Полет голубя Коломбины.
6. экономические и исторические данные
7. ФОТ 5130739 млнруб 2 Отчисления на социальные нужды ОТЧсн а в пенсионный фонд 28 от ФОТ б в фонд социал
8. Марцевич Эдуард Евгеньевич
9. Право животных на гуманное отношение к ним со стороны человека
10. деловой стиль обслуживает правовую и административную деятельность при общении в государственных учрежден.html
11. тема современной России характеристика ее структуры; Финансовые ресурсы их структура на микро и макро
12. 1996 гг потребности эмитентов и инвесторов переросли те возможности которые предоставляла инфраструктура ры
13. Утверждаю на заседании педа
14. Язык инуитов Аляски
15. Пятьдесят оттенков наслаждения Мариза БеннеттПятьдесят оттенков наслаждения
16. тема Бюджетное устройство представляет собой организационные принципы построения бюджетной системы ее с
17. лкфпапАВВ
18. оператор аппаратура или сам исполнитель
19. Обязанность по уплате ввозных таможенных пошлин налогов при незаконном перемещении товаров через таможе
20. РЕФЕРАТ ldquo;ОСНОВНЫЕ ЧЕРТЫ СОВРЕМЕННОЙ МИРОВОЙ ЭКОНОМИКИrdquo; по курсу ldquo;Мировая э.html