Модуль таймера и регистр таймера.
Структура модуля таймера/счетчика Т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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!
