Измеритель синусоидального сигнала на базе микропроцессора PIC16F873A

Автор работы: Пользователь скрыл имя, 16 Июня 2014 в 17:21, курсовая работа

Краткое описание

Такая концепция обеспечивает простую, но мощную систему команд, разработанную так, что битовые, байтовые и регистровые операции выполняются с высокой скоростью, и с перекрытием по времени выборок команд и циклов выполнения 14-битовая ширина программной памяти обеспечивает выборку 14-битовой команды в один цикл. Двухступенчатый конвейер обеспечивает одновременную выборку и исполнение команды. Все команды выполняются за один цикл (200 нс при 20 Мгц), исключая команды переходов. Исполняемая программа может находиться только во встроенном ПЗУ.

Содержание

Техническое задание…………………………………………………………… 3
Описание применяемой микроЭВМ………………………………………… 4
Внешняя панель устройства………………………………………………… 18
Элементы устройства………………………………………………………… 18
Блок-схемы алгоритмов………………………………………………………… 19
Функциональная схема устройства…………………………………………..22
Текст программы……………………………………………………………… 23
Литература……………………………………………………………………… 26

Прикрепленные файлы: 1 файл

Urasach_sinus.doc

— 945.00 Кб (Скачать документ)

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

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

Две из последних обеспечивают условные переходы, позволяя пропустить следующую команду, если установлен (или  сброшен) любой указанный бит b любого регистра f. В системе команд отсутствуют традиционные переходы по значениям флагов, однако следует помнить, что регистр STATUS, в котором хранятся флаги, можно задать как регистр f.

Две другие команды пропусков обеспечивают организацию циклов, осуществляя модификацию (инкремент или декремент) регистра f и пропуск следующей команды, если результат окажется равным нулю. При этом результат модификации может быть занесен как тот же регистр f, так и в регистр W.

Класс системных представлен тремя  командами: традиционной пустой операцией, командой сброса сторожевого таймера, которая обнуляет сторожевой таймер и его предделитель и устанавливает флаги TO и PD в регистре  STATUS, и наконец, команда перевода контроллера в режим пониженного энергопотребления («спящий» режим).

 

Порты ввода/вывода

На кристалле PIC16C74 предусмотрено пять портов параллельного обмена с побитовой индивидуальной настройкой на вход или на выход. Выводы кристалла, линии портов используются одновременно и для подключения к АЦП, к внешнему прерыванию и другим встроенным узлам кристалла. Альтернативные переключения осуществляются через управляющие регистры.

 

Порт А

Порт А – это порт разрядностью 6 бит, соответствующие выводы кристалла RA[5:0]. Выводы RA[3:0], RA5 двунаправленные. Линия RA4 – особая. Она имеет выход с открытым коллектором и вход триггера Шмитта. Адрес регистра порта А - 05h. Относящийся к порту А управляющий регистр TRISA расположен по адресу 85h. Если бит управляющего TRISA регистра имеет значение единица, то соответствующий вывод порта A запрограммирован на ввод. Ноль переключает вывод порта A на вывод и одновременно выводит на него содержимое соответствующего бита регистра защелки. Выводы RA[3:0] могут быть также использованы как каналы аналоговых входов AN3 - AN0. Чтобы настроить линии RA как дискретные (то есть порт) или как вход АЦП, надо установить два бита в управляющем регистре ADCON1 (9Fh). Когда выводы определены как аналоговые входы, значение соответствующих разрядов регистра TRISA игнорируется. После сброса при включении выводы RA[3:0], RA[5] конфигурируются как аналоговые входы. Вывод RA4 может быть использован как вход внешнего тактового сигнала для TMR0.

 

Порт В

Порт В - это двунаправленный порт разрядностью 8 бит (адрес регистра 06h). Относящийся к порту В управляющий регистр TRISB расположен по адресу 86h. Если бит управляющего TRISB регистра равен единице, то соответствующая линия будет устанавливаться на вход. Ноль переключает линию на выход и одновременно выводит на нее содержимое соответствующего регистра защелки. У каждого вывода порта В имеется небольшая активная нагрузка (около 100 мкА) на линию питания. Она автоматически отключается, если этот вывод запрограммирован как выход. Более того, управляющий бит RBPU OPTION[7] может отключить (при RBPU=1) все нагрузки. Сброс при включении питания также отключает все нагрузки. Четыре линии порта В (RB[7:4]) формируют запрос на прерывание при изменении значения сигнала на любой из них (только как входы). Если эти выводы настроены на вход, то они опрашиваются и защелкиваются в такте чтения Q1. Процессор может не обнаружить короткие импульсы на входе, их длительность должна быть более двух машинных циклов.

Новая величина входного сигнала сравнивается со старой в каждом машинном цикле. При несовпадении значения сигнала на выводе и в защелке линий RB4, RB5, RB6, RB7 генерируется запрос на прерывание RBIF (INTCON[0]). Любая линия, настроенная как выход, не участвует в этом сравнении. Прерывание может вывести кристалл из режима SLEEP. В подпрограмме обработки прерывания следует сбросить запрос прерывания одним из следующих способов:

  1. Запретить прерывания при помощи обнуления бита RBIE INTCON[3].
  2. Прочитать порт В. Это завершит состояние сравнения. Затем сбросить бит RBIF.

Прерывание по фронтам на RB и программно устанавливаемые внутренние активные нагрузки на этих четырех линиях могут обеспечить простой интерфейс, например для клавиатуры, с выходом из режима SLEEP по нажатию клавиш. Вывод RB0 совмещен со входом внешнего прерывания INT.

Порт С

Порт C - это двунаправленный порт разрядностью восемь бит (адрес регистра 07h). Относящийся к порту C управляющий регистр TRISC расположен по адресу 87h. Если бит управляющего TRISC регистра равен единице, то соответствующая линия будет устанавливаться на вход. Ноль переключает линию на выход и одновременно выводит на нее содержимое соответствующего регистра защелки. Пример инициализации порта С:

CLRF PORTC

; инициализация защелок порта  С 

BCF STATUS,RP0

; выбор банка 1

MOVLW 0CFh

; инициализация выводов порта:

MOVWF TRISC

; RC[3:0] - входы; RC[5:4] - выходы; RC[7:6] - входы


 

Порт D

Порт D - это двунаправленный порт разрядностью восемь бит (адрес регистра 08h). Относящийся к порту D управляющий регистр TRISD расположен по адресу 88h. Если бит управляющего TRISD регистра равен единице, то соответствующая линия будет устанавливаться на вход. В этой конфигурации на входах используются триггеры Шмитта. Ноль переключает линию на выход и одновременно выводит на нее содержимое соответствующего регистра защелки. Порт D может быть сконфигурирован как параллельная шина для подключения кристалла в качестве сопроцессора. Для этого нужно установить бит PSPMODE в слове управления TRISE[4].В этом режиме входы будут иметь уровни ТТЛ.

Порт Е

Порт E имеет три линии (RE0,RE1,RE2),которые могут быть настроены как линии ввода/вывода (адрес регистра 09h). Относящийся к порту E управляющий регистр TRISE (рис. 6) расположен по адресу 89h (состояние по сбросу –0000 0111B). Когда линии портов настроены на ввод, то используются триггеры Шмитта. Если установлен бит PSPMODE в управляющем слове TRISE[4], то порт Е может быть использован для контроля микропроцессорной шины. В этом режиме пользователь должен проследить, чтобы биты TRISE[2:0] были установлены в единицы (т.е. соответствующие выводы сконфигурированы как цифровые входы). В этом режиме входы будут иметь уровни ТТЛ. Альтернативные функции выводов порта E сведены в таблицу.

 

7

6

5

4

3

2

1

0

IBF 

OBF 

IBOV

PSPMODE

 

TRISE2

TRISE1

TRIS0

Рис. 6. Формат регистра TRISE


IBF – входной буфер заполнен;

при IBF = 1  слово получено и должно быть прочитано CPU.

OBF – выходной буфер заполнен;

при OBF = 1 выходной буфер еще удерживает предыдущее слово, иначе выходной буфер уже прочитан.

IBOV – входной буфер переполнен;

при IBOV = 1 запись во входной буфер происходит, когда предыдущее слово еще не прочитано. Бит должен сбрасываться программно.

PSPMODE – выбирает режим для порта D и порта E;

при PSPMODE = 1 порты могут быть использованы как параллельная шина для подключения кристалла в качестве сопроцессора, 0 – двунаправленные линии ввода/вывода.

TRISE[2:0] – биты управления направлением на выводах RE[2:0] соответственно  («1» – вход, «0» – выход).

Аналого-цифровой преобразователь (АЦП)

 Модуль АЦП (рис. 7) содержит восемь аналоговых каналов, мультиплексируемых на одну схему выборки/хранения и далее на АЦП. Опорное напряжение поступает извне через вывод RA3/AIN3/Vref или формируется внутри кристалла из напряжения питания Vdd. АЦП может проводить преобразование и в режиме SLEEP. Управляющий регистр ADCON1 позволяет сконфигурировать порты ввода/вывода как аналоговые входы или цифровые линии ввода/вывода.

Рис. 7. Аналого-цифровое преобразование

Преобразователь использует принцип последовательного приближения; 8-битовый результат преобразования помещается в регистр ADRES (1Eh). Преобразование инициируется установкой управляющего бита (GO/DONE) в регистре ADCON0. До начала преобразования должен быть выбран нужный канал и обеспечено достаточное время для завершения выборки/хранения. Время преобразования есть функция периода генератора. Минимально возможное время преобразования – 20 мкс. В конце преобразования бит GO/DONE обнуляется и выставляется флаг прерывания от АЦП (ADIF). Ошибка преобразования не превышает ±1 LSB для Vdd=5.12 В и Vref = Vdd. Разрешение и точность уменьшаются, когда Vref меньше Vdd.

  Последовательность действий  для проведения АЦП:

1. Конфигурация АЦП модуля:

    • конфигурация аналоговых входов (ADCON1[2:0]);
    • выбор одного из каналов АЦП (ADCON0[5:3]);
    • выбор тактов преобразования (ADCON0[7:6]);
    • разрешение работы АЦП модуля (ADCON0[0]).

2. Конфигурация прерывания от АЦП (если требуется):

    • обнулить бит ADIF (PIR1[6]);
    • установить бит ADIE  (PIE1[6]);
    • установить бит GIE (INTCON[7]).

3. Обеспечить необходимое время  для заряда конденсатора в  схеме выборки/хранения.

4. Пуск преобразования: установить бит GO//DONE (ADCON0[6]).

5. Ожидание конца преобразования (или...или):

    • бит GO//DONE должен обнулиться;
    • ожидание прерывания после завершения АЦП преобразования.

  6. Прочитать ADRES регистр, в котором  записан результат преобразования:

    • обнулить  ADIF, если требуется.

После завершения аналого-цифрового преобразования вырабатывается сигнал прерывания и устанавливается флаг ADIF в PIR1.  Этот флаг должен сбрасываться программой.  Бит разрешения/запрещения прерывания устанавливается в PIE1.

Подключение аналоговых входов. Пользователь должен установить регистр ADCON1 так, чтобы линии аналоговых сигналов были сконфигурированы как аналоговые входы. Так как линии аналоговых сигналов включены параллельно  цифровым выходам, которые имеют диоды защиты, подключенные к Vdd и к Vss в обратном направлении, то входной аналоговый сигнал должен ограничиваться этими значениями. Чтобы избежать повреждений входных цепей, рекомендуется подавать аналоговый сигнал через ограничивающий резистор не менее 500 Ом.

Для источников сигнала выходное сопротивление не должно быть больше  
10 кОм. Тогда максимальная погрешность, вызванная током утечки, составляет меньше чем  ±1 LSB при Vdd = Vref  = 5В (10 кОм ´ 5мкА). Другая причина ограничения максимального выходного сопротивления источника сигнала - это требование к запоминанию входного сигнала на специальном конденсаторе в схеме выборки/хранения. Для снижения шума иногда добавляют внешний RC-фильтр. И в этом случае значение R должно быть таким, чтобы суммарная величина сопротивления не превосходила 10 кОм. Любой внешний компонент, подключаемый к аналоговому входу (будь то конденсатор или стабилитрон), должен иметь очень небольшой ток утечки.

Тактирование АЦП. АЦП работает от своего собственного RC-генератора или от главного генератора на кристалле OSC1, как показано а следующей таблице:

Управляющий бит

ADCS1,_ADCS0

Задержка (должна быть > 2 мкс )

00

2 tosc

01

8 tosc

10

32 tosc

11

trc(2..6 мкс, 4мкс номинал)




 

 

 

 

 

 

 

Время преобразования каждого бита занимает одинаковый интервал. Общее время измерения – 10 интервалов. Сам интервал должен быть не менее 2мкс. На низких частотах может быть выбран RC-генератор. Однако его частота существенно зависит от напряжения питания, температуры и других параметров ( период от 2 до 6 мкс, номинал - 4 мкс).

Выборка и хранение. Схема выборки и хранения состоит из последовательного ключа и конденсатора, емкостью 51пФ. Пока управляющий бит ADON имеет значение единицы и выбран один из аналоговых каналов, ключ будет постоянно замкнут, а конденсатор подключен к источнику входного напряжения. Нет специальной команды, чтобы начать и закончить выборку. Когда начинается цикл преобразования, ключ размыкается, и напряжение на конденсаторе запоминается. После завершения преобразования следующее подключение источника сигнала к конденсатору будет сделано через отрезок времени, равный времени преобразования двух бит. Пользователь должен иметь это в виду при определении правильного момента для запуска следующего измерения.

7

6

5

4

3

2

1

0

ADCS1

ADCS0

CHS2 

CHS1

CHS0

GO/DONE

ADON

Рис. 8. Управляющий регистр и регистр статуса АЦП (ADCON0)

Информация о работе Измеритель синусоидального сигнала на базе микропроцессора PIC16F873A