Режим работы "Таймер". Программа для работы данной схемы. Принцип работы схемы вкратце

Страницы работы

Фрагмент текста работы

Режим работы Таймер

В данной статье мы будем рассматривать данный режим для таймера 3. Для всех таймеров данный режим работает одинаково.

В этом режиме таймер тактируется внутренним источником синхроимпульсов.  Эти импульсы сперва поступают на предделитель. Если таймер включён, то значение его регистра увеличивается на 1 при каждом переднем фронте входного импульса. Когда значение в регистре таймера TMR3 достигает значения в регистре периода таймера PR3.

Для настройки режима таймера необходимо:

1.  Сбросить бит TCS в 0, что будет указывать, что тактироваться таймер будет с внутреннего источника (T3CONbits.TCS=0;)

1.  Отключаем режим работы GATE, для этого сбрасываем бит TGATE (T3CONbits.TGATE=0;)

Вот в принципе и всё что можно было сказать про этот режим.

Мы готовы, чтобы написать маленькую программку используя таймер 3.

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

Составляем схему в PROTEUS

Принцип работы схемы вкратце следующий: При нажатии на какую-нибудь кнопку, происходит внешнее прерывания INT для микроконтроллера. Где устанавливается, так сказать, направление движения поезда. Если поезд находится между двумя кнопками, то включается таймер TMR3. Он нужен для создания попеременного мерцания фонарей с определённой частотой (допустим включён левый фонарь, после отсчёта времени происходит прерывание по переполнению таймера, и в обработке прерывания левый фонарь гасим, а правый зажигаем; снова отсчитываем определённый промежуток времени, происходит прерывание и снова меняем состояние фонарей на противоположное, и так до тех пор, пока включен таймер)

Программа для работы данной схемы приведена ниже:

#include "p33Fxxxx.h"           

char state;                                          // переменная хранит направление движения поезда

// "1" - "сверху вниз", "2" - снизу вверх, "0"-выключен звонок

void init (void);                                   //объявляем подпрограмму инициализации

// ********** подпрограмма инициализация **********

void init (void)

{   _CN19PUE=1;                                 //включаем подтягивающий резистор на вход CN28

     _CN20PUE=1;                                //включаем подтягивающий резистор на вход CN25

     AD1PCFGL=0xffff; // все выводы как цифровые I/O

     T3CONbits.TON=0;             //Таймер 3 выключен,

     T3CONbits.TCS=0;             //тактовый сигнал внутренний,

     T3CONbits.TGATE=0;        // отключаем режим GATE

     T3CONbits.TCKPS=0b11;   // предделитель устанавливаем 1:256

     PR3=0x1900;          // Заносим значение периода, с которым будет мерцать светофор

Похожие материалы

Информация о работе