Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Микроконтроллеры PIC фирмы Microchip для начинающих Выпуск №30


РАССЫЛКА Микроконтроллеры PIC фирмы Microchip для начинающих
Ведущий: Алексей (pont_a@mail.ru)


Доброго времени суток, дамы и господа!!

Сегодня продолжаем рассматривать модули захвата/сравнения CCP микроконтроллера PIC18F452! Этот выпуск будет посвящен режиму сравнения.

Открываем datasheet и находим раздел «14.0 CAPTURE/COMPARE/PWM (CCP) MODULES». Находим пункт «14.4 Compare Mode». В этом пункте описан режим сравнения периферийного модуля CCP!
В данном режиме происходит аппаратное сравнение текущего значения таймера, на который настроен модуль CCP, и значения в регистрах CCPRxH и CCPRxL с генерацией прерывания (если разрешено) и формированием запрограммированного внешнего события, если значения совпадут. Внешние события могут быть следующие:

  • нарастающий фронт (переход из нуля в единицу) на выходе пина CCPx;
  • спадающий фронт (переход из единицы в ноль) на выходе пина CCPx;
  • инверсия состояния выхода пина CCPx;
  • выход пина CCPx  не изменяется и можно его, вообще, не использовать;

Также, возможно настроить модуль сравнения на установку триггера специальных событий (special event trigger). При совпадении значения таймера и значения, записанного в регистры CCPRxH:CCPRxL, формируется специальное событие, которое не изменяет внешних выходов, но генерирует внутренний сигнал, который сбрасывает текущее значение таймера 1 или таймера 3. А специальное событие модуля сравнения CCP2, еще, дополнительно, запускает этим сигналом в работу  АЦП (если он включен), устанавливая бит GO/DONE регистра ADCON0. Т.е., мы можем использовать триггер специальных событий модуля CCP2 для формирования замеров какого-то аналогового сигнала, на который настроен АЦП, с определенным периодом, который мы сами же и зададим. 
Тип события выбирается программистом записью битов CCPxM3:CCPxM0 в регистре CCPxCON.  Какое значение необходимо занести в эти биты для выбора, смотрите в
27-м выпуске рассылки. Также, если мы используем режим сравнения модуля CCPx с формированием внешнего события, которое изменяет состояние пина CCPx, то, нам необходимо, пин RC2(CCP1) или пин RC1(CCP2)  настроить как выход! Запрограммировав, соответственно, регистр TRISC.
Чтобы использовать режим сравнения, с каким либо из таймеров 1 или 3, необходимо, чтобы этот таймер работал в режиме таймера или синхронного счетчика! В режиме асинхронного счетчика использовать таймер для модуля CCPx в режиме сравнения нельзя! Т.е., если Вам необходимо сформировать внешнее событие модуля CCPx по какому либо количеству импульсов на входе одного из таймеров (например, сделать простейший делитель частоты), то таймер надо запрограммировать в режим синхронного счетчика, а модуль захвата/сравнения настроить на этот таймер и включить режим сравнения с внешним событием «инверсия состояния выхода пина CCPx». В регистры CCPRxH:CCPRxL занести значение, которое и будет количеством импульсов, через которое выход пина CCPx проинвертирует свое состояние.
Если Вы захотите программно сформировать условие сравнения, например, записав одинаковые значения в регистры таймера и модуля захвата/сравнения, то внешнее событие на пине CCPx происходить не будет, а будет генерироваться только прерывание и то, если оно разрешено!
Функциональная схема модулей CCP1 и CCP2 в режиме сравнения представлена ниже:

функцианальная схема модулей CCP в режиме сравнения

В следующем выпуске продолжим рассматривать модуль захвата/сравнения микроконтроллера PIC18F452.  Начнем рассматривать режим ШИМ!
 
Полный архив рассылки Вы можете прочитать на нашем сайте!  При любом опубликовании текстов данной рассылки ссылка на сайт http://www.2aplusa.ru обязательна!

Желаю Вам удачи! До скорой встречи!


С уважением, Алексей pont_a@mail.ru
Cайт разработчиков 2AplusA http://2aplusa.ru


В избранное