Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
konspekt_lektsy_po_PTsU.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
3.31 Mб
Скачать

6.2.2 Модуль прерывания

PIC12F675 имеет 7 источников прерываний:

--Внешнее прерывание (INT)

--Переполнение TMR0

--Изменение уровня сигнала на входах GPIO

--Прерывание от компаратора

--Прерывание от модуля АЦП

--Переполнение TMR1

--Завершение цикла записи в постоянную память данных

Для организации прерывания в данном микроконтроллере используется три регистра специального назначения:

1)INTCON – содержит биты:

а)GIE –разрешение работы модуля прерывания (0 – прерывания запрещены).

б)PEIE – бит разрешения прерывания от дополнительных модулей.

в)Биты разрешения прерывания и флаги прерывания от основных модулей МК Microchip

биты

флаги

описание

T0IE

I0IF

по переполнению таймера TMR0

INTE

INTF

по внешнему прерыванию INT

GPIE

GPIF

изменение уровня на портах GPIO

2)РIЕ1 и PIR1 для организации работы прерывания от дополнительных модулей МК. Первый содержит биты разрешения прерывания оставшихся периферийных модулей, второй – флаги события. В случае, если МК имеет содержит большое количество периферийных модулей, имеющие возможность организации прерывания, в структуре присутствуют дополнительные регистры PIE2, PIR2 и т.д.

Переход на подпрограмму возможен в случае, если установлен в 1 глобальный бит разрешения прерывания. При этом при переходе на подпрограмму обработки прерывания данный бит аппаратно сбрасывается, тем самым запрещая дополнительные прерывания. Одновременно с этим содержимое счетчика команд загружается в стек, а в сам счетчик команд из него загружается адрес вектора прерывания 004 (от любого источника). При разрешенного прерывания от нескольких источников, непосредственно источник прерывания определяется проверкой флага события, который устанавливается аппаратно при возникновения соответствующего события. По завершению обработки прерывания флаг события должен быть сброшен программным путем для избегания дальнейшего повторного вызова.

Прерывание по INT

При разрешении соответственного прерывания программным путем устанавливается фронт события (передний/задний, регистр OPTIONREG). Флаг устанавливается по соответствующему указанному фронту. Когда активный фронт сигнала появляется на входе INT, бит INTF устанавливается в 1. Запрет соответствующего прерывания осуществляется сбросом бита INTE, который может вывести МК из режима энергосбережения.

Прерывание по изменению уровнях на портах GPIO

Осуществляется путем сравнивания состояния порта в каждом машинном цикле. При несоответствии содержимого предыдущему, осуществляется проверка регистра IOCB (маска). Если прерывания разрешены, то аппаратно генерируется бит GPIF. Данное прерывание может вывести МК из режима sleep.

Прерывание по переполнению таймеров TMR0,1

Соответствующий флаг события устанавливается в 1 при переходе значения буферного регистра из состояния «все F» во «все 0». В режиме sleep таймер TMR0 не работает, TMR1 может вывести МК из этого режима.

Прерывание от компаратора

Происходит при изменении выходного состояния встроенного компаратора, путем установки в 1 флага CMIF. Работа компаратора не связана с системной тактовой частотой, работа возможна в режиме sleep.

Прерывание от модуля АЦП

Модуль АЦП генерирует прерывание по завершению цикла преобразования уровня аналогового значения напряжения в цифровой код (13-15 тактов). По завершению цикла преобразования осуществляется установка в 1 бита ADIF.

Прерывание от модуля постоянной памяти данных.

Флаг события устанавливается в 1 по завершению цикла записи байта данных в EEPROM память. Используется для проверки сохраненных данных и загрузки следующих операндов.

Работа с модулем прерывания

При возникновения разрешенного прерывания в стек происходит аппаратная загрузка содержимого счетчика команд, т.е. адреса возврата. Учитывая, что в основной программе и подпрограммах прерывания используется ряд одних и тех же регистров, то содержимое этих регистров необходимо сохранять программным путем. Из чего следует последовательность программа обработки прерывания:

1)проверка источника прерывания по выставленному флагу в регистре управления прерывания

2)сохранение содержимого аккумулятора в дополнительный резервный регистр, независимо от текущего банка памяти.

3)сохранение регистра признака STATUS в дополнительном регистре

4)выполнение основного модуля подпрограммы обработки прерывания

5)восстановления регистра STATUS.

6)восстановление аккумулятора.

7)сброс флага, вызвавшего прерывание.

8)разрешение глобального прерывания.

9)выход из подпрограммы.

Для организации системы прерывания используются следующие регистры:

--INTCON

--PIE1

--PIR1

--IOCB

Модуль таймера TMR0

Структурная схема дополнительно связана с модулем сторожевого таймера. Основные характеристики:

--8-разрядный таймер/счетчик

--Возможность чтения и записи текущего значения счетчика

--8-разрядный программируемый предделитель, который работает в 2-х режимах: режим счетчика (от внешнего сигнала линии) и режим таймера (от внутреннего сигнала). Модуль является синхронным, т.к. счет зависит от синхронизации системной тактовой частоты. Максимальная частота счета – системная тактовая частота/4.

--возможность выбора активного фронта внешнего тактового сигнала

--Прерывания при переполнении (переход от FFh к 00h)

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

Режим таймера: приращение содержимого буферного регистра происходит в каждом машинном цикле выполнения команды.

Режим счетчика: работа осуществляется от внешнего сигнала со входа C0CKI. Выбор активного фронта осуществляется битом T0SE. Прерывание от модуля TMR0 происходит при переходе значения от FF к 00. При возникновения прерывания устанавливается флаг события. По завершении обработки прерывания данный флаг должен быть сброшен программно. В режиме sleep модуль не работает (нет синхронизации с системной тактовой частотой) и не может генерировать прерывания.

Модуль содержит дополнительный 8-разрядный счетчик, который работает как предделитель. Коэффициенты предделителя определяются битами PS0..2 и может составлять от 1/1 до 1/256. Предделитель может подключаться как к модулю таймера TMR0, так и к сторожевому таймеру через управляющий сигнал PSA. Если предделитель включен в режим работы таймера TMR0, любые команды записи/сброса таймера осуществляются обнулением предделителя. Буфер данного счетчика является программно недоступным для чтения/записи.

Работу таймера организуют следующие регистры:

--OPTIONREG – регистр управления

--TMR0 – буфер модуля

--INTCON – организация прерывания от модуля

--TRISIO – определение направления порта в режиме счетчика.

Модуль таймера TMR1

Основные характеристики модуля:

--16-разрядный коэффициент счета, доступного к чтению/записи.

--2 режима работы: счетчика (асинхронный и синхронный режим) и таймера.

--Возможность работы в режиме sleep

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

--Генерация прерываний по переполнению от FFFFh к 0000h

--Выход из режима SLEEP при переполнении (асинхронный режим)

--Вход внешнего включения таймера -T1G (опционально)

Работой таймера управляет регистр специального назначения T1CON, который содержит следующие биты?

--бит разрешения аппаратного включения таймера по линии T1G - TMR1CE

--определение коэффициента предделителя – T1CKPS1,0

--определяет режим тактового генератора – T1OSCEN

--определяет режим синхронизации и таймера – T1SYNH

--выбор режима модуля (счетчик/таймер) – TMR1SC

--бит включения модуля – TMR1ON

В качестве буферного элемента модуля используются 2 8-разрядных регистра с автоматическим переносом между разрядами: TMR1H и TMR1L.

Работа таймера. Данный таймер может работать в 1 из 3 режимах:16-разрядный таймер, 16-разрядный синхронный/асинхронный счетчик

Включение работы модуля независимо от режима возможно внешним сигналом T1G. Если процессорное ядро МК работает от собственного генератора, то внешние линии OSC1,2 могут быть использованы для подключения внешнего генератора модуля TMR1 (LP режим). В этом режиме модуль работает как асинхронный счетчик. Счет таймера выполняется в спаренных регистрах TMR1H,L, инкрементирует значения от 0000 до FFFF.Далее происходит сброс счетчика с формированием бита события (флаг переполнения).

Модуль имеет в своем составе дополнительный счетчик-предделитель с программно выбираемыми коэффициентами деления от 0 до 8. Данный предделитель недоступен для чтения/записи и сбрасывается аппаратно при доступе к регистрам TMR1H/TMR1L.

Если бит синхронизации T1SYNH сброшен, внешний тактовый сигнал не синхронизируется с внутренним, т.е. с тактовым сигналом МК. В этом режиме таймер работает в режиме sleep. При этом флаг события при разрешенном прерывании выводит МК из sleep.

Чтение буферных регистров во время счета в асинхронном режиме гарантирует получения текущего значения счетчика, что реализовано аппаратно. Запись в модуль в асинхронном режиме следует выполнять после остановки модуля, иначе влияние на содержимое приводит к непредсказуемому значению в регистре.

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

Для организации работы таймера TMR1 необходимо использовать следующие регистры:

--T1CON – регистр управления

--TMR1H,L – сдвоенный буфер

--INTCON, PIR1, PIE1 – организация прерывания

Модуль компаратора

Данный МК содержит в своем составе 1 аналоговый компаратор, входы которого мультиплексированы с портами GP0, GP1, а выход может подключаться к линии GP2. Для организации работы используется регистр CMCON, который содержит следующие управляющие биты:

CMOUT

Выход компаратора

CINV

Инверсный выход компаратора

CIS

Подключение входов компаратора в режимах мультиплексирования

СМ2-0

Режим работы компаратора В соответствии с линиями CM определяется 8 различных режимов работы компаратора.

В соответствии с линиями СМ определяется 8 режимов работы компаратора:

Когда аналоговый сигнал на линии VN+ < VN- на цифровом выходе устанавливается логический 0, при обратном значении – логическая 1. Выход компаратора с помощью соответствующего бита CINV можно инвертировать, тем самым переопределяя линии СN+, СN-.

Ряд режимов предусматривает использование источника опорного напряжения. В этом случае свободные линии работают как цифровые.

Существует режима (6ой и 7ой), при которых внешние порты GP0, GP1 можно коммутировать на инверсный вход с помощью сигнала CIS.

Чаще всего используется либо 1-ый режим, либо 3-ий.

Т.к. аналоговые входы мультиплексированы с цифровыми, то данные линии имеют пару защитных диодов (напряжение питании и«земля»). При этом амплитуда входного сигнала ограничена от -0.6В «земли» до +0.6В питания. Внутреннее сопротивление источника аналогового сигнала должно быть меньше 10КОм. Компоненты, которые подключаются к аналоговым входам, должны иметь минимальные токи утечки.

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

Выход компаратора может быть подключен к каналу порта ввода/вывода (GP2). При этом канал порта становится не синхронизированным выходом.

Модуль компаратора содержит в своем составе дополнительный внутренний источник опорного напряжения, который может подключаться к одному из входов компаратора. Организует работу источника опорного напряжения специальный регистр VRCON. С помощью данного регистра можно определить 32 различных уровня напряжения по соответствующей формуле, получая опорное напряжение от 0В до 5В. Полный диапазон опорных напряжения этого источника не может быть реализован из-за особенности схемы. Выходные напряжения формируются относительно напряжения питания, поэтому изменяются пропорционально самому напряжению питания.

Если компаратор и источник опорного напряжения включены, то при приходе МК в режим sleep они продолжают свою работу. В случае разрешенного прерывания от компаратора и возникновению события на входе (изменение состояния выхода компаратора) МК выходит из режима sleep. При этом значение регистров управления не изменяется. Флаг прерывания от компаратора устанавливается аппаратно, сброшен должен быть программно.

Для организации работы модуля компаратора используются следующие регистры:

--TMCON – регистр управления

--VRCON – регистр управления источником опорного напряжения

--TRISIO – определяет направление соответствующих портов ввода/вывода (GP0, GP1, GP2).

--INTCON, PIR1, PIE1 – обеспечивают прерывание от компаратора.

Работа функциональной схемы осуществляется с помощью регистра управления VRCON, в котором присутствуют следующие разряды:

--VREN (включение модуля)

--VRR (выбор диапазона опорного напряжения)

--VR0-3 (определяет 16 различных уровней опорного напряжения)

Модуль АЦП

Модуль АЦП преобразует входной аналоговый сигнал в соответствующий 10-разрядный цифровой код. В PIC12F675 четыре аналоговых канала, мультиплексируемые на одну схему выборки и хранения.