Все потоки
Поиск
Написать публикацию
Обновить
161.77

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

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

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

Компании Dialog и Atmel объявили о слиянии. Комментарии официального дистрибьютора в России

Время на прочтение3 мин
Количество просмотров7.4K
Многие уже слышали, что в полупроводниковой отрасли объявлено об очередном крупном слиянии в области электроники. 20 сентября 2015г. компании Atmel Corporation и Dialog Semiconductor выпустили пресс-релизы о предстоящей сделке. Согласно пресс-релизу, Dialog приобретает Atmel за сумму около 4.6 миллиарда долларов США. По условиям соглашения акционеры Atmel получат $4.65 наличными и 0.112 американской депозитарной акции Dialog за каждую принадлежащую им ценную бумагу, что в сумме составляет $10.42 за акцию по состоянию на 18 сентября 2015г. Закрыть сделку предполагается в первом квартале 2016г. По завершении процесса слияния акционеры Atmel будут владеть 38% акций новой компании. До этого срока обе компании будут вести деятельность раздельно.


Мы (компания Rainbow), как официальный дистрибьютор Atmel в России хотим дать некоторые свои комментарии по поводу данной сделки и её влияния на российский рынок разработки электроники.
Читать дальше →

Выводим цифровую фоторамку в интернет

Время на прочтение6 мин
Количество просмотров41K
image
Наверное многие, глядя на цифровую фоторамку, задумывались — можно ли выводить на нее собственную информацию, меняющуюся во времени? Поскольку я уже несколько лет являюсь владельцем фоторамки, то такая мысль приходила в голову и мне — рамка отлично подошла бы для отображения прогноза погоды и информации с «умного дома». О том, как же реализовать подобный функционал, не вмешиваясь при этом в конструкцию рамки — читайте под катом.
Читать дальше →

Подключение STM32 к аппаратуре радиоуправления

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

Понадобилось мне реализовать дистанционное управление несколькими двигателями постоянного тока.
В магазинах доступны готовые комплекты радиоуправления для разных ездящих-летающих игрушек и «не игрушек», и появилось желание использовать именно такое управление.
Сигналы на выходе приёмника такого комплекта — это импульсы для управления сервомашинками,
и задача сводится к тому, чтобы измерить длительность имульса 0,8..2,3 мс в каждом из шести каналов, затратив как можно меньше ресурсов контроллера.
Дальше описано как реализовано измерение длительности импульсов с шести каналов, используя особенности периферии STM32 микроконтроллеров.
Читать дальше →

Новая книга по Cortex-M0/M0+

Время на прочтение3 мин
Количество просмотров15K
Фирма АРМ продала более 200 лицензий на ядра Cortex-M, и на рынке представлены тысячи вариантов этих устройств. Хотя фирма создала ядро M7 в прошлом году, которое предлагает невероятную производительность для MCU, начальный уровень линейки ядер продолжает представлять огромный интерес для производителей. Реализация ядра M0 требует около 12000 gates (трудно сказать, идет речь о затворах либо базовых элементах, в любом случае это немного, но в первом — намного меньше — примечание переводчика), так что стоит она чуть больше, чем ничего (реализация, конечно, а не лицензия, кстати, если кто знает цены — поделитесь в комментах — пп). М0 + имеет тот же набор инструкций (как и M0-пп), но показывает лучшую производительность при низком энергопотреблении для устройств с батарейным питанием, плюс расширенные (необязательные) возможности отладки, и даже дополнительный блок защиты памяти (MMU бедняка).
Далее следует ... а что - узнаете по катом

1-Wire slave на МК. Часть 2: Реализация в коде

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

Первая статья цикла: 1-Wire slave на МК. Часть 1: Железо

Что есть в инетрнете по 1-Wire slave


В интернете про реализацию 1-Wire мастера можно найти множество информации, статей, application notes для микроконтроллеров на любой вкус и цвет.
А вот для реализации со стороны Slave материалов немного. Исходных кодов и того меньше. В итоге был найден один исходник для PIC, с ассемблерными вставками и ошибками. Недавно появилась статья на хабре для MSP430 от resetnow. Под катом наш вариант реализации задачи.
Читать дальше →

Немецко-китайский прибор и немного математики (часть 2)

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

Настал вечер и Шехрезада продолжила позволенные речи


Продолжим рассуждения на тему, как бы мы делали прибор MG328. На очереди у нас измерение конденсаторов, которое должно быть сложнее, чем измерение резисторов, но неожиданно оказывается чуть ли не проще. Но прежде, чем перейти к рассмотрению собственно конденсаторов, немного слов об измерениях в МК системах как таковых.

Поводом к последующему тексту стало прочтение описания прибора, сделанное его создателем (конечно в переводе, а не на языке оригинала, если английский технический для меня почти родной, сказать то же самое про немецкий в любом варианте я не могу). И, честно говоря, был слегка ошарашен некоторыми перлами, относящимися к точности (при всем уважении к автору). Чтение форумов по данной тематике показало, что непонимание сути процесса измерения и параметров, влияющих на точность измерения, является характерным для молодых инженеров.
Очередной плач Ярославны и продолжение темы

Тактирование микроконтроллеров Atmel SAMD20/21

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

Немного теории



Согласно документации на микроконтроллеры Atmel серии SAMD20/21 система тактирования состоит из следующих блоков:
  • блок источников сигнала (управляется SYSCTRL)
    • Clock source – это базовая частота в системе. Это может быть, например, внутренний осциллятор 8 МГц (OSC8M), внешний осциллятор (XOSC), блок цифровой фазовой автоподстройки частоты (DFLL48M);
  • базовый контроллер тактовой частоты (GLCK-generic clock controller), который управляет системой распределения тактовых сигналов и состоит из:
    • базовых генераторов частоты (Generic Clock Generator) — это программируемый предделитель, к которому может быть подключен любой источник сигнала. С выхода генератора 0 (GCLKGEN[0], GCLK_MAIN) сигнал идет на блок управления питанием (Power manager), который генерирует главный тактовый сигнал;
    • базовые тактовые сигналы (Generic Clocks) – обычно это сигналы, которые тактируют периферию. Базовые тактовые сигналы, с помощью базовых мультиплексоров сигнала могут использовать любой из доступных в системе тактовых сигналов. Разные периферийные блоки могут использовать разные тактовые сигналы. Выход мультиплексора 0 используется как источник опорного сигнала для блока цифровой фазовой автоподстройки частоты. Обратите внимание, что в таком случае выход с DFLL не должен использоваться как опорный сигнал для генератора, выход которого используется как опорный для мультиплексора 0.
  • блок управления питанием (PM – Power manager)
    • блок управления питанием управляет синхронным тактированием системы. Это включает в себя CPU, шины (APB, AHB) и синхронную (с точки зрения CPU) периферию. Он содержит маски тактирования, с помощью которых можно включать и выключать пользовательский интерфейс периферии, а также делители для тактовых сигналов CPU, шин.
Читать дальше →

Немецко-китайский прибор и немного математики

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

Безумству храбрых поем мы песню


Недавно случайно узнал о существовании очаровательного девайса MG238 — тестера электронных приборов. Посмотрел пару видео, слегка офигел, нашел сайт автора (кстати проект открытый, я думаю, что производители-китайцы авторские не платят), посмотрел схему и офигел окончательно. То есть измерительная часть представлена 3 управляемыми делителями и ЭТО меряет все, что я увидел в ролике?

Первая мысль была — это фейк, но есть отзывы людей, данный прибор купивших и его использующих, и в основном позитивные. Тогда пришла вторая мысль — почему это не сделал я? На этот вопрос есть множество ответов, главным из которых будет «Старшая сестра не позволила». Для тех, кто в танке — это от присловья «Лень раньше тебя родилась». Ну да ладно, проехали, но все-таки, как ЭТО работает. Исходные коды выложены, схема дана, можно посмотреть, но возникло желание понять самому, раз сделать не успел, то хотя бы повторить (если не в железе, то в голове).
И как же он мог ЭТО сделать?

1-Wire slave на МК. Часть 1: Железо

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

Для одного из проектов по автоматизации потребовалось сделать устройство, которое является подчинённым 1-Wire устройством, принимает команды от мастера и выставляет на своих выходах значение аналогового сигнала в диапазоне от 0 до 10В.
Проанализировав линейку стандартных микросхем 1-Wire от Maxim, стало ясно, что нет микросхемы, которая позволит реализовать подобный функционал.
Потому было принято решение реализовывать 1-Wire slave на микроконтроллере. Надеюсь, данный материал будет интересен и полезен людям, которые делают «умный дом» своими руками, т.к. 1-Wire достаточно популярная шина в подобных проектах. В качестве камня был выбран МК Cortex M0+ ATSAMD20G16 от Atmel, но о реализации в коде расскажем во второй части. Забегая немного вперед, скажу что в третьей части цикла пойдет речь о реализации собственного семейства устройств для линуксовой библиотеки OWFS (One Wire File System). А сегодня расскажем о некоторых аппаратных решениях, к которым мы пришли в процессе разработки.
Читать дальше →

Atmel Software Framework (ASF): как это работает?

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

Немного теории


Atmel Software Framework (ASF) — программная библиотека, которая содержит широкий набор встраиваемого кода для микроконтроллеров Atmel всех семейств: megaAVR, AVR XMEGA, AVR UC3 и SAM.
Основные преимущества:
  • Упрощается использование и освоение микроконтроллеров, так как библиотека написана на высоком и среднем уровнях абстракции;
  • ASF разработана для использования на любой стадии проектирования;
  • ASF интегрирована в Atmel Studio с графическим пользовательским интерфейсом, но также может использоваться с компиляторами IAR и GCC;
  • ASF бесплатна.



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

USB bootloader на микроконтроллере: обновление прошивки с флешки

Время на прочтение8 мин
Количество просмотров19K
Возможность обновления прошивки на серийно выпускаемых изделиях, или на единичных изделиях, находящихся в эксплуатации у заказчика трудно переоценить. Это не просто даёт возможность последующего устранения багов и расширения функционала, но и позволяет разработчику с более лёгким сердцем выпускать «еще сыроватый» продукт на рынок, если руководство того требует.

Поэтому важность наличия bootloader'а во вновь разрабатываемых устройствах в большинстве случаев не вызывает сомнений. В данной статье пойдет речь о разработке bootloader'а по интерфейсу USB на микроконтроллере Atmel SAM D21 с ядром Cortex M0+. А конкретно на SAMD21J18A. У микроконтроллеров SAM D20/21 нет предзаписанного бутлоадера, поэтому придётся заниматься его программной реализацией. На сайте Atmel можно найти Application notes, как сделать его с использованием стандартных интерфейсов (UART, I2C, SPI, USB). Под катом описание процесса создания USB-бутлоадера.
Читать дальше →

Умная плата для управления силовыми 3-х фазными нагрузками

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

Продолжаем разработку на микроконтроллерах семейства Kinetis.

Умный дом или здание не ограничиваются только датчиками температуры или освещением. Там также присутствуют лифты, различные подъемники для людей с ограниченными физическими возможностями, грузовые подъемники, ворота, шлагбаумы, насосы, вентиляторы и прочее хозяйство. Традиционно это консервативные области, в них концепции умного дома проникают с трудом. Данная плата позволяет модернизировать устоявшиеся решения и добавить в них интеграцию в IoT (интернет вещей).
Читать дальше →

RC Авто c GPS на платформе Arduino Nano

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


Моя идея: узнать максимальную скорость в радиоуправляемой машинке и запоминание при выключение питания, добавить включение фар при наборе скорости, включение поворотников при поворотах, включение стопсигналов при торможение, включение габаритных огней при стоянке, мигалок при нажатие кнопки на машинке(кнопка сброса максимальной скорости).
Читать дальше →

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

STM32, C++ и FreeRTOS. Разработка с нуля. Часть 4 (Прерывания, UART и недоHART)

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

Ведение


Попав в отпуске в город на Неве и посетив множество красивых мест, я все таки, вечерами за чашкой пива, разбирался с UARTом. Тем более, что я купил неплохие наушники Fisher FA011, к которым пришлось прикупить USB SOUND BLASTER X-FI HD и хотел послушать музыку.
Предыдущие статьи вначале переехали на Geektime потом я обратно их перегнал, даже и не знаю, куда теперь их деть :)
Но так на всякий случай они тут:
STM32, C++ и FreeRTOS. Разработка с нуля. Часть 1
STM32, C++ и FreeRTOS. Разработка с нуля. Часть 2 и
STM32, C++ и FreeRTOS. Разработка с нуля. Часть 3 (LCD и Экраны)
Читать дальше →

Коммутатор фар и фонарей для автомобиля с контролем состояния аккумулятора и термометрами

Время на прочтение2 мин
Количество просмотров16K
На самом деле вариантов использования у этого модуля может быть больше, но названное применение было толчком к разработке.
Как известно, привезенные из США автомобили славятся своей дешевизной. Но при попытке получить разрешение на эксплуатацию в Европе новые владельцы таких машин сталкиваются с несоответствием стандартов на фары и сигнальные фонари в Америке и Европе. Приходится менять фары и задние огни. И тут подстерегает следующая неожиданность.
Читать дальше →

Открытый проект универсального микроконтроллерного модуля

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


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

УМК на ATmega16

Время на прочтение16 мин
Количество просмотров21K
Спойлер: данная статья не выдавит ностальгической слезы.

Решив не так давно познакомиться поближе (после Arduino) с микроконтроллерами вообще
и с микроконтроллерами ATmega в частности, я быстро понял, что просто читать о МК,
прогонять код в эмуляторе, «моргать светодиодом» — это как-то не то. Поэтому я решил
«запилить» какой-нибудь — пусть даже бесполезный — проект, и разбираться со всем
уже по ходу дела. На ум пришли лабораторные работы по микропроцессорным системам
и учебный стенд, на котором эти работы выполнялись — так называемый учебный микропроцессорный
комплект (УМК), который у нас звался просто «Умкой».

Про УМК


Итак, если не вдаваться в подробности (если вдаваться — то по ссылкам ниже), то
«Умка» это микро-ЭВМ на базе микропроцессора К580ИК80А, выпускался в 80-х годах
прошлого века (мне же посчастливилось работать с ним в не совсем далёком 2009 году),
представляет из себя весомый такой ящик. Более подробную информацию об истории «Умок»
и прочем можно найти по второй ссылке ниже. Вот так он выглядит.

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

STM32, C++ и FreeRTOS. Разработка с нуля. Часть 3 (LCD и Экраны)

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

Введение


В двух предыдущих частях STM32, C++ и FreeRTOS. Разработка с нуля. Часть 1 и STM32, C++ и FreeRTOS. Разработка с нуля. Часть 2 мною уже были реализованы требования SR0, SR7, SR4 и SR6. Опять нужно вспомнить, какие вообще требования есть.
SR0: Устройство должно измерять три параметра (иметь три переменных): Температуру микропроцессора, Напряжение VDDA, Напряжение с переменного резистора
SR1: Устройство должно выводить значение этих переменных на индикатор.
SR2: Единицы измерения для Температуры микропроцессора — градусы Цельсия, для остальных параметров — вольты.
SR3: При нажатии на кнопку 1, на индикаторе должен показываться экран со следующей измеряемой переменной,
SR4: При нажатии на кнопку 1 Светодиод 1 должен изменять свое состояние
SR5: При нажатии на кнопку 2, на индикаторе должен поменяться режим отображения переменных с постоянного показывания переменной на последовательное (менять экраны раз в 1.5 секунды) при следующем нажатии с последовательного на постоянное,
SR6: При нажатии на кнопку 2 светодиод 2 должен менять свое состояние.
SR7: Светодиод 3 должен моргать раз в 1 секунду.

Значит остались самые «вкусные» требования связанные c отображением всей измеренной информации на индикаторе: SR1, SR2, SR3, SR5. Ну что же начнем.
Читать дальше →

STM32, C++ и FreeRTOS. Разработка с нуля. Часть 2

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

Введение


В прошлой публикации STM32, C++ и FreeRTOS. Разработка с нуля. Часть 1 я остановился на том, как уехал на озеро как были релизованы требования SR7, SR4 и SR6. Напомню, какие требования вообще есть для проекта:
SR0: Устройство должно измерять три параметра (иметь три переменных): Температуру микропроцессора, Напряжение VDDA, Напряжение с переменного резистора
SR1: Устройство должно выводить значение этих переменных на индикатор.
SR2: Единицы измерения для Температуры микропроцессора — градусы Цельсия, для остальных параметров — вольты.
SR3: При нажатии на кнопку 1, на индикаторе должен показываться экран со следующей измеряемой переменной,
SR4: При нажатии на кнопку 1 Светодиод 1 должен изменять свое состояние
SR5: При нажатии на кнопку 2, на индикаторе должен поменяться режим отображения переменных с постоянного показывания переменной на последовательное (менять экраны раз в 1.5 секунды) при следующем нажатии с последовательного на постоянное,
SR6: При нажатии на кнопку 2 светодиод 2 должен менять свое состояние.
SR7: Светодиод 3 должен моргать раз в 1 секунду.
Читать дальше →

STM32, C++ и FreeRTOS. Разработка с нуля. Часть 1

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

Введение


Не так давно мой отдел столкнулся с трудностями поиска новых инженеров программистов для разработки встроенного ПО. Опытным и умным не нравился уровень зарплаты, а молодых просто нет в нашем городе. Поэтому под патронажем нашей доблестной глобальной компании со штаб квартирой где-то в Сент Луисе, мы начали сначала набирать студентов в интернатуру, а потом, решили пойти другим путем и сделать целых два курса по разработке ПО, а уже там самим выбирать самых “толковых” если понадобятся вдруг новые сотрудники. Это намного дешевле и позволяет охватить максимальное количество претендентов.
Немного отступлю от темы, сам я программировал последний раз очень давно, и вообще больше на С#, а последний глобальный проект на микроконтроллере (PIC16 на зыке Си) был сделан в далеком 2007 году.
Поэтому мне предстояло разобраться с современными микроконроллерами, языком С++ и операционной системой реального времени.
Конечно все наши проекты уже сейчас используют ОСРВ и пишутся на С++, но как разработчик я в них не учувствую, а занимаюсь тунеядством управлением проектами разработки такого ПО.

Выбор


Времени у меня на все про все было дано 1 месяц. С начала июня 2015 до начала июля 2015, потому что потом я собирался в отпуск, а после отпуска обычно полно работы. Надо было делать все быстро и четко.
Немного проконсультировавшись с коллегами, выяснил, что модное направление ARM Cortex различные ядра и из доступных отладочных плат можно заказать Olimex STM32P152 которые стоили 25 долларов. Они пришли очень быстро — 6 плат по цене примерно 2000 рублей. Стоит заметить, что эти платы были закуплены нами для университета, где собственно и будет проходить этот курс.
image
Читать дальше →

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