Рубрика «программирование микроконтроллеров» - 83

Путь в десять тысяч ли начинается с первого шага.

Преамбула

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

В своем недавнем (когда я начинал это писать, он действительно был недавним) посте о методах построения модуля инициализации аппаратной части МК (кстати, кому интересна данная тема, обязательно посмотрите комментарии к нему, там дано совершенно замечательное решение, которое, к сожалению, не уместилось на полях этой рукописи) я обещал посвятить следующий пост особенностям UART в микроконтроллерах фирмы STM. Не отказываясь от этого обещания, тем не менее внесу определенные коррективы — будет создана серия постов, посвященная тематике правильной разработки программного пакета (для примера взята реализация протокола MODBUS), и в его рамках будет часть, посвященная вышеозначенной теме.

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

image

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

С выходом iOS 10, Apple представила пользователям приложение Дом — свою реализацию интерфейса управления умным домом через HomeKit. Меня весьма заинтересовала данная тема и, потратив несколько вечеров на изучение доступного материала, я решил реализовать интеграцию данного продукта с моей системой. В статье я подробно изложу процесс ее установки и настройки, а также поделюсь видео с результатами того, что получилось в итоге.

Читать полностью »

Эта статья заканчивает цикл публикаций о разработке измерительного устройства в онлайн IDE mbed от компании ARM.

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

Предыдущие статьи:

Читать полностью »

В прошлый раз мы научились создавать в STM32CubeMX новый проект, настраивать тактовый генератор, таймер и порт ввода-вывода, и немного помигали светодиодом. Сегодня мы освоим цифро-аналоговый преобразователь и научимся работать с ним через DMA. В результате у нас должен получиться простой генератор прямого синтеза (Direct digital synthesizer, DDS).
Начинаем работать в STM32CubeMX. Часть 2 - 1
Читать полностью »

Эта статья описывает создание прототипа программируемой подвижной платформы с несколькими степенями свободы для выполнения фотосъемки зеркальной фотокамерой — для последующего монтажа таймлапс-видео. Рекомендуется ничего не понимающим в электронике и микроконтроллерах, «профессиональным разработчикам» решений на Arduino и их продавцам здесь ничего полезного нет.

image
Читать полностью »

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

Сегодня я наконец-то заканчиваю описание программной части — остались вопросы связанные с выводом на TFT-дисплей изображений и кириллицы. Сделаем всё красиво.

Как перестать бояться и полюбить mbed [Часть 5] - 1

Содержание цикла публикаций:

Читать полностью »

В данной статье хотел бы поделится результатами работы разработки 2х летней (конец 2014 — начало 2015 года производства) — одной из первых — это система управления баней. Делалась разработка «на коленке», в штучном экземпляре, с применением ЛУТ технологии (посему не такая красивая).

Давно не писал о новых разработках и за два года вектор развития сменился — сейчас на тех же esp есть чем похвастаться как штучными разработками, так и серийными — более 300 шт (на текущий момент). Но об этом позже.
Читать полностью »

2 года назад передо мной встала задача реализовать удаленное управление обогревательными приборами в своем загородном доме. В данной статье я хочу поделиться моим вариантом автоматизации и удаленного управления, к которому я в итоге пришел. Постараюсь охватить весь процесс и подробности создания этого хобби-проекта и поделиться всеми сложностями, с которыми пришлось столкнуться. В процессе реализации, как видно из названия статьи, я использовал Noolite (о нем расскажу в статье), Telegram и совсем немного Python.

image

Читать полностью »

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

В действительности система памяти образует иерархию устройств хранения с разными ёмкостями, стоимостью и временем доступа. Регистры процессора хранят наиболее часто используемые данные. Маленькие быстрые кэш-памяти, расположенные близко к процессору, служат буферными зонами, которые хранят маленькую часть дынных, расположеных в относительно медленной оперативной памяти. Оперативная память служит буфером для медленных локальных дисков. А локальные диски служат буфером для данных с удалённых машин, связанных сетью.

image

Иерархия памяти работает, потому что хорошо написанные программы имеют тенденцию обращаться к хранилищу на каком-то конкретном уровне более часто, чем к хранилищу на более низком уровне. Так что хранилище на более низком уровне может быть медленнее, больше и дешевле. В итоге мы получаем большой объём памяти, который имеет стоимость хранилища в самом низу иерархии, но доставляет данные программе со скоростью быстрого хранилища в самом верху иерархии.
Читать полностью »

Продолжаем серию публикаций, посвященных использованию среды ARM mbed для создания прототипа измерительного устройства. Сегодня говорим об основах работы с сенсорным вводом.

Как перестать бояться и полюбить mbed [Часть 4] - 1

Содержание цикла публикаций:

  1. Обзор использованных программных и аппаратных решений.
  2. Начало работы с графическим контроллером FT800. Использование готовых mbed-библиотек для периферийных устройств.
  3. Подключение датчика HYT-271. Создание и публикация в mbed собственной библиотеки для периферийных устройств.
  4. Разработка приложения: Структура программы, работа с сенсорным экраном.
  5. Разработка приложения: Вывод изображений на дисплей, проблемы русификации.
  6. Печать деталей корпуса. Анализ ошибок проектирования и другие выводы.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js