Изменим схему следующим образом

добавим две тактовые кнопки BT1 и BT2.

Теперь переключимся на конфигурацию выводов, для этого сделаем двойной клик в окне Ресурсы проекта на Pin Module.

В окне Pin Module настроим RB6 и RB7

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

В итоге у нас должен быть такой вид

Тискаем кнопочку сгенрировать

А теперь посмотрим как изменилась конфигурация входов:

Что изменилось?

Два вывода настроены на вход

Подключили к этим входах подтягивающие резисторы

Выполнена настройка полярности формирования прерываний

Регистрация функций прерываний и разрешение прерываний от портов по изменению состояния

Изменилась также функция менеджера прерываний

В ней появилось секция обработки прерываний от изменения состояний на входах


Для индикации работы прерываний по входам будем использовать те же светодиоды, для этого закомментируем их функцию в прерываниях от таймера

и добавим их в функции IOCBF6_ISR и IOCBF7_ISR

Теперь прошьем ПИК.

УПС!!! получили ошибки как видно эта версия МСС еще не совсем корректно работает, но это не проблема, просто МСС “забыл добавить новые функции в описание, в шапку. Это нас не должно останавливать, поэтому сделаем это за него. Добавим строки в файл pin_manager.h.

Теперь все завелось!!! И работает! Но как? Мы настроили, что при нажатию на кнопку состояние светодиода должно быть изменено на противоположное, все так и работает, но иногда почему-то происходит сбой.

Светодиод сразу выключается или помаргивает и все. это связано с нашим банальным дребезгом механических контактов.

Любой механический контакт, как бы он не был совершенен, в процессе замыкании, создает в своем начале дребезг, тоже самое происходит и при размыкании, это дребезг даже нашим “тихоходным контроллером” может быть обработан многократно, что при определенной ситуации даст нам нежелательный результат.

Как с этим дребезгом бороться, известно давно, что в тактовых кнопках длительность дребезга не более 10 мс. Локи проста при появлении прерывания, надо подождать 10 мс проверить уровень на входе и если он низкий выполнить функцию, если нет, то это будем расценивать как помеху. И все.

Как это будет выглядеть на практике изменим рабочий код прерывания для входа RB7

Что сделали? Добавили задержку а потом проверку реально низкого уровня на входе. Но надо не забыть добавить в заголовочный файл pin_manager.h вставку #include “mcc.h”  в файле mcc.h описывается тактовая рабочая частота которая необходима для функции задержки.

Часть текста файла pin_manager.h с изменениями

Теперь проверим как будет работать кнопки на “модернизированном” входе и без. Кнопка подключенная ко входу RB7 работает четко переключая светодиод, а кнопка подключенная к входу RB6 со сбоями. Это типа ощутите разницу!

Теперь выполним модернизацию и входа RB6

Перепрошьем ПИК и о чудо, можно сказать жизнь удалась!!! Все работает без единого сбоя.

Очень важно получить от механических устройств правильно сформированный импульс, все стародавние варианты, с подключением конденсаторов для микроконтроллеров не катят, все должно обрабатываться программно. И актуально когда нужно получить счетный вход!


Проект по теме 


Теперь мы можем управлять светодиодами, а можем ли мы управлять их яркостью? Это рассмотрим в следующей главе…


Это может быть интересно


  • Оптосимистор и его применениеОптосимистор и его применение
    Эрве Кадино “Цветомузыкальные установки” Ответ на вопрос – управление мощным тиристором или симистором, от терморегулятора. Статья в pdf Оптосимистор принадлежат к классу оптронов и обеспечивают очень хорошую гальваническую развязку (порядка …
  • Часы-кухонный таймерЧасы-кухонный таймер
    Каждая кухня должна иметь кухонный таймер, который позволяет напоминать хозяйке когда проходить определенный промежуток времени. Например, печем пирог, варим яйца… , чтобы не смотреть постоянно на часы, установим таймер и через заданный …
  • Проект с использованием MCC часть 05Проект с использованием MCC часть 05
    Эту часть назовем так как избавься от delay, там где а это реально не надо. Для это нам потребуется научиться использовать прерывания и работать с таймерами. Что такое таймер? Это …
  • ESP8266  процедура получение данных даты и времени от серверов точного времени.ESP8266 процедура получение данных даты и времени от серверов точного времени.
    Эта функция доступна уже в версии 1.6.1. Для многих приложений, необходимо часы реального времени,  если в вашем проекте есть модуль WiFI ESP8266, то легко можно сделать следующим образом. Процедура описывает …
  • Проект с использованием MCC часть 09Проект с использованием MCC часть 09
      Эта часть будет посвящена созданию практического проекта управления освещение. Тех задание: Два выхода управления ШИМ – светодиодным освещением. Две кнопки управления, каждая кнопка управляет, своим каналом, логика самая простая, нажимаем …
  • Проект с использованием MCC часть 13Проект с использованием MCC часть 13
    Так как используя MCC мы можем его использовать со своими библиотеками, поэтому настало время и свое создать. Для начала откроем наш заголовочный файл в нем очень много букв: По этому. да …
  • Защита датчиков температуры DS18B20 от статического электричестваЗащита датчиков температуры DS18B20 от статического электричества
    Статья перепечатана с сайта http://svetomuzyka.narod.ru При удалении датчика на большие расстояния возникает опасность наведения импульсов высокого напряжения на кабель, который соединяет датчик с контролером. Если не принимать меры защиты, то наведенное …
  • Проект с использованием MCC часть 10Проект с использованием MCC часть 10
    Алгоритм управления освещением от нажатия кнопки. Обработка удержания кнопки: Мы должны проверить кнопка в настоящий момент нажата и флаг удержания установлен, если да Проверить таймер удержания “отработал” – это значит, …
  • Простой цифровой милливольтметр постоянного токаПростой цифровой милливольтметр постоянного тока
    Простой цифровой вольтметр постоянного тока. Три диапазона измерений с автоматическим переключением 1 – 0,001 – 0,999 V, 2 – 0,01-9,99 V, 3 – 0,1-99,9. Четыре управляемых выхода с возможностью задания функции контроля и времени реакции на …
  • Проект с использованием MCC часть 08Проект с использованием MCC часть 08
    И так создадим проект в котором при помощи двух кнопок мы сможем управлять яркостью светодиодов. При использовании МСС у нас лафа полная, добрые дяди с Microchipa подготовили функции, которыи позволяет …



Tagged with →  
Share →
Translate »

Copyright © Catcatcat electronics 2013-2019. Все права защищены.
Копирование разрешается только с указанием активной ссылки на правообладателя.

e-mail: catcatcat.electronics@gmail.com