Обновить
165.01

Программирование микроконтроллеров *

Учимся программировать микроконтроллеры

Сначала показывать
Порог рейтинга
Уровень сложности

Реверс-инжиниринг лазерного сканера Leuze RS4

Время на прочтение24 мин
Количество просмотров32K

Ранее я уже рассказывал о реверс-инжиниринге лазерного датчика расстояния. В этот раз речь пойдет о более сложном устройстве — лазерном сканере Leuze RS4. Как и датчик, этот сканер попал ко мне в сломанном состоянии, так что пришлось заняться восстановлением его работы, и в процессе улучшить некоторые его характеристики, и, фактически, переделать его в другое устройство.
Читать дальше →

«Байкал-T1»: знакомство с платой на первом в России 28-нм процессоре

Время на прочтение3 мин
Количество просмотров58K

В нашу инженерную лабораторию попала демоплата Baikal BFK Rev 1.6 на основе первого российского процессора для коммерческих разработок — SOM Baikal-T1 MIPS.


Двухъядерный процессор «Байкал-Т1» на архитектуре MIPS Warrior P-class P5600 MIPS 32 был анонсирован еще в 2015 году в рамках программы по импортозамещению, его разработчик — российская фаблес-компания «Байкал Электроникс». Эта система на кристалле была создана для проектирования промышленных и потребительских устройств: маршрутизаторов и сетевых накопителей, тонких клиентов, мультимедийных центров, систем ЧПУ и т.п.


Откроем коробку и посмотрим, как работает стандартный пакет поддержки платформы (BSP) на тестовой плате:


Читать дальше →

Механизм защиты от клонирования адаптеров XELTEK

Время на прочтение14 мин
Количество просмотров13K

Предисловие


Эта история началась с того, что нам как-то понадобилось прочесть/записать микросхему FLASH памяти типа SPANSION S29GL512 в корпусе TSOP56. До этого времени мы успешно эксплуатировали программатор XELTEK SuperPro 500P. Но, к сожалению, установленная в нем сокета с 48-ю контактами не позволяла этого сделать даже с применением переходника. Само собой, что и в программе на PC для этого программатора поддержка таких микросхем отсутствовала.

Пора обновляться, решили мы, и приобрели (не сочтите за рекламу) программатор того же производителя модели SuperPro 6100, в котором используются сменные адаптеры с различными сокетами. Также отдельно был приобретен необходимый, как нам тогда казалось, адаптер модели CX1011 с сокетой TSOP56 (в комплекте с программатором шел адаптер с сокетой ZIF48).


Условимся в дальнейшем называть программу программатора просто софтом, потому что «программа программатора» звучит не очень эстетично.

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

Подключение Xmega к FRAM по SPI

Время на прочтение5 мин
Количество просмотров5.9K
В одном из приборов, возникла необходимость полного восстановления предыдущего режима работы в случае какого либо сбоя по питанию или кратковременному отключению. Можно было конечно заложить источник резервного питания, но его использование было ограничено, так скажем, конструктивными особенностями прибора. Как результат, было решено записывать ряд необходимых для восстановления значений в память. Так как обновлять значения для восстановления я собирался часто, в связи с ограниченным количеством циклов записи, использование Flash и EEPROM даже не рассматривалось.

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

У Lapis Semiconductor есть три линейки FRAM микросхем, которые обмениваются с ведущим устройством по I2C или SPI, либо по параллельному интерфейсу. Преимущества последовательных интерфейсов перед параллельным очевидны. Что же касается I2C и SPI, то скорость передачи данных по SPI в 4 раза выше чем по I2C, но и потребление в связи с этим выше практически в 16 раз.

Мне же выбирать не приходилось, в наличии была только MR45V256 c 32 Кб памяти и SPI интерфейсом. 32 Кб для моих нужд более чем достаточно, поэтому оставшуюся память я использовал для записи всевозможной технической информации и логирования команд полученных от оператора.

Работа с FRAM памятью очень простая. Любая операция начинается с перевода линии выбора ведомого устройства CS# в низкое состояние. Затем отправляется одна из команд операций, их всего 6:

— Чтение данных(READ)
— Запись данных(WRITE)
— Запись в регистр статуса FRAM(WRSR)
— Чтение из регистра статуса FRAM(RDSR)
— Установка защиты данных от перезаписи(WRDI)
— Снятие защиты данных от перезаписи(WREN)
Читать дальше →

Arduino на автомойке

Время на прочтение3 мин
Количество просмотров32K
Наверное многие уже видели автомойки самообслуживания. Можно ли создать такой аппарат на Arduino?


… следующая волна экономических бедствий… будет результатом быстрой поступи автоматизации, которая упраздняет многие хорошие рабочие места уровня среднего класса (Б. Обама)
Читать дальше →

Visual C++ for IoT Development: Прорыв или разочарование?

Время на прочтение3 мин
Количество просмотров8.9K

enter image description here


Как известно мир не стоит на месте и активно развивается. Особенно в сфере IT и конкретно разработки ПО. Самое трудное в этом деле это уследить за всеми новинками и выхватить наиболее ценные и полезные из них. Вот и я только недавно наткнулся на дополнение к Visual Studio под названием Visual C++ for IoT Development, которое существует уже почти год. Потенциально — очень полезная штука, но пока это больше яркое название, чем настоящее Visual C++ для IoT. Давайте разберемся почему.

Читать дальше →

ESP8266 + PCA9685 + LUA

Время на прочтение7 мин
Количество просмотров29K
Привет Хабр! По воли судьбы мне посчастливилось вести в одной из школ кружок по робототехнике, тематика работы затрагивала работу с сервоприводами.

image

Читать дальше →

Погодная станция из Arduino и Orienteer

Время на прочтение5 мин
Количество просмотров13K
Под Новый Год ко мне приходит желание разработать что-нибудь нестандартное. В этот раз я решил начать собирать и обрабатывать погодные данные возле своего дома. И, конечно, выбрал Arduino в качестве железа, а вот в качестве хранилища и инструмента просмотра и анализа — упоминавшийся недавно на Хабрахабре конструктор бизнес-приложений Orienteer. Тем что получилось, я поделюсь в этой заметке.


Читать дальше →

Duplo Railroad Tycoon: Синтез железнодорожной сети с максимальным покрытием

Время на прочтение4 мин
Количество просмотров12K
image

Детям Дед Мороз принес железную дорогу Duplo. Сегменты рельс очень легко соединяются между собой, и можно построить какой-нибудь небольшой, скорее всего просто замкнутый путь, поставить станцию и смотреть, как паровозик бегает по кругу. Иногда он останавливается и детёнок должен паровоз «заправить» из колонки, после чего паровоз снова поедет.
Читать дальше →

Разработка электроники: от идеи до устройства

Время на прочтение12 мин
Количество просмотров75K


Сейчас намного проще найти финансирование для своего проекта, проводятся стартап-аллеи, краудфандинговые платформы пестрят новинками. Ардуино приблизило мечтателей к заветной славе. IoT технологии взяли свое и IT фирмы поняли, что не кодом единым можно жить. Не редкое явление, когда hardware проектом руководят люди, которые несколько далеки от электроники. И еще чаще они думают, что жизненный цикл software-проекта аналогичен жизненному циклу hardware-проекта. Увы, это не так.
Читать дальше →

Real-time BeagleBone: использование высокоскоростных выводов

Время на прочтение14 мин
Количество просмотров30K
Fast GPIO tutorial

Здравствуйте, уважаемые хабравчане! Давно уже являюсь читателем Хабра, но до сих пор не мог найти достойной темы для публикации. И вот, наконец, хорошенько прошерстив Хабр и GT, удивился отсутствию публикаций, посвященных программируемой подсистеме реального времени (PRU‐ICSS) линейки процессоров SitaraTM фирмы TI.

Наиболее популярной и доступной отладочной платой с процессором AM335x является так называемый «одноплатник» BeagleBone Black (White,Green). И именно наличие PRU делает BeagleBone наиболее предпочтительным для использования в hardware-проектах по сравнению с другими бюджетными одноплатниками типа *Pi. Кроме того, в некоторых случаях BBB-PRU может достаточно эффективно заменить связку ПК-МК-ПЛИС.

В данной статье приведен краткий обзор подсистемы PRU и режимов работы высокоскоростных портов ввода/вывода, рассмотрен пошаговый пример инициализации высокоскоростных портов вывода (Enhanced GPIO) и произведена оценка их производительности.
Добро пожаловать

FRAM через I2C для Arduino как замена EEPROM

Время на прочтение3 мин
Количество просмотров27K
Продолжу рассказывать про приборную панель для мотоцикла. Это замечательное устройство содержит одометр, то есть, счётчик пройденного пути в километрах, а у того есть плохое свойство — он должен сохранять данные и при выключенном питании. Ой, ещё есть моточасы, их тоже надо хранить как-то энергозависимо.

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

Обработка нажатий кнопок для Arduino. Скрестить ООП и МКА. Часть 1

Время на прочтение5 мин
Количество просмотров31K
Пару месяцев назад я купил не сильно новый мотоцикл KTM 250EXC, открутил ручку газа в горку, моту пульнул в небо, а сам сел на задницу и что-то там сломал в спине. В результате, на мотоцикл не сесть два месяца как минимум. К чему я это? Да. У немного подуставшего мопеда оказалась неисправная приборная панель и я собрался, пока лежу дома, сделать самодельную новую свою.

image

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

Сегодня с расскажу про кнопочки, потом про датчик зажигания, а уже потом про саму приборку, Ладно?

Рисовать на китайском экране 16х2 через i2c просто, датчики скорости и оборотов мотора сели на внешние прерывания, температура читается с аналогового порта, инфа хранится в FRAM, ну и часики тоже китайские воткнуты. Всё это крутится асинхронно примерно как SmartDelay, про который писал недавно здесь.
Читать дальше →

Ближайшие события

Первые шаги с STM32 и компилятором mikroC для ARM архитектуры — Часть 2, продолжение

Время на прочтение8 мин
Количество просмотров15K

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


Основная прелесть ШИМ в том, что он позволяет при помощи ключей работающих в импульсном режиме (наиболее эффективном относительно потерь энергии) изменять действующее значение напряжение приложенного у той или иной нагрузке. Для ШИМ сигнала основными параметрами является общая длительность импульса и длительность его активного состояния (обычно высокого уровня сигнала).


Действующее значение напряжения имеет зависимость от длительности активного состояния импульса. Наш МК умеет генерировать ШИМ при помощи аппаратных функций таймера, не занимая драгоценное время ядра процессора.


image

Читать дальше →

Замена delay() для неблокирующих задержек в Arduino IDE

Время на прочтение3 мин
Количество просмотров57K
Первое, с чем сталкивается осваивающий Arduino новичок, это неприятное свойство функции delay() — блокирование выполнения программы. Множество примеров в интернете используют эту функцию, но практическое применение как-то намекает, что лучше без неё обойтись.

Как и положено начинающему, я изобрёл велосипед сделал свою реализацию неблокирующей задержки. Задача стояла так:

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

Подсмотрев, что большинство ардуинских библиотек сделаны с применением ООП, я тоже решил не выделываться и написал класс SmartDelay, который можно получить с гитхаба как zip для добавления в Arduino IDE или сделать git clone в ~/Arduino/libraries/

В результате получилось вот такое.
Читать дальше →

Как проектируют ненастоящие программисты

Время на прочтение8 мин
Количество просмотров71K
Настоящие программисты — это облака, big data, high load… А у нас — практически DIY. 2 установки — уже тиражирование, 100 штук — производство… Но зато атомные ледоколы, маневровые локомотивы, трактора, шлюзы, мосты, опускающиеся вниз от лишнего асфальта, беспилотники размером в дом, 50 человек персонала на цех длиной больше двух километров… и надежность, надежность, надежность… И пяток гендиректоров в костюмах прямо на поле при демонстрации системы на тракторе…

image
Обычное окончание отладки — убираем антенны с путеправильной машины

Итак… пришла просьба от коллег — написать ТКП (технико-коммерческое предложение) на хитрый GPS-трекер. И комментарии, что большие и настоящие делать отказались.
Читать дальше →

Носимая новогодняя гирлянда. С управлением по Bluetooth LE

Время на прочтение2 мин
Количество просмотров24K


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

Представляю открытый проект новогодней гирлянды на основе LED ленты со светодиодами WS2812B. Гирлянда питается от 4-х AA аккумуляторов. С текущими настройками проект поддерживает 122 светодиода на ленте, но легко может быть расширен до 1000 светодиодов и более. Гибкий перенастраиваемый алгоритм генерации световых эффектов. Проект содержит программу управления гирляндой с телефонов или планшетов, компилируемую без модификаций под iOS, Android и Windows.
Читать дальше →

Про мой LIR2032 и CR2032 тестер, сами батарейки и накопленный опыт

Время на прочтение7 мин
Количество просмотров93K

В этой статье я публикую в свободный доступ мой тестер и измеритель 8шт часовых аккумуляторов-таблеток форм-фактора CR2032. Надеюсь, он пригодится тем, кто делает портативную электронику и различный IoT. В статье я опишу схему моего тестера и расскажу как он работает. Приведу результаты измерения аккумуляторов LIR2032. И проверю восемь CR2032 от разных производителей. Также поделюсь богатым опытом: какие аккумуляторы лучше не брать, а какие — хорошие. Бонусом распишу опасные моменты: и как самому не пострадать и не сжечь дом, как это любит делать Креосан.


Читать дальше →

Программирование многоядерных DSP-процессоров TMS320C66x с использованием OpenMP

Время на прочтение24 мин
Количество просмотров19K
В статье описывается подход к программированию многоядерных сигнальных процессоров на основе OpenMP. Рассматриваются директивы OpenMP, разбирается их смысл и варианты использования. Делается акцент на цифровых сигнальных процессорах. Примеры применения директив OpenMP выбраны приближенными к задачам цифровой обработки сигналов. Реализация проводится на процессоре TMS320C6678 фирмы Texas Instruments, включающем 8 DSP-ядер. В части I статьи рассматриваются основные директивы OpenMP. Во II части статьи планируется дополнить список директив, а также рассмотреть вопросы внутренней организации работы OpenMP и вопросы оптимизации программного обеспечения.

Данная статья отражает лекционно-практический материал, предлагаемый слушателям в рамках курсов повышения квалификации по программе «Многоядерные процессоры цифровой обработки сигналов C66x фирмы Texas Instruments», проводимых ежегодно в Рязанском радиотехническом университете. Статья планировалась к публикации в одном из научно-технических журналов, но в силу специфики рассматриваемых вопросов было принято решение о накоплении материала для учебного пособия по многоядерным DSP-процессорам. А пока данный материал будет копиться, он вполне может полежать на страницах Интернета в свободном доступе. Отзывы и пожелания приветствуются.
Читать дальше →

Отладочная плата ПЛИС — Франкенштейн. Контроллер елочных гирлянд

Время на прочтение5 мин
Количество просмотров8.1K

Очередная серия про ПЛИС и отладочную плату Френки. Предыдущие серии 1, 2, 3.


Сделать контроллер елочных гирлянд не просто, а очень просто! Hello World на ПЛИС — это помигать светодиодом. А "С новым годом" на ПЛИС — это помигать несколькими светодиодами. Принцип прост, как и в предыдущих статьях: создаем счетчик, который делит частоту тактового генератора, выбираем биты из слова счетчика, для получения нужной скорости. Несколько бит из этого слова дадут нам определенный шаг отображения (в зависимости от количества выбранных бит 1, 2, 4, 8 и т.д. шагов). В зависимости от номера шага задаем значения для N светодиодов.


Для управления реальной гирляндой, можно взять какой-нибудь shield с электромагнитным реле. У меня оказался вот такой, на 8 реле. Схема подключения. Принципиальная схема.


Дальше

Вклад авторов