- •1. Постановка задачи
- •2. Реализация поставленной задачи
- •2.1. Расчет массива данных угловой скорости двигателя
- •2.2. Подробная блок-схема алгоритма решения задачи для мп кр580вм80а
- •2.3. Описание алгоритма программы для мп кр580вм80а
- •2.4. Описание программы на языке Ассемблера и в машинных кодах мп кр580
- •2.5. Описание аппаратной реализации
- •3. Вывод
- •Список используемой литературы:
2. Реализация поставленной задачи
Проанализировав условия задания, аппаратные и программные средства можно приступить к реализации поставленной задачи. Для начала следует рассчитать границы длительности периодов сигнала, для этого воспользуемся выражением (3):
(3)
откуда получим значения
и
:
– будет соответствовать минимальной скорости, – cсоответственно минимальной. Именно условившись будем производить расчет дискреты на основании выражения (4):
откуда получаем:
Получив время длительности одного опроса можно вычислить его частоту исходя из выражения (5):
следовательно:
Получив значение частоты опроса и зная тактовую частоту микропроцессора можно вычислить количество тактов k в течении которых необходимо осуществить один опрос порта.
Используя выражение (6) получим:
.
Теперь следует разработать и проанализировать программу опроса порта, исходя из количества минимально необходимых тактов для её выполнения можно будет судить о возможности получить заданную точность расчетов.
И так, основная необходимая нам команда получения данных с порта – IN port, далее что бы определить уровень сигнала необходимо выделить нулевой бит, для этого будет использовать команду – ANA S. Получив данные о уровне сигнала следует зафиксировать опрос в счетчике для чего будет использована команда – INX B. И главное отслеживать изменение уровня сигнала, для чего будет служить команда условного перехода JZ или JNZ в зависимости от того какой сигнал отслеживается в данный момент.
Сведем данные в таблицу:
Таблица 2 – Количество тактов МП при выполнении цикла опроса порта
Мнемокод |
Назначение |
Число тактов |
IN port |
Ввод из внешнего ус-ва |
10 |
INX B |
Инкрементирование содержимого регистровой пары |
4 |
ANA S |
Логическое «И» содержимого аккумулятора и содержимого регистра |
5 |
JNZ |
Переход при выполнении условия |
10 |
В итоге получаем общую сумму в 29 тактов – это минимально возможное число, следовательно помимо опроса в нашем распоряжении остается 31 такт. Очевидно, что в данных программных условиях не представляется возможным осуществить описанные выше (1) вычисления за 31 такт.
Отметим, что по заданным условиям диапазон скоростей не велик:
;
и как видим составляет лишь 90 значений, следовательно можно составить заранее рассчитанный массив данных, который будет содержать все возможные значения угловых скоростей двигателя в зависимости от числа импульсов. Но прежде следует принять алгоритм получения импульсов и вывода значения скорости.
Рисунок 3. Принцип дискретизации
входящего сигнала
На рис. 3 представлена временная диаграмма на которой обозначена основная логика по которой будет реализована программа. Счет опросов будет проводиться в течении половины периода, при изменении уровня сигнала будет происходить выдача информации из массива данных, выдаваемая информация будет соответствовать текущей скорости. Данный подход позволит реализовать максимальную чувствительность к изменению скорости и максимальную скорость обработки данных. Самое главное, что следует учесть – это число циклов, за которое будет выполняться обработка и выдача информации, оно должно быть кратно числу циклов алгоритма опроса, это необходимо для возможности учета пропущенных опросов, в нашем случае предполагается, что их будет два.
Примем новую дискрету равную 34тактам (18. мкс) и произведем расчеты массива данных угловой скорости двигателя с учетом данной дискреты, а также удостоверимся, что все вычисления лежат в пределах допустимой ошибки.
