
Views: 1018
В настоящее время без визуализации информации уже не интересно. Поэтому научимся выводить информацию на дисплей. Для это возьмет простенький 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…
Это может быть интересно
Проект с использованием MCC часть 06
Views: 1345 Изменим схему следующим образом добавим две тактовые кнопки BT1 и BT2. Теперь переключимся на конфигурацию выводов, для этого сделаем двойной клик в окне Ресурсы проекта на Pin Module. …Ultrasonic Level Meters – ULM –53L
Views: 754 Измерение расстояния при помощи ультра звукового датчика ULM–53L–10. Диапазон измерения от 0,5 м до 10 м, полностью пластмассовый излучатель PVDF, механическое соединение фланцем из полиэтилена HDPE (исполнение “N”) Характеристики …УКВ – радиоприем, часть 2
Views: 6308 Пришло свободное время решил вторую часть проекта реализовать (правда есть мысль и третью с использование цветного OLED и функцией ch-светомузыки, но это только задумка… Для понимания функций интегрального …PIC32MZ – Core Timer (библиотека)
Views: 547 Переработанные файлы от Microchip, библиотека для работы с Core Timer.Оптосимистор и его применение
Views: 19796 Эрве Кадино “Цветомузыкальные установки” Ответ на вопрос – управление мощным тиристором или симистором, от терморегулятора. Статья в pdf[wpdm_file id=129 template=”link-template-calltoaction3.php”] Оптосимистор принадлежат к классу оптронов и обеспечивают очень хорошую …Одноканальный емкостной сенсор – AT42QT1012
Views: 2372 Описание сенсора [wpdm_file id=242] Незаконченный проект, так-как сенсор не оправдал своего назначения, не рекомендую, просто выброшенные деньги. Особенности. • Количество сенсоров – один, режим переключения ( touch-on/touch-off ), а также программируемая …ch-4000 – универсальная печатная плата
Views: 1060 На смену устаревшей плате ch-3000, пришла новая ch-4000. Плату уже можно приобрести в магазине Ворон. Схема. Плата позволяет создавать таймеры, часы реального времени, регуляторы температуры, регуляторы влажности, вольтметры, …REFERENCE CLOCK OUTPUT MODULE
Views: 520 REFERENCE CLOCK OUTPUT MODULE Модуль формирования опорного тактового сигнала Модуль опорного тактового сигнала обеспечивает возможность посылать сигнал синхронизации на тактовый опорный выходной контакт или контакты (CLKR) в зависимости от …Altium Designer – создание рисунков на печатной плате
Views: 3343 Для создание рисунков на печатной платы в Altium Designer можно использовать возможность использовать в Altium Designer сторонних скриптов. Мне возможность эта очень понравилась и я решил её расшарить …Проект с использованием MCC часть 08
Views: 1125 И так создадим проект в котором при помощи двух кнопок мы сможем управлять яркостью светодиодов. При использовании МСС у нас лафа полная, добрые дяди с Microchipa подготовили функции, …