Файл: Архитектура и основы программирования однокристальных микроконтроллеров.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 10.11.2023

Просмотров: 1050

Скачиваний: 7

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

Модультаймераимеетследующиеособенности:

  • 8-разрядный таймер/счетчик, доступен по чтению и записи;

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

  • внутреннее или внешнее тактирование;

  • прерывание по переполнению счетчика (переход от 0FFh к 00h);

  • выбор фронта тактирующего импульса при внешнем тактировании. Упрощенная структурная схема модуля таймера приведена на рис. 1.11.
ВыводRA4/T0CK1

T0CS PS2, PS1, PS0

Примечания:

при переполнении

  1. Биты T0CS, T0SE, PSA, PS2, PS1 и PS0 находятся в регистре OPTION.

  2. Предварительный делитель используется совместно со сторожевым таймером.

Рис. 1.11. Структурная схема таймера

Режим таймера выбирается установкой в '0' бита T0CS (OPTION<5>). В режиме таймера TMR0 увеличивается в каждом командном цикле (в отсутствии предварительного делителя). Если происходит запись в TMR0, то увеличение счетчика задерживается на два последующих цикла выполнения команды. Запись в TMR0 должна вестись с учетом этой задержки. При необходимости проверки регистра TMR0 на ноль без влияния на процесс счета рекомендуется пользоваться командой MOVF TMR0,W.

Режим счетчика выбирается установкой в '1' бита T0CS (OPTION<5>). В этом режиме TMR0 увеличивается по каждому перепаду 1/0 или 0/1 на выводе T0CKI. Перепад, увеличивающий значение TMR0, выбирается битом выбора фронта переключения T0SE (ОРТION<4>). Установка этого бита в '0' вызывает увеличение TMR0 по перепаду 0/1.

Предварительный делитель может использоваться модулем сторожевого таймера WDT или модулем таймера. Подключение предварительного делителя задается битом PSA (OPTION<3>). Установка бита PSA в '1' подключает предварительный делитель к модулю WDT и устанавливает коэффициент деления для TMR0 1:1. Установка бита PSA в '0' подключает предварительный делитель к модулю таймера. Коэффициент деления предварительного делителя

можетбытьустановленбитамиPS0-PS2регистраOPTION(см.табл.1.3).Сампредварительный делительнедоступен длячтенияи записи.
      1. Прерывание от таймера

ПрерываниеотTMR0вырабатываетсяприпереполнениисчетчика(переходе от 0FFh к 00h). При переполнении устанавливается в '1' бит T0IF(INTCON<2>). Прерывание может быть замаскировано установкой в '0' битаT0IE(INTCON<5>).БитT0IFдолженбытьсброшенв'0'впроцедуреобработкипрерыванияотTMR0дотого,какпрерываниясновабудутразрешены.ПрерываниеотTMR0неможетвывестимикроконтроллеризрежима пониженного энергопотребления SLEEP, поскольку в режиме SLEEPтаймер TMR0выключен.
      1. 5>2>3>4>5>5>
        1   ...   8   9   10   11   12   13   14   15   ...   27

Использование TMR0 с внешним сигналом

ЕслидлятактированияTMR0используетсявнешнийсигнал,тоондолженудовлетворятьопределеннымтребованиямдлясинхронизациисвнутренней тактовой частотой. Кроме того, между перепадом на выводе T0CKIиреальнымувеличениемсчетчикаTMR0естьнекотораязадержка.Еслипредварительныйделительнеиспользуется,внешнийтактовыйсигнал на входе T0CKI должен сохранять как высокий, так и низкий уровень втечениенеменеедвухпериодовтактовогогенератора.Когда используется предварительныйделитель,входной сигналTMR0делитсяасинхроннымсчетчикомпредварительногоделителя,поэтомувыходной сигнал делителя является симметричным. Период сигнала на входеTMR0 должен быть не менее четырех периодов тактового генератора. Сигналже на входе T0CKI должен иметь высокие и низкие уровни длительностями неменее10нс. Так как выход предварительного делителя синхронизирован с внутреннейтактовой частотой, то возможна небольшая задержка между перепадом сигналанавыводеТ0СКIи моментомувеличениясодержимого TMR0.
      1. Предварительный делитель

Встроенный8-разрядныйсчетчикможетиспользоватьсякакпредварительный делитель для TMR0 или как дополнительный делитель длясторожевоготаймераWDT.Необходимоучесть,чтоделительможетбытьиспользованлибосTMR0,либососторожевымтаймеромWDT,нонеодновременно.Схемаиспользованияпредварительного делителяотраженанарис1.12.

CLKOUT (=FOSC/4)
0 M U

1

M Синхронизация

Шина данных

8



Вывод

RA4/T0CKI

1 X

0 U два цикла

X

TMR0

T0SE T0CS
0

PSA


    1. разрядный

Установка флага прерывания T0IF при переполнении

M

Сторожевой 1 U

таймер X

предварительный делитель

8


PS2...PS0



Разрешение

WDT

PSA

MUX 8  1
0 1

MUX

PSA




Выход

WDT

Примечание.Биты T0CS, T0SE, PSA, PS2...PS0  биты регистра OPTION <6...0>.
Рис. 1.12. Схема использования предварительного делителя
БитыPSAиPS0-PS2врегистреОРТION<3:0>задаютрежимиспользованияпредварительного делителяи егокоэффициентделения.КогдапредварительныйделительиспользуетсясTMR0,всекоманды,производящиезаписьврегистрTMR0(например,CLRFTMR0,MOVWFTMR0,BSFTMR0,b и т.д.),очищаютпредварительный делитель.Когда предварительный делитель используется со сторожевым таймеромWDT, команда CLRWDT очищает предварительный делитель одновременно сосбросом сторожевого таймера WDT. Предварительный делитель не может бытьсчитанилизаписанпрограммно.Посбросупредварительныйделительсодержитвсе'0'.Назначениепредварительногоделителязадаетсяпрограммноиможетбытьизмененовпроцессевыполненияпрограммы.Чтобыизбежатьнепредусмотренногосбросаконтроллера,припереключениипредварительного делителя с TMR0 на WDT должна быть выполнена такаяпоследовательностькоманд:

BCF CLRF

STATUS,RP0 TMR0

;Установка банка 0.

;Сброс TMR0.

BSF

STATUS,RP0

; Установка банка 1.

CLRWDT




;Сброс WDT и предварительного делителя.

MOVLW

b’xxxx1xxx’

;Укажите новое значение предварительного

MOVWF

OPTION

; делителя.

BCF

STATUS,RP0

; Установка банка 0.

Дляпереключения предварительногоделителясWDTнаTMR0должнабытьвыполненапоследовательность команд:CLRWDT ;СбросWDTипредварительногоделителя.BSF STATUS,RP0;Установкабанка1.MOVLW b’xxxx0xxx’;Указатьновоезначениепредварительногоделителя,;источниктактированияифронтпереключенияTMR0.MOVWF OPTION ;BCF STATUS,RP0;Установкабанка0.Этапоследовательностьдолжнабытьвыполненадажевтомслучае,еслисторожевой таймерWDTзапрещен.
    1. 1   ...   9   10   11   12   13   14   15   16   ...   27