Лучшее время для изучения микроконтроллеров

Sleepwalker

Let the galaxy burn
Команда форума
#1
Признайтесь, как часто вы думали о том, чтоб освоить азы программирования микроконтроллеров? Наверняка у вас есть в голове несколько идей потенциальных проектов, но воплощать их в жизнь вы так и не взялись. Так вот: лучше времени для старта, чем сейчас просто не найти.

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

С другой стороны, в моём текущем окружении очень много программистов, но почти нет имбедеров. Когда я разговариваю с ними на тему микроконтроллеров, у меня создаётся впечатление, что мнение о них у многих осталось на уровне 10-летней давности.

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

Я смутно помню те времена, когда я не программировал микроконтроллеры. Я начинал писать на asm’е, не только потому, что это делали все, но и потому, что нормальных инструментов практически не было. Популярность 8-битных контроллеров от AVR я объясняю тем, что для них создавались очень простые в использовании библиотеки, позволяющие создать новый проект, написать десяток строчек кода и получить вполне себе рабочую программу (адреса регистров периферийных устройств и векторы прерываний любезно заполнены создателями библиотек). Я не проводил исследования, это из моих личных воспоминаний — я уверен, что более толковые библиотеки для других контроллеров существовали ещё раньше, но тогда мы об этом не знали.

Первый действительно массовый 32-битный микроконтроллер создала французская контора STM. Именно в тот момент многие любители познакомились с архитектурой Cortex-M3 и начали её широко использовать. Помню, мне одновременно в руки попало 2 контроллера – STM32F103 и LPC1768. Мне надо было как можно быстрее сделать прототип устройства на одном из них. Естественно, мой выбор пал на первый: французы выпустили библиотеку для периферии под названием Standard Peripherals Library и всё, что мне оставалось сделать – это запустить FreeRTOS, подключить необходимую периферию и на основе созданного скелета собирать проект уже на следующем уровне абстракции, не отвлекаясь больше на работу с регистрами. Скелет я использовал и в дальнейшем, часто перегибая и засовывая 32-х битный Cortex туда, где хватило бы и самой маленькой ATtiny, но чаще всего цена позволяла (а там, где не позволяла, либо нужно было пониженное энергопотребление, можно было использовать дешёвые MSP430 и STM8, но случалось это редко).

Конечно, я слукавлю, если скажу, что мне так и не пришлось выучить полностью архитектуру Cortex-M3 и скурить даташит F103 – конечно же, пришлось и тут моё увлечение библиотекой CMSIS и StdPeriph_Lib мне скорее помешало, чем помогло, но скорость вхождения в новое для меня семейство поразила и уже тогда я понял, что мир контроллеров меняется и становится одновременно и проще и сложнее.

И вот мы плавно подобрались к тому, о чём я и хотел вам рассказать. Дело в том, что популярность всяких Arduino сборок долго не давала покоя ребятам из Texas Instruments. Они выпускали лаунчпады на основе MSP430 и продавали их дешевле себестоимости и бесплатной доставкой, они запускали сообщество, в котором можно было выкладывать свои проекты, они создавали Energia – форк Arduino, они выпускали лаунчпады Stellaris, а затем переименовывали их в Tiva C (хотя тут речь идёт о более глобальном ребрендинге и добавлении некоторых новых функций, суть не поменялась). О последнем я и хочу поговорить.

Купить лаунчпад EK-TM4C123GXL можно за 12.99$ вместе с доставкой FedEx (то есть получите вы его достаточно скоро). Плата не изобилует различной электроникой, как, например, Discovery F4 (на борту которой находятся акселерометр, звуковой сенсор, ЦАП, куча светодиодов) – всё, что вы найдёте на Tiva C Launchpad – это RGB диод и 2 кнопки, но его сила заключается не в дополнительных устройствах на плате.



Сила EK-TM4C123GXL в библиотеках, доступных для скачивания с сайта TI под названием TivaWare. Дело в том, что библиотеки для своих контроллеров сейчас пишут все, но многие из них, к сожалению, качеством не особо отличаются и являются скорее традиционными примерами, чем полноценными библиотеками, которые не стыдно использовать в своих проектах (для упомянутого чуть выше LPC1768, NXP написали свою библиотеку почти одновременно с STM, но качеством она тогда не особо отличалась). Библиотека для Tiva C удивляет своей стандартизированностью, документированностью и многообразием.

Чуть позже я предложу вам скачать TivaWare и, если вам не будет лень, то после установки вы сможете наблюдать следующие каталоги:
  • Driverlib – тут находятся непосредственно драйверы для периферийных устройств, таких как adc, gpio и так далее (в том числе и заголовочный файл с макросами для вызова функций из rom – об этом далее)
  • Examples – ну тут, понятно, примеры. Делятся на boards, peripherals и project. В первой, естественно, проекты для конкретных отладочных плат, во второй примеры использования периферийных устройств и в третьей пример чистого проекта для различных сред разработки (IAR, Keil, CCS) – файлы доступны под лицензией BSD.
  • Inc – различные заголовочные файлы с макросами, в том числе и файл tm4c123gh6pm, который пригодится нам для создания простейшего проекта
  • Docs – вот это отличительная черта TI — простая и понятная документация. Внутри находятся несколько User Guide, относящиеся к описанным тут компонентам – DriverLib, Examples, Bootloader, IQmath и так далее, а так-же юзергайд непосредственно к используемому нами лаунчпаду.
  • Sensorlib – вот это то, что меня действительно удивило: тут находятся драйвера для различных сенсоров сторонних производителей, таких как sht21, lsm303d, MPU6050 и так далее. Я люблю использовать последний (это такая MEMS сборка из акселерометров и гироскопов на одном кристале) и раньше я всегда подключал выдранную из примеров Invensense либу, так что весьма аккуратно написанные исходники от TI меня прям порадовали (кроме того, тут же я нашёл сырцы для работы с квантерионами).
  • IQmath – библиотека алгоритмов, оптимизированных для работы с числами с плавающей запятой на Stellaris (Tiva C) устройствах.
  • Utils – часто используемые утилиты, для работы с командной строкой, последовательным портом, планировщик и многое другое.
  • Оставшиеся каталоги содержат bootloader, сырцы сторонних производителей (FreeRTOS, например), библиотеку для работы с USB, драйвера для Windows и так далее.

Взято отсюда
 

absent

Известный деятель города
#2
Круто, если доставка не будет дорогой - нужно будет попробовать.
 

lestade

Меня знают многие ;-)
#3
Немного не в тему. На плоттере НР, судя по всему сгорела ПЛАТА ФОРМАТИРОВАНИЯ CH336-80001А. Прогуглил у китайцев стоит около 13000р. в Москве просят около 20000р., т.е. практически половину стоимости нового принтера. Может есть вариант отремонтировать, кто возьмётся?
 

Sleepwalker

Let the galaxy burn
Команда форума
#5
Немного не в тему. На плоттере НР, судя по всему сгорела ПЛАТА ФОРМАТИРОВАНИЯ CH336-80001А. Прогуглил у китайцев стоит около 13000р. в Москве просят около 20000р., т.е. практически половину стоимости нового принтера. Может есть вариант отремонтировать, кто возьмётся?
А что именно сгорело на плате?
 

lestade

Меня знают многие ;-)
#6
А что именно сгорело на плате?
Да кто его знает, перед НГ перестал работать. Диагностику сделали, всё указывает на данную плату. Если бы мог найти неисправную деталь, то заменить дело не хитрое. Визуально всё целое.
 

Floret

Скользящая по...
Команда форума
#11
)). Ладно, будет на форуме, спрошу.
барф почти всегда здесь, только его никто не видит...
он как Чеширский кот, "умеющий по собственному желанию телепортироваться, быстро исчезать или, наоборот, постепенно растворяться в воздухе..." )
 

SemLeik

Гость города
#15
Хых, зачем вам тратить огромную уйму денег, когда вы можете просто спаять сами, я заказал обычные детали с обычного интернет магазина, я паяю отладочную плату под микроконтроллер AVR, программирование осуществляется с помощью CodeVision, не нужно никаких ассемблеров, достаточно знать язык СИ, он простой в обращении, достаточно знать команды и операторы..
 

Sleepwalker

Let the galaxy burn
Команда форума
#16
Хых, зачем вам тратить огромную уйму денег, когда вы можете просто спаять сами, я заказал обычные детали с обычного интернет магазина, я паяю отладочную плату под микроконтроллер AVR, программирование осуществляется с помощью CodeVision, не нужно никаких ассемблеров, достаточно знать язык СИ, он простой в обращении, достаточно знать команды и операторы..
А зачем их тратить?

12 долларов.

AVR 8 бит - здесб же 32 битный современный МК.

1 раз пиво не попить.
 

SemLeik

Гость города
#17
Просто, когда делаешь сам, ты вникаешь в процессы ещё глубже, чем готовое..., хотя впринципе все по разному, 12 долларов это хорошо. А на чем ты пишешь??
 

absent

Известный деятель города
#18
Просто, когда делаешь сам, ты вникаешь в процессы ещё глубже, чем готовое..., хотя впринципе все по разному, 12 долларов это хорошо. А на чем ты пишешь??
Не соглашусь. Почти все лэйауты стандартные - можно и руками спаять, но зачем, если за дцать $ можно получить промышленно выполненную плату.
 

SemLeik

Гость города
#19
Из той что предложена не будет гибкой и универсальной, её не уложишь под нужные размеры корпуса.. Кому как, я делаю печатную плату уже за четыре часа, полностью вытравленную и залуженную...