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

добавим две тактовые кнопки 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

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

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


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

Icon

Проект с использованием MCC часть 06 261.19 KB 63 downloads

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


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


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


  • WiFi ESP8266 – AT команды связанные с функцией Wi-FiWiFi ESP8266 – AT команды связанные с функцией Wi-Fi
    AT команды связанные с функцией Wi-Fi Функции Wi-Fi подключения, запускаться из командной строки Команда Описание  1 AT+CWMODE Проверка, настройка режима работы Wi-Fi (sta/AP/sta+AP), (не рекомендуется для новых проектов). 2 AT+CWMODE_CUR Проверка, …
  • Дифференциальный терморегуляторДифференциальный терморегулятор
    Дифференциальный терморегулятор ch-3020 Назначение. Ch-c3020 представляет собой дифференциальный терморегулятор. Основное назначение солнечные системы горячего водоснабжения, а также вентиляционные системы управление притоком свежего воздуха. Контроллер позволяет работать пяти режимах. 1 – …
  • Проект с использованием MCC часть 16Проект с использованием MCC часть 16
    Продолжим изучение EUSART. На этом этапе отработает передачи данных с ПК и получения эха. Для этого в основной цикл программы добавим код

    [crayon-5e22afd245337275867069/]

    Суть его проста постоянно в главном цикле …

  • Сенсорный выключатель светаСенсорный выключатель света
    Хотя в настоящий момент актуальны системы управления освещением с передачей данных по электросети, но я думаю, что проекты такого рода тоже имеют право на жизнь. Анонс Три вида сенсора – …
  • Защита датчиков температуры DS18B20 от статического электричестваЗащита датчиков температуры DS18B20 от статического электричества
    Статья перепечатана с сайта http://svetomuzyka.narod.ru При удалении датчика на большие расстояния возникает опасность наведения импульсов высокого напряжения на кабель, который соединяет датчик с контролером. Если не принимать меры защиты, то наведенное …
  • CAN – Controller Area NetworkCAN – Controller Area Network
    Controller Area Network (CAN) первоначально был создан немецким поставщиком автомобильных систем Робертом Бош в середины 1980-х для автомобильной промышленности как метод для обеспечения возможности надежной последовательной связи. Целью было сделать автомобили более надежными, безопасными и …
  • MPLAB® Harmony – или как это просто! Часть 1.MPLAB® Harmony – или как это просто! Часть 1.
    Часть первая – Установка Гармонии. Музыкальная тема к статье, слушаем: В начале запуска нового проекта и выбора микроконтроллера стоит задача правильно его сконфигурировать, прежде чем перейти к реализации самой задачи. …
  • PIC32MZ – Core Timer (библиотека)PIC32MZ – Core Timer (библиотека)
    Переработанные файлы от Microchip, библиотека для работы с Core Timer. Метки:PIC32MZ
  • Униполярный шаговый двигательУниполярный шаговый двигатель
        В приводах различных устройств часто применяются шаговые двигатели, Шаговый двигатели различают двух типов униполярные – когда обмотки коммутируются током текущим только в одну сторону, например при помощи обычных …
  • Оптосимистор и его применениеОптосимистор и его применение
    Эрве Кадино “Цветомузыкальные установки” Ответ на вопрос – управление мощным тиристором или симистором, от терморегулятора. Статья в pdf Оптосимистор принадлежат к классу оптронов и обеспечивают очень хорошую гальваническую развязку (порядка …



 

Tagged with →  
Share →
Translate »

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

e-mail: catcatcat.electronics@gmail.com