В.Т. Рябов - Устройство и программирование однокристальных микроконтроллеров (1054006), страница 18
Текст из файла (страница 18)
При большом тике будет выполняться следующая команда подпрограммы, при малом – последует переход к метке FL0. Опишем обработку большого тика, которая начинается с анализа задержки нулевого кванта.DJNZ R0,FH1; уменьшить задержку кванта 0 и переход к FН1, если не 0SETB 21h.0h; если задержка обнулена, установить флаг кванта 0FH1:DJNZ R1,FH2; уменьшить задержку кванта 1 и переход к FН2, если не 0SETB 21h.1h; если задержка обнулена, установить флаг кванта 1 и т.д.Если тик малый, будет выполняться часть подпрограммы, помеченная флагом FL0,уменьшающая на единицу задержки времени, заданные только в малых тиках и выставляющая флаги тех квантов, у которых задержка окончилась. Далее приведен один извосьми сходных фрагментов этой части, описывающий декремент и последующий анализзадержки нулевого кванта.FL0:JB 22h.0h,FL1; если задержка кванта - в больших тиках, переход к FL1DJNZ R0,FL1; иначе уменьшить задержку и переход к FL1, если не нольSETB 21h.0h; если задержка обнулена, установить флаг кванта 0FL1:JB 22h.1h,FL2; и т.д.Завершающая, четвертая часть обеспечивает правильный возврат из прерывания.ENDTM: POP ACC; восстановить аккумуляторPOP PSW; и слово состояния процессораSETB EA; разрешить прерыванияRETI;возврат из прерыванияПодпрограмма, если посмотреть на ее полный текст, может показаться громоздкойи неуклюжей.
С помощью цикла ее можно было бы описать гораздо компактнее. Но короткая программа и быстрая программа далеко не одно и то же.В рассмотренном примере диспетчера процессов обрабатываются только синхрокванты. Реализовать запуск интерквантов можно, подавая аппаратно задаваемый сигнал ихзапуска на выводы какого либо порта МК и анализируя состояния выводов в пультовойпетле. Следует отметить, что экстракванты запускаются через прерывания, минуя диспетчер процессов, и их обработка может быть задана в подпрограмме начальной настройкипользователя.Распределение памяти программ приведено в таблице 5.5. Затонированы строки памяти программ, занимаемой диспетчером процессов.
Диспетчер является основной ведущей программой. Зоны памяти, которые могут занимать стартовая программа и квантыпользователя, оставлены светлыми. Пользователь диспетчера может произвольно выбирать имена своей стартовой программы и квантов. Для привязки к диспетчеру он долженвписать эти имена в соответствующие зоны таблицы привязки и далее описать свои процессы (кванты) как подпрограммы в соответствии с правилами языка Ассемблер.Пример разработки программного обеспечения локального микроконтроллера, которое будет выполняться под управлением рассмотренного диспетчера процессов, приведенв следующем разделе главы 5, а полный текст программного обеспечения - в ПРИЛОЖЕНИИ 2.58Таблица 5.5.Распределение памяти программ МК под диспетчер процессовАдрес0000h0003h – 0025h002Bh – 0048h004Ah004Fh – 00BFh00D0h – 0141h0149h – 0164h0149h014Ch014Fh0152h0155h0158h015Bh015Eh0162h0165h и далееНаименование программы или зоны памятиНачальный пуск системыЗона векторов прерываний MKНачальная системная настройка МКЗапуск начальной настройки МК пользователем по адресу 0162hПультовая петля диспетчера задачПодпрограмма прерываний таймераЗона векторов системных прерываний для пользователяПереход к кванту пользователя с нулевым приоритетом LJMP NAME0Переход к кванту пользователя с первым приоритетом LJMP NAME1Переход к кванту пользователя со вторым приоритетом LJMP NAME2Переход к кванту пользователя с третьим приоритетом LJMP NAME3Переход к кванту пользователя с четвертым приоритетом LJMP NAME4Переход к кванту пользователя с пятым приоритетом LJMP NAME5Переход к кванту пользователя с шестым приоритетом LJMP NAME6Переход к кванту пользователя с седьмым приоритетом LJMP NAME7Переход к подпрограмме начальной настройки STARTСтартовая программа и кванты пользователяПри практическом использовании текста диспетчера процессов, если пользоватьсясвободно распространяемым сейчас ассемблером A8051.EXE и линковщиком XLINK.EXEпод DOS, следует набирать текст в кодировке DOS.
Как это сделать и как транслировать илинковать программу, будет проиллюстрировано в следующем разделе, где рассмотреноиспользование диспетчера для написания программы управления шаговым двигателем.Контрольные вопросы.1. Назначение и состав диспетчера процессов. Переменные окружения синхрокванта и управление ими.2. Функции и настройка таймера счетчика микроконтроллера при использованиидиспетчера потоков.
Почему выбран первый режим?3. Рассчитайте максимальную задержку кванта при малом «тике» в 2 мс.4. Механизм запуска кванта и управление им.595.3. Пример разработки программного обеспечения.Аппаратное построение контроллера для управления шаговымдвигателемКонтроллер должен управлять вращением шагового двигателя с переменной скоростью в ту или иную сторону. Пульт управления, содержит четыре кнопки К1..К4.
Однакнопка запускает, а при повторном нажатии останавливает ШД. Вторая реверсирует еговращение. При нажатии и удерживании третьей кнопки двигатель ускоряет свое вращение. Четвертая аналогичным способом задает замедление. Обеспечить необходимый алгоритм работы должно программное обеспечение контроллера.Прежде всего, рассмотрим объект управления.
Шаговый двигатель (ШД) - это электрическая машина, позволяющая преобразовывать импульсы управления в угловые илилинейные перемещения фиксированной величины. шаговые двигатели по типу движениябывают двух видов: поступательные и вращательные. По конструкции ШД вращательногодвижения представляют собой многофазные синхронные двигатели с явно выраженнымиполюсами, рассчитанные на работу в широком диапазоне частот управляющих импульсов,включая нулевую (фиксацию ротора при питании фазной обмотки постоянным током).ШД различаются, прежде всего, числом фаз и типом магнитной системы.
Большинствоконструкций ШД имеет от двух до шести фаз. По типу магнитной системы ШД делятся надвигатели с активным и пассивным ротором. Статор и ротор имеют зубцы, через которыезамыкается магнитное поле, причем шаг зубцов на статоре и роторе одинаков.Ротор активного ШД представляет собой конструкцию из постоянных магнитов,ротор пассивного изготовлен из магнитомягкого материала.Наибольшее распространение получили ШД с пассивным ротором, конструктивнаясхема четырехфазного ШД с пассивным ротором представлена на рис. 5.
2. На зубчатыхполюсах 1 статора расположены обмотки четырех фаз А,В, С и D. Обмотки одной фазы размещены на противоположных полюсах и соединены последовательно. Привключенной фазе А ротор 2 занимает позицию, соответствующую максимуму магнитной проводимости междуполюсами фазы А и ротором, как показано на рисунке.При включении фазы В ротор поворачивается против часовой стрелки на четверть шага и т.д. В полном циклекоммутации фаз (А-В-С-D) ротор повернется на угол, занимаемый одним зубцом и одним пазом ротора. В данном примере с 22 зубцами это составит 1/22 оборота.
Вкаждом из четырех тактов цикла коммутации ротор поРис. 5.2. Конструктивнаяворачивается на 1/88 оборота. Типовая серия шаговыхсхема четырехфазного шадвигателей с пассивным ротором ДШИ-200 имеет 200гового двигателя с пассившагов на оборот.ным ротором.Реверс ШД осуществляется изменением последовательности включения фазных обмоток на противоположную (А-D-С-В).Это простейший вариант четырехфазного подключения и униполярной однофазнойкоммутации. Существуют и другие варианты подключения и коммутации: двухфазноеподключение при мостовой коммутации, в которой меняется направление протекающегопо фазам двигателя тока, режимы дробления шага двигателя. Их рассмотрение выходит зарамки настоящего учебного пособия и должно рассматриваться отдельно в курсе привода,поскольку ШД является широко применяемым в настоящее время универсальным электроприводом.60Локальный контроллер для управления шаговым двигателем (ШД) представлен нарис.
5.3. В качестве микроконтроллера MC используется ИС серии MCS-51 (DD1). Фазовые обмотки двигателя A, B, C и D подключены к порту Р1 микроконтроллера через буферDD2 и ключевые ячейки Z1.1...Z1.4. Каждая ячейка содержит ключ на биполярном транзисторе VT, гальванически развязанный по цепям питания и управления от микроконтроллера с помощью оптопары DA. Микроконтроллер и ближайшая периферия (DD2, светодиод DA, управляющие кнопки K1...K4) питаются напряжением контроллера Uк, силовыеключи и двигатель – напряжением нагрузки Uн.
Дополнительные элементы, обеспечивающие функционирование микроконтроллера (резонатор, схема начального сброса), нарисунке не показаны. Схема их подключения может быть позаимствована из рис. 3.5.Диоды VD1 и VD2 шунтируют ЭДС самоиндукции фазных катушек двигателя при ихкоммутации. Светодиод HL индицирует протекание тока через катушки.Рис. 5.3. Аппаратное построение контроллера для управления шаговым двигателем.Управляющие кнопки K1...K4 подключены к выводам P1.4...P1.7 микроконтроллера.При нажатии кнопки на соответствующий вывод МК подается сигнал низкого уровня.
Одна кнопка запускает, а при повторном нажатии останавливает ШД. Вторая реверсирует еговращение. При нажатии и удерживании третьей кнопки двигатель ускоряет свое вращение.Четвертая аналогичным способом задает замедление. Обеспечить необходимый алгоритмработы должно программное обеспечение контроллера. Фазные катушки двигателя A B C иD подключены к четырем ключам, выполненным на биполярных транзисторах VT1.Рассматриваемая схема контроллера носит учебный характер и далеко не оптимальна. Существуют специализированные микроконтроллеры для управления ШД, драйверы иключи для присоединения их к микроконтроллерам. Мостовая коммутация, применяемаяэтими драйверами, обеспечивает большие скорости вращения и выгоднее с энергетической точки зрения.