Как стать автором
Обновить

Программирование микроконтроллеров PIC16/PIC18 на языке C. Статья вторая. Базовые сведения о платформе. Первая программа

Время прочтения 4 мин
Просмотры 122K
Программирование микроконтроллеров *
Если в первой статье все получилось хорошо — мы получили базовую программную обстановку для продолжения обучения.

Едем дальше.

Как я говорил ранее, пока что объяснять буду на базе МК PIC16F628A.
Обязательно качаем документацию на него. Рекомендую для поиска — alldatasheet.com
DataSheet — главный документ при разработке на базе МК.
Рекомендую распечатывать основные таблицы и разделы для удобства пользования.

Открываем ДШ.

Наиболее важные сведения о кристалле:
— максимальная рабочая частота — 20МГц;
— 2048х14 бит флеш-ПЗУ;
— 224 байта статической ОЗУ;
— 128 байт энергонезависимой ПЗУ;
— 16 доступных выводов;
— модуль приемо-передатчика;
— 3 таймера.

Данный кристалл — представитель так называемого среднего (Mid-range) семейства МК PIC.

Вкратце расскажу о том, что обязательно нужно понимать.

Читать дальше →
Всего голосов 54: ↑48 и ↓6 +42
Комментарии 16

Взаимодействие схемы в Proteus'е с внешним миром

Время прочтения 3 мин
Просмотры 20K
Программирование микроконтроллеров *
Из песочницы

Введение


Думаю многие из тех, кто как-то связан с разработкой электронных устройств, хотя бы раз слышали о программном комплексе Proteus от Labcenter Electronics. Какая бы не была обширная библиотека компонентов, доступных для моделирования, «жизнь» схемы ограничена пределами окна эмулятора, за редким исключением. Уже существует несколько моделей, которые могу, например, записывать какие-то данные в файл или даже представляться системе как USB устройства, но пока они могут решить небольшой класс задач.

Задача


При работе над курсовым проектом, в рамках которого необходимо разработать систему радиоуправления самолётом, возникла необходимость связи модели с ПК. Так как одним из самых простых интерфейсов для связи с ПК является RS-232, он и был выбран(использовался переходник usb-uart).

Так как же отлаживать эту систему на самом начальном этапе, когда ещё не найдены довольно грубые ошибки, которые могут привести к выходу из строя электронных компонентов, и не возиться с частой прошивкой микроконтроллер(ов)?
Читать дальше →
Рейтинг 0
Комментарии 0

MSP430, учимся программировать и отлаживать железо

Время прочтения 6 мин
Просмотры 111K
Программирование микроконтроллеров *

Сегодня, уважаемый хабрапользователь, я постараюсь заполнить некоторый пробел, образовавшийся в статьях об MSP430, а именно азы и подход к программированию устройств на данном микроконтроллере.
Эта статья прежде всего направлена на новичков, поскольку я буду рассматривать ряд достаточно простых задач, таких как работа с SPI, мигание лампочкой и отладка в proteus.
Читать дальше →
Всего голосов 41: ↑37 и ↓4 +33
Комментарии 13

Создание модели электронного компонента для Proteus на Lua

Время прочтения 10 мин
Просмотры 33K
C *Lua *
Есть у меня несколько проектов-долгостроев, один из которых — создание компьютера на базе CDP1802. Основную плату моделировал на бумаге и в Proteus.
Довольно скоро встал ребром вопрос: как быть с элементами, которые отсутствуют в Proteus?
На многих ресурсах подробно описано, как создать свою модель на С++ в Visual Studio.
К сожалению, при сборке под линуксом этот вариант не очень удобен. Да и как быть, если не знаешь С++ или нужно редактировать модель на лету для отладки?
Да и просто хочется сосредоточиться на моделировании, максимально упростив все остальное.
Так появилась идея делать симуляторные модели с помощью скриптов — на Lua.
Заинтересовавшихся прошу под кат (гифки на 2Мб).


Читать дальше →
Всего голосов 28: ↑28 и ↓0 +28
Комментарии 5

Авторазмещение элементов и автотрассировка печатных плат

Время прочтения 4 мин
Просмотры 259K
DIY или Сделай сам
Всем привет!

На написание статьи меня подтолкнула программа, на которую я наткнулся в поисках способов автоматизации разработки печатных плат (а упоминаний, тем более статей про неё я на хабре не нашёл). Но, обо всём по порядку.

Итак, конструкция разработана, собрана на макетной плате, проверена в действии. Дальше — печатная плата. Если верить форумам, то многие (в том числе и мои знакомые) используют Sprint-Layout. Но ведь это ручная работа, тот же карандаш и бумажка, только в электронном виде. Зачем все эти ядра процессора и гигабайты памяти, если приходится всё равно работать ручками? Признаюсь, меня это всегда коробило.

Сейчас я расскажу, как добился удовлетворительного для меня результата в автоматическом режиме.


Красивая картинка для привлечения внимания
Читать дальше →
Всего голосов 59: ↑51 и ↓8 +43
Комментарии 90

Как «чайник» делал UART <-> RS232 конвертер для Orange Pi

Время прочтения 12 мин
Просмотры 89K
Электроника для начинающих

Введение



Началось всё с того, что я купил себе Orange Pi, поддавшись рекламному слогану «аналог Rasberi Pi всего за 15$». Девайс был заказан на алиэкспрессе и прибыл через пятнадцать дней ещё в феврале. Тогда же были куплены все необходимые дополнительные компоненты: радиатор на процессор, 15 ваттный блок питания, карточка micro SD объемом 32 Гб, HDMI-кабель для подключения монитора. За неимением времени он пылился в ящике стола аж до июня. И вот наконец дошли руки проверить его работоспособность.

Читать дальше →
Всего голосов 30: ↑20 и ↓10 +10
Комментарии 48

Отладка кода Arduino (AVR). Часть 1. Виртуальная отладка

Время прочтения 11 мин
Просмотры 59K
DIY или Сделай сам Электроника для начинающих
Recovery mode

Предисловие


Как известно, среда Arduino (AVR) не содержит функции внутрисхемной отладки, что создаёт большие неудобства при поиске сложных ошибок и сопровождении проектов. Я хочу показать два способа, при помощи которых вы сможете отлаживать свои скетчи разного уровня сложности. Для первого способа вам понадобятся только программы, а для второго нужен недорогой (по сравнению с оригинальным отладчиком) адаптер, который вы можете либо собрать самостоятельно, либо купить готовый.
В общем, ничего нового для тех, кто пользуется отладчиками постоянно, но может быть полезным для пользователей Arduino (AVR).
Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 23

Koyaanisqatsi: The WYSIWYG-style byte-code CPU

Время прочтения 5 мин
Просмотры 1.1K
Creative Commons *FPGA *DIY или Сделай сам
Draft diagram of core

SVG-File (actual draft)

Lyrics


Ancient times are known to everyone not with immortal works from Homer's only, but also with the Pythagorean multiplication table, Euclidean geometry and the Archimedes screw and the Pi, which we learned to use only relatively recently. In antiquity the art was not only to be able to write poetry and prose, but to design catapults or battering tools also, now there are rigid frameworks, when the discovering the new another beautiful formula is a formal words play only.
Mathematics rules the modern world completely, cynically intertwining with the world of art, intruding with calculations in all spheres of our recreation and everyday life, when the colors of masterpieces turning into poisonous colours.
Read more →
Всего голосов 2: ↑2 и ↓0 +2
Комментарии 0

Снова о автономной Arduino-метеостанции на батарейках

Время прочтения 15 мин
Просмотры 18K
Беспроводные технологии *Носимая электроника DIY или Сделай сам Электроника для начинающих

Еще донедавна мне не удавалось найти в Интернете любительскую метеостанцию с питанием от батареек. Я имею ввиду бытовую автономную метеостанцию с измерениями параметров в помещении, на улице и отображением информации на дисплее метеостанции. Любители не заморачиваются на этой проблеме, а питают свои автономные девайсы от солнечных батарей, аккумуляторов и т.п. Уточню — проблема касается только одного из узлов метеостанции — базы, а первые проекты малогабаритных беспроводных автономных выносных датчиков на Ардуино появились 10 лет назад. Вместе с тем, промышленные устройства такого плана — бытовые метеостанции, комнатные термостаты годами работают от пары батареек АА и этот факт является той целью, которой хотелось бы достичь.


Это было донедавна. Несколько дней назад меня поразил очередной проект @Berkseo, как поражают все его проекты: "Беспроводная мини погодная станция с e-paper экраном на батарейках". Тут все на уровне промышленных бытовых метеостанций, за исключением одного момента — в устройстве нет внешнего датчика.


Полтора года назад разместил статью Автономная метеостанция на контроллере ATMEGA328P и питанием от батареек с беспроводным выносным датчиком. Хотя прототип и выполнял свои функции, но имел серьезные недостатки — слишком малая частота обновления данных и большое энергопотребление.


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

Читать дальше →
Всего голосов 34: ↑32 и ↓2 +30
Комментарии 44

На распутье — Ардуино, Cи или Ассемблер?

Время прочтения 9 мин
Просмотры 10K
Программирование микроконтроллеров *Электроника для начинающих

Сначала короткая предыстория появления этого поста. Относительно давно, помигав светодиодом, захотелось сделать что-то полезное. Так появился Беспроводной программируемый по Wi-Fi комнатный термостат с монитором качества воздуха и другими полезными функциями. Как назло, в это время перестал работать мой промышленный термостат. Меня выручил еще сырой макет, наспех спрятанный в картонную коробочку. За время отопительного сезона напрягал лишь один недостаток прототипа – это необходимость таскать по квартире удлинитель 220В и кабель, который всегда путался под шваброй ногами. Поэтому решил сделать нечто похожее, но автономное, притом, с питанием от батареек, как в серийном образце.


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


Приступая к задаче, для меня было очевидно одно – вряд ли программы промышленных автономных устройств составлены на платформе Arduino IDE. Где все спрятано в громоздкие тяжеловесные библиотеки, а простые коды (скетчи) занимают в редакторе несколько десятков строк, делая работу в этой среде комфортной и не требующей особых усилий. Уточню сразу – дальше речь о выборе языка программирования между Ардуино, Си или Ассемблером. "Язык Ардуино"- это сленг для краткости. Нет такого языка программирования. Если увидите тут и дальше "язык Ардуино", то — это "Arduino IDE — интегрированная среда разработки для Windows, MacOS и Linux, разработанная на Си и C ++"(Википедия).

Читать дальше →
Всего голосов 18: ↑11 и ↓7 +4
Комментарии 35

Экономим выводы для Arduino. Управление сдвиговым регистром 74HC595 по одному проводу

Время прочтения 7 мин
Просмотры 6.1K
Блог компании Timeweb Cloud Схемотехника *Разработка под Arduino *Электроника для начинающих
Что не делай на микроконтроллере, все равно, в конечном итоге, получатся часы. А для проектов на Arduino апогеем бесспорно является метеостанция. И вот, обвесив плату всевозможными датчиками, достаточно часто у любителей микроконтроллеров возникает проблема с нехваткой выводов.

Обычно для расширения портов вода/вывода используют сдвиговые регистры типа 74HC595. Но для управления ими требуется целых три вывода! Невероятное расточительство, неправда ли? Ведь можно обойтись всего ОДНИМ! Всех тех, для кого два дополнительных свободных порта являются жизненно необходимыми, приглашаю под кат.

image
Читать дальше →
Всего голосов 36: ↑36 и ↓0 +36
Комментарии 15

Блокирующая обработка тактовой кнопки для Arduino. Настолько полный гайд, что ты устанешь его читать

Время прочтения 31 мин
Просмотры 11K
Блог компании Timeweb Cloud Программирование микроконтроллеров *Разработка под Arduino *Электроника для начинающих
image

В одной из своих прошлых статей я писал про подключение тактовой тактильной кнопки. И, казалось бы, такой простой вопрос, вызвал «бурю» в комментариях. Публика разделилась на два лагеря: на тех, кто все знает, но обычно молчит; и тех, кто не знает, и стесняется спросить. А я так и не понял, к какому лагерю отношусь!

Поиски в интернете по запросу «программирование кнопки для Arduino» выдает весьма противоречивый контент. Где-то код очень крутой, но из-за скудного описания не понятный. А где-то код очень простой, и от того не понятно, что с ним можно делать.

В общем, так бывает достаточно часто, когда простые (может даже и примитивные) задачи на просторах интернетов освещены поверхностно. И это вполне закономерно. Те, кто только начинает что-то изучать, с радостью делятся новыми знаниями. Кем-то движет гордость за свои достижения, а у кого-то просто язык чешется. Но как только человек поднаторел в вопросе, груз профессионализма не позволяет ему писать про такие мелочи. Или нет на это свободного времени, или приходит чувство самодостаточности.

Вот я и решил собраться с мыслями и обобщить свой опыт программирования обработчика кнопки для Arduino. Если вам интересно пополнить/проверить свои знания в данном вопросе, ну или проверить мои знания, то приглашаю под кат.

Дисклеймер. Текст рассчитан на публику, которая только начинает познавать азы программирования контроллеров Arduino. Запрещено к просмотру людям с ослабленной психикой или психикой с долголетней инженерной выдержкой и беременным женщинам (это так, на всякий случай, а то мало ли… британские ученые пока до исследований на эту тему не добрались). Материал предназначен исключительно для просмотра лицам, не достигшим 21 года.
Читать дальше →
Всего голосов 46: ↑42 и ↓4 +38
Комментарии 49

Неблокирующая обработка тактовой кнопки для Arduino. Как использовать прерывание таймера «в два клика» в стиле ардуино

Время прочтения 27 мин
Просмотры 4.8K
Блог компании Timeweb Cloud Программирование микроконтроллеров *Разработка под Arduino *Электроника для начинающих


В своей прошлой статье я писал про блокирующие способы обработки кнопки. Реакция была, наверное, больше положительная, чем отрицательная. Хотя минусов мне поднасовали… Но, тем не менее, я решил продолжить. И в этой статье я хочу поделиться с вами своим опытом по неблокирующей обработке кнопок на Arduino. Напишем несложную библиотеку в стиле Си. Но, боюсь, что закрыть свой гештальт этой статьей тоже не получится…

Чтобы сохранить общую концепцию, пришлось разобраться с обработкой прерываний таймеров-счетчиков в стиле Arduino. Если вы не сталкивались с этим, и работаете напрямую с регистрами, рекомендую посмотреть, как это выглядит. HAL-драйвер для STM32 в этом плане нервно курит в сторонке.

Заранее предупреждаю, что материал рассчитан для начинающих. Но комментарии от бывалых программистов микроконтроллеров только приветствуются.
Читать дальше →
Всего голосов 29: ↑29 и ↓0 +29
Комментарии 43