Смекни!
smekni.com

Разработка PIC-контроллера устройства измерения временных величин сигналов (стр. 2 из 9)


1.2 Разработка структурной схемы устройства

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

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

Для достаточной чувствительности устройства необходимо применить усилитель–формирователь. Тогда устройство имеет вид (рисунок 1.3).


рисунок 1.3

Принцип работы структуры заключается в следующем. На вход устройства поступает сигнал с внешнего источника. Благодаря усилителю–формирователю происходит усиление сигнала и преобразование в удобную для счета форму. Преобразованный сигнал поступает в PIC через порт и благодаря ПО происходит обработка входного сигнала в виде временной величины, что в свою очередь выводится через порт на индикацию.

1.3 Описание базового микроконтроллера

1.3.1 Регистры

Память данных разбита на два банка, которые содержат регистры общего назначения РОН и регистры специального назначения РСН. Выбор банка определяется состоянием бита RРО в регистре STATUS. Когда RPO установлен в "1", выбран банк 1, иначе — 0. Первые 12 байт каждого банка отведены под РСН. Некоторые РСН отображаются одновременно на оба банка. РОН доступны из любого банка.

Регистры общего назначения могут быть адресованы прямо или косвенно с использованием регистра косвенной адресации FSR. Регистры специального назначения используются для управления ЦПУ и функциями ввода-вывода и представленны в таблице 1.1.

Регистр STATUS содержит флаги АЛУ, параметры сброса (RESET) и биты выбора банка памяти данных. Регистр STATUS так же, как и любой другой регистр, может быть операндом для любой команды. Если регистр STATUS используется в качестве операнда для команды, которая воздействует на биты Z, DC или С, то непосредственная запись в эти биты запрещена. Более того, запись в биты -ТО и -PD запрещена. Поэтому результат команды, использующей STATUS в качестве регистра назначения, может отличаться от ожидаемого.

Регистр OPTION доступен для чтения и записи и содержит различные управляющие биты для конфигурации предделителя TMRO/WDT, самого TMR0 и подтягивающих резисторов GPIO.

Регистр INTCON доступен для чтения и записи и содержит биты разрешения прерываний: общего, периферийных устройств и TMR0, а также флаг переполнения TMR0.


Таблица 1.1 — Регистры специального назначения

Обозначение Описание
Бит7 Бит6 Бит5 Бит4 Бит3 Бит2 Бит1 Бит0
Банк 0
INDF При обращении производится доступ к ОЗУ по адресу в FSR
TMR0 Регистр TMR0
PCL Младший байт счетчика команд PC
STATUS IRP RP1 RP0 -TO -PD Z DC C
FSR Индексный регистр косвенной адресации
PORTA RA4/T0CKI RA3 RA2 RA1 RA0
PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0/INT
EEDATA Регистр данных Flash–ПЗУ
EEADR Регистр адреса Flash–ПЗУ
PCLATH Буфер для записи старших 5 бит РС
INTCON GIE EEIE T0IE INTE RBIE T0IF INTF RBIF
Банк 1
INDF При обращении производится доступ к ОЗУ по адресу в FSR
OPTION GPPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
PCL Младший байт счетчика команд PC
STATUS IRP RP1 RP0 -TO -PD Z DC C
FSR Индексный регистр косвенной адресации
TRISA Регистр направления данных PORTA
TRISB Регистр направления данных PORTB
EECON1 EEIF WRERR WREN WR RD
EECON2 Регистр 2 управления Flash–ПЗУ (физически не реализован)
PCLATH Буфер для записи старших 5 бит РС
INTCON GIE EEIE T0IE INTE RBIE T0IF INTF RBIF

Таблица 1.2 — Состояние регистров после сброса POR

Регистр Состояние
W xxxx xxxx
INDF ---- ----
TMR0 xxxx xxxx
PCL 0000 0000
STATUS 0001 1xxx
FSR xxxx xxxx
PORTA ---x xxxx
PORTB xxxx xxxx
EEDATA xxxx xxxx
EEADR xxxx xxxx
PCLATH ---0 0000
INTCON 0000 000x
OPTION 1111 1111
TRISA ---1 1111
TRISB 1111 1111
EECON1 ---0 x000
EECON2 ---- ----

Регистр INDF не является физическим регистром. При обращении к регистру INDF на самом деле происходит косвенная адресация памяти данных.

Косвенная адресация реализована через регистр INDF. Любая команда, использующая регистр INDF, фактически обращается к данным, на которые указывает регистр адреса в файле (FSR). Чтение самого INDF с помощью косвенной адресации дает в результате 00h. Результатом косвенной записи в регистр INDF будет NOP.

1.3.2 Стек

PIC16F84 имеет аппаратный стек глубиной 8 13-битных слов. Стек не является частью памяти программ или данных, а указатель стека не может быть явно прочитан или модифицирован. При выполнении команды CALL или возникновении прерывания PC сохраняется в стеке. При выполнении команд RETURN, RETLW или RETFIE значение PC восстанавливается из стека. Содержимое PCLATH при этом не изменяется.

Стек работает как циклический буфер. Это означает, что после того, как в стек было помещено восемь записей, девятая помещается на место первой, десятая - на место второй, и т.д.

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

PIC16F84 имеет два порта, а именно PORTA, PORTB. Некоторые каналы портов совмещают функции выводов других периферийных устройств.

PORTA — это 5-разрядный порт. RA4 имеет триггер Шмитта на входе и открытый сток на выходе. Остальные каналы порта имеют входные уровни ТТЛ и выходные буферы КМОП. Порт имеет регистр направления TRISA, с помощью которого каналы порта могут быть индивидуально настроены на ввод или на вывод.

Установка в "1" бита регистра TRISA определяет соответствующий канал PORTA как вход, т.е. выходные буферы переводятся в третье состояние. Установка в "0" бита регистра TRISA определяет соответствующий канал PORTA как выход, т.е. содержимое защелки порта выводится на соответствующий вывод микросхемы.

Чтение регистра PORTA возвращает состояние на выводах порта, тогда как запись производится в защелку PORTA. Все операции записи в порт производятся как чтение-модификация-запись, т.е. сначала производится чтение состояния выводов, затем модификация и запись в защелку. Канал RA4 также работает как вход тактового сигнала TMR0.

PORTВ — это 8-разрядный порт, который имеет регистр направления TRISB, с помощью которого каналы порта могут быть индивидуально настроены на ввод или на вывод.

Установление в "1" бита регистра TRISB определяет соответствующий какал PORTB как вход, т.е. выходные буферы переводятся в третье состояние. Установление а "0" бита регистра TRISB определяет соответствующий канал PORTB как выход, т.е. содержимое защелки порта выводится на соответствующий вывод микросхемы.

Все контакты PORTВ имеют встроенные подтягивающие резисторы. Их включением управляет один бит -RCPU, он должен быть установлен в "0". Подтягивающие резисторы автоматически выключаются, когда каналы порта настраиваются на вывод и после POR.

Все операции вывода в порт осуществляются как чтение-модификация-запись. Команды BCF и BSF, например, считывают значение порта в ЦПУ, выполняют операцию с битом и записывают результат обратно. Требуется осторожность при применении этих команд к порту, содержащему как входы, так и выходы. Например, операция BSF надбитом 5 PORTB считывает все восемь битов PORTB в ЦПУ выполняется и записывает результат в выходные защелки. Если другой канал PORTВ используется как двунаправленный и настроен в данный момент на ввод, то входной сигнал будет считан с вывода в ЦПУ и записан а защелку данных этого канала поверх предыдущего значения.

1.3.4 Таймер

Возможности TMR0:

-8-разрядный таймер доступен для чтения и записи,

-8-разрядный программируемый предделитель,

-выбор источника тактового сигнала (внутренний или внешний),

-выбор активного фронта внешнего тактового сигнала,

-прерывание по переполнению таймера.

Режим работы от внутреннего тактового сигнала выбирается установлением в "0" бита Т0CS. Приращение значения TMR0 производится в каждом машинном цикле (без предделителя). После записи в TMR0 нового значения инкремент счетчика запрещен два последующих цикла.

Режим работы от внешнего тактового сигнала выбирается установлением в "1" бита T0СS. Приращение значения TMR0 производится по нарастанию или по спаду, а зависимости от состояния бита T0SЕ, сигнала со входа T0CKI.

TMR0 имеет программируемый предделитель. Предделитель может быть подключен либо к TMRO, либо к WDT. Бит PSA управляет подключением предделителя.

Прерывание от TMR0 возникает при переполнении TMR0, при этом флаг T0IF устанавливается в "1" и TMR0 продолжает работу. Запретить это прерывание можно установкой в "0" бита T0IE. Процедура обработки прерывания должна установить флаг T0IF в "0" перед тем, как вновь разрешить прерывание. Прерывание от TMRO не может вывести процессор из режима SLEEP, поскольку таймер в этом режиме выключен.

1.3.5 Предделитель

8-разрядный счетчик может использоваться как предделитель для TMR0 или как постделитель для WDT. Имеется только один преддепитель, который может быть использован либо для TMR0, либо для WDT. Подключение предделителя к TMR0 означает, что WDT не может его использовать, и наоборот.