Модуль таймера и регистр таймера.



Структура модуля таймера/счетчика ТIMER0 и его взаимосвязь с ре­гистрами ТМR0 и ОРTION является про­граммируемым модулем и содержит следующие компоненты:

• 8-разрядный таймер/счетчик ТМR0 с возможностью чтения и записи как регистр;

• 8-разрядный программно управляемый предварительный делитель (пределитель);

• мультиплексор входного сигнала для выбора внутреннего или внеш­него тактового сигнала;

• схему выбора фронта внешнего тактового сигнала;

• формирователь запроса прерывания по переполнению регистра ТМR0 с FFh до 00h.

.

Режим таймера выбирается путем сбрасывания в ноль бита Т0CS реги­стра ОРTION <5>. В режиме таймера ТМR0 инкрементируется каждый командный цикл (без пределителя). После записи информации в ТМR0 инкрементирование его начнется после двух командных циклов. Это про­исходит со всеми командами, которые производят запись или чтение-мо­дификацию-запись ТМR0 (например, МОVF ТМR0). Избе­жать этого можно при помощи записи в ТМR0 скорректированного значения. Если ТМR0 нужно проверить на равенство нулю без останова счета, следует использовать инструкцию МОVF ТМR0,W.

Режим счетчика выбирается путем установки в единицу бита Т0CS ре­гистра ОРTION<5>. В этом режиме регистр ТМR0 будет инкрементироваться либо нарастающим, либо спадающим фронтом на выводе RА4/ Т0СКI от внешних событий. Направление фронта определяется управля­ющим битом Т0SE в регистре ОРТION<4>. При Т0SE = 0 будет выбран нарастающий фронт.

Пределитель может использоваться или совместно с ТМR0, или со сто­рожевым таймером. Вариант подключения делителя контро­лируется битом РSA регистра ОРТION<3>. При РSА=0 делитель будет подсоединен к ТМR0. Содержимое делителя программе недоступно. Коэф­фициент деления пределителя программируется битами РS2...РS0 регист­ра ОРТION<2:0>. Прерывание по ТМR0 вырабатывается тогда, когда происходит пере­полнение регистра таймера/счетчика при переходе от FFh к 00h. Тогда устанавливается бит запроса Т0IF в регистре INTCON<2>. Данное пре­рывание можно замаскировать битом Т0IF в регистре INTCON<5>. Бит запроса Т0IF должен быть сброшен программно при обработке прерывания. Прерывание по ТМR0 не может вывести процессор из режима SLЕЕР потому, что таймер в этом режиме не функционирует.

При РSА=1 делитель будет подсоединен к сторожевому таймеру как постделитель (делитель на выходе).

При использовании пределителя совместно с ТМR0, все команды, из­меняющие содержимое ТМR0, обнуляют пределитель. Если пределитель используется совместно с WDТ, команда CLRWDT обнуляет содержимое пределителя вместе с WDТ.

При использовании модуля ТIМЕR0 в режиме счетчика внешних со­бытий необходимо учитывать то, что внешний тактовый сигнал синхро­низируется внутренней частотой Fosc. Это приводит к появлению задер­жки во времени фактического инкрементирования содержимого ТМR0.

Если модуль ТIМЕR0 используется совместно с пределителем, то час­тота входного сигнала делится асинхронным счетчиком так, что сигнал на выходе пределителя становиться симметричным.

 

Занятие 50(54)

Организация прерываний

МК подгруппы РIС16F8Х имеют четыре источника прерываний:

• внешнее прерывание с вывода RВ0/INТ;

• прерывание от переполнения счетчика/таймера ТМR0;

• прерывание от изменения сигналов на линиях порта RВ<7:4>;

• прерывание по окончании записи данных в ЕЕРRОМ.

Все прерывания имеют один и тот же вектор/адрес — 0004h. Однако в управляющем регистре прерываний INTCON соответствующим битом-признаком записывается, от какого именно источника поступил запрос прерывания. Исключение составляет прерывание по завершении записи в ЕЕРRОМ, признак которого находится в регистре ЕЕCON1. Бит общего разрешения/запрещения прерывания GIЕ (INТСОN <7>) разрешает (если = 1) все индивидуально незамаскированные прерывания или запрещает их (если = 0). Каждое прерывание в отдельности может быть дополнительно разрешено/запрещено установкой/сбросом соответ­ствующего бита в регистре INTCON.

Бит GIЕ при сбросе обнуляется.. Когда начинает обрабатываться пре­рывание, бит GIЕ обнуляется, чтобы запретить дальнейшие прерывания, адрес возврата посылается в стек, а в программный счетчик загружается адрес 0004h. Время реакции на прерывание для внешних событий, таких как прерывание от ножки INТ или порта В, составляет приблизительно пять циклов. Это на один цикл меньше, чем для внутренних событий, та­ких как прерывание по переполнению от таймера ТМR0. Время реакции всегда одинаковое.

В подпрограмме обработки прерывания источник прерывания может быть определен по соответствующему биту в регистре признаков. Этот флаг-признак должен быть программно сброшен внутри подпрограммы. Признаки запросов прерываний не зависят от соответствующих маскиру­ющих битов и бита общего маскирования GIЕ.

Команда возврата из прерывания RETFIE завершает прерывающую под­программу и устанавливает бит GIЕ, чтобы опять разрешить прерывания.


Дата добавления: 2022-01-22; просмотров: 41; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!