Читаем PIC-микроконтроллеры. Все, что вам необходимо знать полностью

Переполнение Таймера 1 и установка флага прерывания TMR1IF происходит после 216 = 65 536 событий, считая от нуля. Этот флаг, в свою очередь, может использоваться для прерывания работы процессора, если парный ему бит маски TMR1IE в регистре PIE1 (см. Рис. 7.5 на стр. 223) установлен в 1. Разумеется, никто не запрещает отслеживать это событие путем обычного опроса данного флага. В любом случае флаг TMR1IF должен быть сброшен вручную после обнаружения переполнения.

К примеру, при использовании резонатора с частотой 32.768 кГц переполнение Таймера 1 будет происходить каждые 2 с при T1CKPS[1:0] = 00 и каждые 16 с при T1CKPS[1:0] = 11.

По умолчанию сигнал с выхода программируемого предделителя синхронизируется с системным тактовым сигналом, что приводит к появлению задержки, равной двум машинным циклам. Однако в отличие от Таймера 0 в этом таймере сигнал может передаваться в обход сдвигового регистра синхронизатора при установке бита  (T1CON[2]) в 1. Наличие асинхронного режима позволяет использовать Таймер 1 с внешним источником тактового сигнала при нахождении микроконтроллера в «спящем» режиме. Поскольку сдвиговый регистр синхронизатора тактируется системным тактовым сигналом fOSC, который в «спящем» режиме отключается, возможность обхода данного регистра просто необходима. Также асинхронный режим необходимо использовать, когда частота внешнего тактового сигнала в 4 раза больше частоты системного резонатора (в этом случае наличие синхронизатора приведет к пропуску некоторой части событий).

За исключением указанных случаев, бит  должен быть сброшен, поскольку отсутствие синхронизации может привести к непредсказуемому результату при попытке записи в счетный регистр Таймера 1 в тот момент, когда осуществляется его инкрементирование по внешнему событию. Если требуется изменить состояние Таймера 1 в асинхронном режиме, то его необходимо остановить сбросом бита TMR1ON. Так, для записи в Таймер 1 константы h’8000’:

movlw h’80’; Новое значение старшего байта

bcf T1CON,TMR1ON; Останавливаем таймер

movwf TMR1H; Загружаем в Таймер 1 число 8000h

clrf TMR1L

bsf T1CON,TMR1ON; Перезапускаем таймер

Изменение состояния Таймера 1 всегда вызывает сброс счетчика предделителя.

Если Таймер 1 работает в синхронном режиме, его значение можно изменять «на лету». Необходимо только быть аккуратным при изменении обоих байтов счетчика, поскольку может случиться так, что после изменения старшего байта переполнение младшего произойдет до записи в него нового значения, в результате чего старший байт изменится нежелательным образом. Чтобы избежать этого, перед записью нового значения следует обнулить младший байт. Вот как, например, можно записать в Таймер 1 «налету» число h’9FFF’:

movlw h’9F’; Новое значение старшего байта

clrf TMR1L; Предохраняемся от переполнения младшего байта

movwf TMR1H; Обновляем старший байт счетного регистра

movlw h’FF’; Новое значение младшего байта

movwf TMR1L; Обновляем младший байт счетного регистра

Содержимое Таймера 1 можно прочитать в любой момент времени даже при работе в асинхронном режиме. Однако, поскольку одновременно можно считать только один байт[175], возможна ситуация, при которой между двумя последовательными операциями чтения произойдет переполнение таймера, например:

; Предположим, что текущее состояние Таймера 1 — h’80FF’

     movf TMR1L,w; Читаем младший байт = h’FF’

     movwf TEMPL; Запоминаем

; ««в этот момент состояние Таймера 1 изменилось на h’8100’»»

     movf TMR1H,w; Читаем старший байт = h’81’

     movwf TEMPH; Запоминаем. Считанное значение равно h’81FF’!!!

В результате выполнения предыдущего кода мы получим значение h’81FF’ вместо h’80FF’. Возникновение такой ситуации наиболее вероятно при генерации прерывания от другого периферийного устройства между последовательными операциями чтения.

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

Перейти на страницу:

Все книги серии Программируемые системы

PIC-микроконтроллеры. Все, что вам необходимо знать
PIC-микроконтроллеры. Все, что вам необходимо знать

Данная книга представляет собой исчерпывающее руководство по микроконтроллерам семейства PIC компании Microchip, являющегося промышленным стандартом в области встраиваемых цифровых устройств. В книге подробно описывается архитектура и система команд 8-битных микроконтроллеров PIC, на конкретных примерах изучается работа их периферийных модулей.В первой части излагаются основы цифровой схемотехники, математической логики и архитектуры вычислительных систем. Вторая часть посвящена различным аспектам программирования PIC-микроконтроллеров среднего уровня: описывается набор команд, рассматривается написание программ на ассемблере и языке высокого уровня (Си), а также поддержка подпрограмм и прерываний. В третьей части изучаются аппаратные аспекты взаимодействия микроконтроллера с окружающим миром и обработки прерываний. Рассматриваются такие вопросы, как параллельный и последовательный ввод/вывод данных, временные соотношения, обработка аналоговых сигналов и использование EEPROM. В заключение приводится пример разработки реального устройства. На этом примере также демонстрируются простейшие методики отладки и тестирования, применяемые при разработке реальных устройств.Книга рассчитана на самый широкий круг читателей — от любителей до инженеров, при этом для понимания содержащегося в ней материала вовсе не требуется каких-то специальных знаний в области программирования, электроники или цифровой схемотехники. Эта книга будет также полезна студентам, обучающимся по специальностям «Радиоэлектроника» и «Вычислительная техника», которые смогут использовать ее в качестве учебного пособия при прослушивании соответствующих курсов или выполнении курсовых проектов.

Сид Катцен

Радиоэлектроника

Похожие книги

Электроника для начинающих (2-е издание)
Электроника для начинающих (2-е издание)

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

Чарльз Платт

Радиоэлектроника / Технические науки
Электроника для начинающих
Электроника для начинающих

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

Паоло Аливерти , Чарльз Платт

Радиоэлектроника / Технические науки
Искусство схемотехники. Том 3 (Изд.4-е)
Искусство схемотехники. Том 3 (Изд.4-е)

Широко известная читателю по предыдущим изданиям монография известных американских специалистов посвящена быстро развивающимся областям электроники. В ней приведены наиболее интересные технические решения, а также анализируются ошибки разработчиков аппаратуры: внимание читателя сосредотачивается на тонких аспектах проектирования и применения электронных схем. На русском языке издается в трех томах. Том 3 содержит сведения о микропроцессорах, радиотехнических схемах, методах измерения и обработки сигналов, принципах конструирования аппаратуры и проектирования маломощных устройств, а также обширные приложения. Для специалистов в области электроники, автоматики, вычислительной техники, а также студентов соответствующих специальностей вузов и техникумов.

Пауль Хоровиц , Уинфилд Хилл

Техника / Радиоэлектроника