Проект с использованием MCC часть 12-1

Views: 1087


В настоящее время без визуализации информации уже не интересно. Поэтому научимся выводить информацию на дисплей. Для это возьмет простенький OLED RET012864E/REX012864J я такой приобретал в фирме “Гамма-Украина”, описание можно почитать здесь http://catcatcat.d-lan.dp.ua/oled-ret012864e-rex012864j/ . Индикатор по умолчанию выпускается сконфигурированным на работу с параллельным интерфейсом, но драйвер может работать и I2C и SPI. Мы с конфигурируем его для работы с I2C.

Демонстрация визуализации данных акселерометра

 


Как всегда начнем с имения нашей схемы, нам надо внести небольшие имения. Индикатор предназначен для работы в трех вольтовом питании,  а наша схема питается, от 5 вольт. По техническим характеристикам PIC16F1509 может работать в в диапазоне питающих напряжений 2,3 -5,5 вольта. Поэтому заменим стабилизатор на 3,3 вольтовый. Если этого не сделать, то придется устанавливать дополнительный стабилизатор на 3,3 вольта, для питания индикатора и преобразователи уровня (хотя бы на полевых транзисторах).

 

Для начала перенесем кнопки на порты RA5 и RA4 это освободит нам порты для I2C (ну и в дальнейшем для работы с UART).

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

Немного отвлечемся от темы, все ОЛЕД для питания матрицы требуют повышенного напряжения от 9 до 12 вольт. Есть драйверы в которых этот преобразователь уже встроен и достаточно, подключения только внешних конденсаторов, но для “больших” матриц приходиться делать внешний повышающий DC/DC. Нашем индикаторе он собран на плате индикатора.

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

Из нее видно, что к таким выводам относятся первые 10 входов (Interrupt функция IOC) у нас свободными и удобными пока RA4 и RA5.

Для начала немного наведем порядок в файле pin_manager.c уберем строку, это даст нам в дальнейшем упростит работу

должны получить

Вызовем МСС, перейдем в модуль настройки выводов микроконтроллера

И перестроим порты с RB6 и RB7 на RA4 и RA5, было

должно стать

Нажимает кнопку генерировать код

 Конфигуратор вы даст, то, что он “сгенерил” и то, что есть.

Первое, что вошло в конфликт, это то, что он предлагает удалить наши флаги, это мы игнорируем. Следующее несоответствие мы устраняем тыканьем по стрелочке.

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

Следующие два изменения мы принимает, тут у нас изменились порты наших кнопок,

эти два изменения принимаем, кликая на стрелочки

Крутим далее вниз (напоминаю, устанавливаем курсор над правым окном и крутим колесико мыши). Следующее интересное не соответствие, MCC допустил одну ошибку, мы задавали прерывание по негативному состоянию кнопки а он в левом окне рисует нам нули.

Мы принимаем изменения, установим значения параметра вида прерывания по негативному фронту в “1” .

Должно быть так:

Остальные изменения принимаем, обратите внимание, что прерывания **6** и **7** заменяются на прерывания **4** и **5**. Наше изменение так и будет “светиться”, но это не должно вас волновать, главное, что мы правы, нам необходимо прерывание по негативному фронту, когда кнопка нажата.

Наводим мышку на правую сторону окна и “крутим в низ”, находим следующее несоответствие

 Тут мы добавляли строки обработки прерывания, для функции установки флага, что кнопка нажата, от нас потребуется, только для красоты исправить комментарий, что это не IOCBF6, а IOCBF4, в этом месте вручную, чтобы не потерять сам код. А в остальных действуем по старинке клацая на стрелочку. Получим:

следующее несоответствие

здесь также обратим внимание, что в одном месте где IOCBF7, а IOCBF5 мы должны подправить комментарий, а все остальные делаем “на автомате”, должны получить:

На этом редактирование файла pin_manager.c окончено, переходим к файлу заголовка нашей библиотеки pin_manager.h. YНапомню двойной щелчок по названию файла.

Первое изменение наше, его оставляем и второе тоже… только изменим описание наших кнопок на RA4 и RA5

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

А теперь все по высшему классу, клацаем на стрелки  и получим вне необходимые изменения. Прокрутите файл “Все как в лучших дамах Ландона и Парыжу“.

Далее нам необходимо закрыть окно Merge[MCC]

Подтвердим изменения

Теперь за программируем нашу макетную плату (перед этим перенесем переключение кнопок на порты RA4 и RA5 и убедимся что все работает!

Для компиляции проекта не забудьте клацнуть на какой-то файл проекта, например на main.c. Если вы будете находиться например на открытом окне MCC функции кнопок компиляции будут не активны!

В этой части мы используя MCC перенесли функции кнопок управления с одних портов не другие. Конечно полностью на автомате все выполнить нельзя, но 95% всю нагрузку взял MCC. Как по мне это было прикольно, быстро и без мозгового штурма.


Проект для тестирования 

Значок

Проект с использованием MCC часть 12-1 882.56 KB 82 downloads

В настоящее время без визуализации информации...


В следующей главе Подключаем ОЛЕД индикатор и изучаем I2C…


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


  • LM317 и светодиодыLM317 и светодиоды
    Views: 8146 LM317 и светодиоды статья с переработанная с сайта http://invent-systems.narod.ru/LM317.htm Долговечность светодиодов определяется качеством изготовления кристалла, а для белых светодиодов еще и качеством люминофора. В процессе эксплуатации скорость деградации кристалла …
  • Акриловый корпус для платы ch-4000Акриловый корпус для платы ch-4000
    Views: 857 Плата ch-4000 подходит для монтажа в корпуса на дин рейку, но для домашней автоматики необходимо что-то другое, поэтому был разработан корпус из акрила который позволит создавать настольные и настенные устройства. Корпус …
  • Проект с использованием MCC часть 04Проект с использованием MCC часть 04
    Views: 1308 Теперь простого горения светиков нам не достаточно, заставим их мигать. Для начала используем первобытно простой способ, но достаточно простой. Используем функции delay, напрягаться откуда они берутся не будем, самое …
  • Униполярный шаговый двигательУниполярный шаговый двигатель
    Views: 2438     В приводах различных устройств часто применяются шаговые двигатели, Шаговый двигатели различают двух типов униполярные – когда обмотки коммутируются током текущим только в одну сторону, например при …
  • TM1650 драйвер LED семисегментного индикатораTM1650 драйвер LED семисегментного индикатора
    Views: 18368 UPDATES 2025/10/10 Китайский производитель Shenzhen Titan Micro Electronics Co., Ltd.  Выпускает широкую линейку драйверов управления светодиодными дисплеями, которые позволяют разгрузить микроконтроллер для основной работы, главная особенность этих драйверов …
  • MPLAB® Code Configurator and EncoderMPLAB® Code Configurator and Encoder
    Views: 1627 Еще раз про энкодер… Для некоторых приложений очень удобно и экономически выгодно, для настройки и управления использовать энкодер. Такие энкодеры имеют строенную тактовую кнопку которую можно применить для выбора …
  • Стабилизатор тока на SN3350, часть 2Стабилизатор тока на SN3350, часть 2
    Views: 1301 Если вам необходимо разработать устройство с применением мощных светодиодов, то никак не обойтись без применения стабилизатора тока. На настоящий момент стабилизаторы тока являются самым эффективным механизмом, для питания светодиода в течение всего …
  • ESP8266  процедура получение данных даты и времени от серверов точного времени.ESP8266 процедура получение данных даты и времени от серверов точного времени.
    Views: 6188 Эта функция доступна уже в версии 1.6.1. Для многих приложений, необходимо часы реального времени,  если в вашем проекте есть модуль WiFI ESP8266, то легко можно сделать следующим образом. …
  • Сумеречное релеСумеречное реле
    Views: 1640 Реле управления освещением, датчик день-ночь – одним словом фотореле для управления освещением или формирования сигнала для системы умный дом о понижении или повышении освещенности относительно заданного уровня. Реле выполнено по классической схеме, конденсаторный блок питания, от сети переменного тока …
  • Сенсорный выключатель светаСенсорный выключатель света
    Views: 15971 Хотя в настоящий момент актуальны системы управления освещением с передачей данных по электросети, но я думаю, что проекты такого рода тоже имеют право на жизнь. Анонс Три вида …



Поделись этим!

Catcatcat

catcatcat

Development of embedded systems based on Microchip microcontrollers.

Продолжайте читать

НазадДалее