Смекни!
smekni.com

Программно-управляемый генератор прямоугольных импульсов инфранизких частот (стр. 2 из 4)

Для получения необходимых электрических параметров выходного сигнала используется специальный выходной каскад (на схеме не показан).

2 ОБОСНОВАНИЕ ВЫБРАННОГО ВАРИАНТА ТЕХНИЧЕСКОГО РЕШЕНИЯ

Рассмотренный на рисунке 1.1 генератор имеет ряд недостатков. Интервал между пачками импульсов не фиксированный, т.е. определяется интервалом времени между нажатиями кнопок оператором, когда в ряде случаев необходимо иметь на выходе генератора сигнал с заданной частотой следования пачек импульсов. Для увеличения количества импульсов в пачке необходимо включать дополнительные счетчики, что влечёт усложнение схемы и увеличение габаритов устройства. Также данный генератор не обеспечивает изменения длительности импульса в пачке. Все эти недостатки ограничивают область применения такого генератора.

Генератор, показанный на рисунке 1.2, предназначен для формирования последовательности пачек прямоугольных импульсов (кодовых последова - тельностей). Частота следования пачек постоянна, однако такая схема не обеспечивает изменения длительности импульсов в пачке, а также перестройку частоты следования пачек, изменяется лишь количество импульсов в пачке, что не всегда удовлетворяет предъявляемым к устройству требованиям.

Недостатком генератора, показанного на рисунке 1.3, является то, что он управляется посредством компьютера и для установки параметров сигнала, выдаваемого микроконтроллером необходимо использовать специальную программу для операционной системы компьютера. Это сужает область применения генератора из-за необходимости ПК.

Изображённый на рисунке 1.4 генератор обладает хорошими показателями и имеет большое число функций. Это дает большое преимущество такому генератору перед подобными устройствами, однако вызывает усложнение схемы и соответственно увеличение стоимости устройства. Микроконтроллеры фирмы «ATMEL» имеют довольно не маленькую стоимость по сравнению с теми же микроконтроллерами фирмы «Microchiptechnology».

Можно построить генератор, который удовлетворяет заданным требованиям, управляется посредством клавиатуры без применения компьютера, имеет простую схему и невысокую стоимость, и при этом обладает достаточно хорошими параметрами. Такой генератор можно выполнить на основе микроконтроллера PIC16С84. Он имеет невысокую стоимость по сравнению с АТ90S2313, и при этом не уступает ему по быстродействию.

PIC16CXX- это 8-pазpядные микроконтроллеры с RISC архитектурой, производимые фиpмой MicrochipTechnology. Это семейство микроконтроллеров отличается низкой ценой, низким энергопотреблением и высокой скоростью. Микроконтроллеры имеют встроенное ЭППЗУ программы, ОЗУ данных и выпускаются в 18 и 28 выводных корпусах.

PIC16C84 относится к семейству КМОП микроконтроллеров. Отличается тем, что имеет внутреннее 1Kx 14 бит EEPROM для программ, 8-битовые данные и 64байт EEPROM памяти данных. При этом отличаются низкой стоимостью и высокой производительностью. Все команды состоят из одного слова (14 бит шириной) и исполняются за один цикл (400 нс при 10 МГц), кроме команд перехода, которые выполняются за два цикла (800 нс). PIC16C84 имеет прерывание, срабатывающее от четырех источников, и восьмиуровневый аппаратный стек. Периферия включает в себя 8-битный таймер/счетчик с 8-битным программируемым предварительным делителем (фактически 16 - битный таймер) и 13 линий двунаправленного ввода/вывода. Высокая нагрузочная способность (25 мА - максимальный втекающий ток, 20 мА - максимальный вытекающий ток) линий ввода/вывода упрощают внешние драйверы и, тем самым, уменьшается общая стоимость системы. Разработки на базе контроллеров PIC16C84 поддерживается ассемблером, программным симулятором, внутрисхемным эмулятором (только фирмы Microchip) и программатором.

Серия PIC16C84 подходит для широкого спектра приложений от схем высокоскоростного управления автомобильными и электрическими двигателями до экономичных удаленных приемопередатчиков, показывающих приборов и связных процессоров. Наличие ПЗУ позволяет подстраивать параметры в прикладных программах (коды передатчика, скорости двигателя, частоты приемника и т.д.).

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

Cледует добавить, что встроенный автомат программирования EEPROM кристалла PIC16C84 позволяет легко подстраивать программу и данные под конкретные требования даже после завершения ассемблирования и тестирования. Эта возможность может быть использована как для тиражирования, так и для занесения калибровочных данных уже после окончательного тестирования.

Обзор характеристик:

- только 35 простых команд;

- все команды выполняются за один машинный цикл, кроме команд перехода -2 цикла;

- рабочая частота 0 Гц ... 10 МГц (min 400 нс цикл команды)

- 14 - битовые команды;

- 8 - битовые данные;

- 1024 х 14 электрически перепрограммируемой программной памяти на кристалле (EEPROM);

- 36 х 8 регистров общего использования;

- 15 специальных аппаратных регистров SFR;

- 64 x 8 электрически перепрограммируемой EEPROM памяти для данных;

- восьмиуровневый аппаратный стек;

- прямая, косвенная и относительная адресация данных и команд;

- четыре источника прерывания:

· внешний вход INT

· переполнение таймера RTCC

· прерывание при изменении сигналов на линиях порта B

· по завершению записи данных в память EEPROM

Структурная схема PIC16C84 приведена на рисунке 2.1

Высокая скорость выполнения команд в микроконтроллерах PIC достигается за счет использования двухшинной Гарвардской архитектуры вместо традиционной одношинной Фон-Неймановской. В Гарвардской архитектуре разделена память программ и память данных. Обращение к памяти по отдельным шинам адреса и данных, значительно повышает производительность процессора по сравнению с традиционной архитектурой. Набор регистров означает, что все программные объекты, такие как порты ввода/вывода, ячейки памяти и таймер, представляют собой физически реализованные аппаратные регистры.

Рисунок 2.1 – Структурная схема микроконтроллера PIC16C84

Микроконтроллеры семейства PIC имеют очень эффективную систему команд, состоящую всего из 35 инструкций. Все инструкции выполняются за один цикл, за исключением условных переходов и команд, изменяющих программный счетчик, которые выполняются за 2 цикла. Один цикл выполнения инструкции состоит из 4 периодов тактовой частоты. Таким образом, при частоте 4 МГц, время выполнения инструкции составляет 1 мксек. Каждая инструкция состоит из 14 бит, делящихся на код операции и операнд (возможна манипуляция с регистрами, ячейками памяти и непосредственными данными).

Генератор пачек прямоугольных импульсов на микроконтроллере позволяет получать пачки импульсов любой длительности с большой точностью, при этом частота следования пачек может иметь любые значения. Такой генератор позволяет получать частоты инфранизкого диапазона, что трудно обеспечить в любом другом генераторе. Программное управление даёт возможность перестройки частоты пачек и длительности импульсов в больших пределах, что не всегда возможно в обычных генераторах на RC –элементах или КМОП - микросхемах. Устройства, построенные на базе микроконтроллеров PIC16C84, характеризуются простотой схемы и дешевизной в изготовлении.

3 РАЗРАБОТКА АЛГОРИТМА РАБОТЫ УСТРОЙСТВА И СОСТАВЛЕНИЕ ПРОГРАММЫ

В основе работы генератора пачек прямоугольных импульсов лежит формирование временных задержек. Задержка логической единицы на выходе микроконтроллера соответствует положительному импульсу необходимой длительности, задержка логического нуля – паузе между импульсами. Пачка импульсов получается в результате формирования циклов, то есть однократное появление на выходе контроллера единицы-нуля является периодом импульсов, необходимое количество импульсов в пачке можно получить, формируя определённое число периодов. Пауза между пачками импульсов формируется по такому же принципу, что и пауза между импульсами, только большей длительности. Всё это легко выполняется посредством программируемого микроконтроллера PIC16C84. Блок-схема алгоритма работы устройства представлена в приложении A на формате A4 (ГЮИК 485.007).

Работа микропроцессора начинается с загрузки начального адреса программы (блок 1). По которому осуществляется вызов программы из ПЗУ.

Затем выполняется конфигурация портов контроллера на ввод\вывод (блок 2), для этого переходят на первую страницу памяти, установив бит RP0 в единицу. Загружая в регистры портов TRISA и TRISB двоичные числа 00111 и 1110000 соответственно, получаем, что первые 3 вывода порта A сконфигурированы на ввод, а первые 4 вывода порта B – на вывод. К выводам RA0, RA1, RA2 порта A подключаются кнопки выбора длительности импульсов в пачке 9мс, 10мс и 11мс соответственно. Вывод RB0 порта B является выходным, с него снимается последовательность пачек. К выводам RB1, RB2, RB3 подсоединены индикаторные светодиоды, которые зажигаются при нажатой кнопке для 9мс, 10 мс и 11мс соответственно. По окончанию выполняется возврат на нулевую страницу памяти.

Для изменения длительности импульсов контроллер должен реагировать на изменения состояния кнопок, для этого используется программа опроса клавиатуры (блок3). Если какая-то кнопка нажата (блок 4), т.е. состояние порта RA0 (RA1, RA2) сменилось на нуль, происходит переход программы на участок загрузки соответствующих констант для формирования нужных временных задержек (блок 5).

В начале порт RB1 устанавливается в единицу, светодиод загорается - так осуществляется индикация нажатой кнопки, соответствующей 9мс (для двух других режимов индикация осуществляется аналогично, управляя портами RB2, RB3). Затем в регистры общего назначения A, B, C и D загружаются константы в десятичной форме для формирования импульса, паузы между импульсами, и паузы между пачками соответственно, для длительности импульса 9мс. В регистр E загружается константа, определяющая количество импульсов в пачке (периодов следования импульсов), в данном случае это число 5 для любой длительности импульсов. Для получения на выходе контроллера импульса на порт RB0 выводится логическая единица (блок 6). Задержка единицы получается в результате декремента содержимого регистра A (блок 7). После каждого раза вычитания результат проверяется на нуль (блок 8): если результат не равен нулю, декрементирование повторяется , равен – программа выполняется далее. Вывод на порт RB0 логического нуля (блок 9) соответствует паузе между импульсами, для получения необходимой длительности выполняется задержка, декрементируя содержимое регистра B (блок 10) до получения нулевого результата (блок 11), при неравенстве нулю снова происходит вычитание. Декрементируя содержимое регистра E (блок 13), формируется последовательность из пяти импульсов: если результат вычитания не равен нулю, формирование задержки единицы-нуля повторяются снова.