Современные микроконтроллеры – лекция 1 / Samsung corporate blog / Habr

Содержание

Выбираем микроконтроллер вместе / Habr

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

Тем, кто знает, что на фотографии нет ни одного микроконтроллера — прошу в комментарии, дополнить мой рассказ и тем самым поделиться своим опытом с начинающими. Остальным, непременно под кат!

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

И… и ничего не происходит! Что-то не работает, и вы не можете понять что: то ли в пайке ошибка, то ли что-то с программой, то ли в интернете кривая схема, то-ли проблемы с софтом.

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

Преимущество простого старта отлично показывает платформа Arduino. Посудите сами: возможности контроллеров совсем не велики, цены на платы огромны, зато огромная поддержка сообщества и все уже готова, любые платы расширения, кучи примеров.
За счет этого и живет платформа!

Давайте посмотрим какой у нас вообще есть выбор! На рынке огромное количество производителей и архитектур. Но выбор на самом деле совсем не велик:
я бы сразу отсек все 8-ми и 16-ти битные архитектуры, кроме PIC и AVR, да иногда производители предлагают отладочные платы и контроллеры по очень заманчивой цене
но я не советую их брать потому, что это малораспространенные архитектуры и на них меньше примеров + пересаживаться на другие контроллеры будет сложнее.

По той же самой причине отсек все 32-х разрядные архитектуры кроме ARM + с ними еще начинаются проблемы с примерами, и они постепенно вымирают.

Арм микроконтроллеры делятся на ARM7, ARM9, Cortex M0, 3, 4.
Седьмые и девятые постепенно замещаюся кортексами и вскоре их тоже не будет.

Итого имеем:
AVR
PIC
ARM Cortex

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

Итак, какие производители представлены у нас?

NXP, ST, Freescale, TI, Luminary Micro, Atmel и много других но поменьше распространенных.

Как выбрать из такого большого количества производителей?
надо выбирать не контроллер а отладочную плату, библиотеки, среду разработки и сообщество.

Сам щупал только NXP, ST и Freescale.

Первые 2 производителя наводнили Москву и другие города России дешевыми/бесплатными отладками — это очень хорошо в том смысле, что всегда есть у кого спросить, есть к кому обратиться.
Также не нужны никакие программаторы — все есть на борту!

Для NXP есть альтернатива от Olimex www.chipdip.ru/product/lpc-p1343.aspx
Есть и минусы: когда захочется расширить их возможности придется искать новую.

Больше всего мне понравилась отлатдка от Freescale, с которой столкнулся на работе.

На мой взгляд это лучший вариант для новичка, но у нее есть один огромный минус:
пока довольно сложно найти в продаже и регионам придется заказывать, но оно того стоит:
Первое и самое важно преимущество: стандартные платы расширения (сначала покупаете стандартный набор, потом докупаете вайфай, сенсоры и тп)

Еще большущий плюс это среда разработки: благодаря Processor Expert можно генерировать код, и море примеров с объяснениями.

Итак подведем итоги:

1 купить Arduino Uno c AVR за 1000р на плате практически ничего нет, зато в продаже множество плат расширения и огромное сообщество

2 купить STM32L-DISCOVERY c M3 за 16.22дол c сенсорными кнопками, USB и маленьким LСD-дисплеем и дебагером на борту

3 купить за 1000р LPCEXPRESSO c M3 с просто выведеными контактами и дебагером на борту

4 купить KWIKSTICK с M4 за 30дол+ доставку с большим сегментным LCD, USB, входом под наушники, динамиком, сенсорными кнопками, литиевой батарейкой, микрофоном, ИК портом, слотом под SD-карту + возможность расширения функционала без пайки и больших вложений. Большой набор библиотек, примеров и хорошая IDE.

В итоге я считаю, что надо покупать STM32L-DISCOVERY и начинать с нее,
либо если не лень заморочиться с заказом платы и чуть-чуть побольше заплатить брать KWIKSTICK — с ней старт будет полегче, да и хватит ее на дольше, но для общения с коллегами нужен английский.

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

UPD: stm32l-discovery по таким ценам можно купить в Компэле
Kwikstick на сайте freescale

habr.com

Разработка электроники. О микроконтроллерах на пальцах / Хабр

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

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

Краткое содержание статьи:


Как микроконтроллеры завоевали мир
Архитектура ARM — сегодняшний лидер рынка микроконтроллеров
Конкуренция с младшими братьями
Об укладке асфальта, пользе сна и его разновидностях
Совсем коротко о технологии изготовления и о том, как появляются серии микроконтроллеров
Периферия простейшего ARM микроконтроллера за пол бакса
Самый дешёвый способ получить дополнительные функции
А что добавит переход на Cortex-M4, кроме возросшей в пару раз цены?
Cortex-M7 — когда хочется большего…

Защита кода, возможность его обновления и многообразие помогли микроконтроллерам завоевать мир

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

Микроконтроллеры — мастера на все руки. Один микроконтроллер способен заменить десятки специализированных микросхем, которые были бы необходимы для выполнения требуемых функций в случае, если бы роль вычислителя занимал микропроцессор.

Одно из неоспоримых преимуществ микроконтроллера — программа, под управлением которой он работает, скрыта внутри его корпуса (в секции под названием “память программ”) и очень хорошо защищена от взлома, конечно, в случае, если разработчик микрокода об этом позаботился, активизировав встроенные механизмы защиты. Таким образом, вы получаете защиту интеллектуальной собственности настолько большую, насколько это возможно в наши дни.

Что нельзя взломать — то можно скопировать. Зачем пытаться считать код, встроенной в микроконтроллер программы, с помощью дорогостоящих хитроумных приспособлений, если проще и дешевле найти профессионала, который может написать его заново? Возможно результат будет даже лучше, а функционал богаче чем у прототипа. Да это стоит денег, но содержание FLASH памяти сегодняшних микроконтроллеров настолько хорошо защищено, что попытки грубого “взлома” обойдутся ещё дороже. Кроме того, решается проблема интеллектуальной собственности, а вы, вместе с исходными кодами программы, получаете возможность развивать и совершенствовать своё устройство.

Память программ, в современных универсальных микроконтроллерах, является перезаписываемой, причём процесс перезаписи можно повторять не один десяток тысяч раз. Напрашивается использование этого факта для обновления программного обеспечения с целью устранения найденных в нём ошибок или расширения функций уже работающего устройства. Это достаточно просто реализовать — добавив в программу специальный участок кода под названием “бутлоадер”, вы получаете возможность обновлять программное обеспечение вашего прибора различными способами: в пункте сервисного обслуживания (если устройство имеет специальный, скрытый внутри корпуса от посторонних глаз, разъём), подключив к компьютеру по USB, через сетевой или даже беспроводной интерфейс. Главное, предусмотреть в приборе необходимую для этого периферию. Предоставляя возможность обновления ПО, всегда следует думать о безопасности, если этот процесс недостаточно защищён, мало того, что злоумышленники могут похитить ваш код, они могут модифицировать его и использовать в своих

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

Архитектура ARM — сегодняшний лидер рынка микроконтроллеров

Со времён Царя Гороха микроконтроллеры принято разделять по разрядности данных, над которыми они проводят операции. В подавляющем большинстве случаев, сегодня, в новых разработках, стоит останавливать свой выбор на 32 битных микроконтроллерах с ядром АRM. Существует огромное количество их модификаций и всегда можно подобрать экземпляр, наилучшим образом подходящий для решения вашей задачи. В зависимости от набора функций и производительности, цена чипа может составлять от десятков центов до десятков долларов.
Микроконтроллеры(MCU), в зависимости от архитектуры вычислительного ядра, принято разделять на крупные семейства. На сегодняшний день, для разработок устройств малой и средней сложности, наиболее популярны микроконтроллеры c ядрами от Cortex-M0 до Cortex-M7. Чем больше цифра, тем больше вычислительные (и не только) возможности, цена и максимальное энергопотребление. Не последнюю роль в популярности ARM сыграла преемственность архитектуры. Разработчик может с минимальными издержками модифицировать программный код своих предыдущих наработок, переходя от микроконтроллеров одного производителя к чипам другого и мигрируя между ядрами с разной производительностью.
Конкуренция с младшими братьями

Однако ARMы «рулили» не всегда. Я хорошо помню времена, когда абсолютными лидерами рынка были 8 битные микроконтроллеры и, с занятых позиций, их безуспешно пытались оттеснить 16 битные коллеги, но, по иронии судьбы, удалось сделать это только 32 битным старшим братьям. Так сложилось, что к моменту их появления, технологии изготовления чипов сильно удешевили интеграцию в них больших объёмов FLASH памяти. Воспользовавшись удобным случаем, программисты стали переходить с ассемблера на язык более высокого уровня — Си, структура которого отлично ложилась на 32 битную архитектуру. В результате 32 битные микроконтроллеры выполняли вычисления гораздо быстрее своих 8 и 16 битных коллег, но была одна проблема — у них был выше ток потребления.

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

Известно, что средний ток потребления вычислительного ядра микроконтроллера существенно увеличивается с поднятием его тактовой частоты. Поначалу 8 битные модели микроконтроллеров отличались заметно меньшим потреблением при сходной частоте и, кроме того, были способны работать от низкой тактовой частоты, вплоть до 32 кГц.

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

На короткое время сложился паритет — 32 битные MCU захватили нишу топовых приложений, а 8 битные уверенно удерживали позиции в устройствах, для которых было важно низкое энергопотребление. Он сохранялся до тех пор, пока 32 битные MCU не освоили в совершенстве «импульсный» режим работы.

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

Об укладке асфальта, пользе сна и его разновидностях

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

Понаблюдайте за строительными рабочими которые кладут асфальт. Они резко активизируют свою работу, когда пришёл грузовик с новой порцией асфальта, а после его укладки снижают темп. Так и микроконтроллеры умеют повышать и снижать частоту тактирования ядра. Однако, им это даётся не так просто, как рабочим — одновременно изменится и частота работы всей внутренней периферии, поэтому, чувствительные к этому её части придётся перенастраивать.
Не проще ли, выполнив быстро всю работу, немного поспать. Зачастую, да. Причём виды сна микроконтроллеров отличаются ещё более драматично, чем у человека.

Можно просто вздремнуть. В этом случае наш чип всегда наготове и как только зазвенел будильник таймера или его потревожило внешнее прерывание, он просыпается практически мгновенно. Как человек во время дремоты может снять напряжение, но не выспаться толком, когда тебя постоянно дёргают, так и микроконтроллер может снизить своё энергопотребление в этом режиме “всего” раз в 10, называют этот режим SLEEP.

Лучший способ хорошо выспаться — раздеться, лечь в постель, задёрнуть шторы на окне и включить будильник. Однако, после такого сна, уже моментально в работу не включишься. Придётся, как минимум, предварительно ополоснуться холодной водой и одеться. Есть такой режим и у микроконтроллера, когда он ограничивает количество внешних раздражителей и выключает основной тактовый генератор. Это режим STOP. В нём можно уменьшить потребление в 1000 раз, но и на выход из него уже потребуется существенное время.

Теперь, представьте себе, что вы перед сном выпили изрядную дозу снотворного, отключили будильник и телефон, закрыли все окна и двери. Это будет режим STAND BY. Вывести из такого режима микроконтроллер можно только с помощью особых выводов и большая часть памяти о том, чем он занимался перед таким сном будет потеряна навсегда, придётся начинать работу заново. Зато находясь в таком режиме MCU потребляет ещё в два раза меньше.

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

Выбирая режим экономии энергопотребления необходимо помнить о последствиях применения:

  • чем глубже сон, тем дольше пробуждение
  • чем глубже сон, тем меньше способов вывести из него микроконтроллер
  • чем глубже сон, тем меньше остаётся информации о предыдущем состоянии микроконтроллера
  • для достижения минимальных заявленных значений, во многих режимах необходимо принимать дополнительные меры, например — отключения периферии
  • для минимизации энергопотребления устройства в целом необходимо грамотно спроектировать схемотехнику всего устройства
  • для минимизации энергопотребления устройства в целом, нужно позаботиться о том, чтобы остальные компоненты и цепи также имели микропотребление в неактивном режиме. Глупо предпринимать огромные усилия для того, чтобы опустить потребление микроконтроллера ниже одного микроампера и, при этом, применять в устройстве дешёвый стабилизатор с током собственного потребления в 100 микроампер но встречается такое сплошь и рядом
  • для успешного использования режимов глубокого сна не только программа, но и схемотехника, должны быть тщательно продуманы, иначе, вместо экономии, можно получить весьма серьёзные проблемы — редко случающееся, зато “мёртвое” зависание устройства по необъяснимой причине, либо слишком частое пробуждение и, как результат, потребление на порядки выше ожидаемого


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

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

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

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


Так из одного стандартного дизайна чипа формируется целая серия микросхем.
Периферия простейшего ARM микроконтроллера за пол бакса

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

В микроконтроллере их роль играют выводы на корпусе, к которым внутри корпуса могут подключаются порты(контактные площадки) чипа. В свою очередь, через внутренние коммутаторы, к одному и тому же порту могут подключаться различные периферийные модули.
Для начала рассмотрим периферию одной из простейших серий от ST на основе ядра Cortex-M0 — stm32F03.

Для этой серии имеем следующий набор базовых функций:
Часы реального времени (Real Time Clock или RTC), которые могут запитываться с помощью отдельного вывода и работают от отдельного низкочастотного резонатора. Этот модуль потребляет крайне мало энергии, в случае пропадания основного питания он может часами работать от заряженного конденсатора, или годами от маленькой встроенной в прибор батарейки. Кроме этого, он может служить в качестве будильника, выводя микроконтроллер из состояния даже самого глубокого сна в заранее заданное время.

WatchDog — сторожевая собака мешающая микроконтроллеру заснуть навсегда, например, свалившись в бесконечный цикл или перейдя по несуществующему адресу. Его принцип работы прост. Программист настраивает таймер защиты от “зависания” на определённый период времени, допустим на секунду, и запускает его. Затем он расставляет, в выбранных им местах программы, короткие участки кода, которые перезапускают таймер с нулевого значения. Если за секунду не произошло ни одного сброса таймера, WatchDog считает, что с программой что-то не так и устраивает микроконтроллеру перезапуск. Программа начинает работать с начала, причём существует возможность определить являлся ли инициатором ресета WatchDog и учесть этот факт при запуске.

Универсальные цифровые входы-выходы (General Purpose Input-Output GPIO) — это самая распространённая функция, которую поддерживают большинство выводов микроконтроллера. Они могут конфигурироваться либо как входы, либо как выходы.

Рассмотрим работу в качестве входа. Если напряжение на входе микроконтроллера меньше некоего порога (как правило близкого к половине питания), то оно воспринимается как логический ноль, в противном случае как 1. Цифровые входы обычно имеют очень высокое входное сопротивление, поэтому, если их оставить не подключенными, их состояние может скакать из нуля в единицу и обратно, под действием наводок электромагнитных полей. Для того, чтобы этого не происходило, существуют специальные режимы, когда внутри чипа вход соединяется через сопротивление 20 — 50 КОм с плюсом питания микроконтроллера (pull-up) или с минусом (pull-down).

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

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

На рисунке выше изображён участок схемы, спроектированного мной устройства (спутникового модема), с элементами простейшей защиты портов микроконтроллера. X4 — разъём для внешних коммуникаций. Нас интересуют контакты 5-7, к которым присоединяются тревожные кнопки. Сигналом тревоги служит замыкание на землю, поэтому, в нормальном состоянии, на портах должно присутствовать напряжение питания микроконтроллера, что и обеспечивают резисторы R24-R26, номиналом 1 КОм. Супрессоры VD4-VD6 ограничивают напряжение на уровне 5 вольт, это допустимо потому, что применяемый мной микроконтроллер, хотя и питается напряжением 3,3 вольта, но имеет порты толерантные к напряжению 5 вольт. Резисторы R29-R31 на 100 Ом.
Подобная защита спасёт порты вашего микроконтроллера от внешних перенапряжений. У некоторых микроконтроллеров отдельные порты не боятся напряжений, превышающих их напряжение питания. Так у многих микроконтроллеров STM32Fxx почти все порты будучи сконфигурированными как цифровые могут работать с 5 вольтовыми цепями, но если они работают в аналоговом режиме, например в качестве входа АЦП, теряют эту способность и это необходимо учитывать при разработке схемы.

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

Существует ещё один лайфхак. Иногда их можно оставить входом и замкнуть на другую цепь. Это помогает в случае очень плотной трассировки провести проводник «сквозь» микроконтроллер, что особо актуально для двухслойных плат.

Используя порты микроконтроллеров в качестве выходов, также стоит свериться с даташитом. Отдельные порты могут иметь разное ограничение по максимальному току, который от них можно получить не опасаясь выхода их строя — нагрузочную способность. Кроме этого, сам чип имеет максимальную нагрузочную способность всех выходов в сумме, которую не следует превышать.
Последнее, о чём хочется упомянуть, выходные порты ARM микроконтроллеров не реагируют на программные инструкции мгновенно, как у 8-битных микроконтроллеров. Они управляются через шину, и их быстродействие зависит от частоты тактирования соответствующего узла, которую можно менять программно. Если вы хотите быстрой реакции, позаботьтесь об увеличении этой частоты, если важнее уменьшить энергопотребление, наоборот выберите менее скоростной режим.


Температурный сенсор Микроконтроллер имеет свой собственный температурный сенсор, правда не слишком точный, тем не менее его можно, с определёнными допущениями, использовать для измерения температуры внутри корпуса прибора.

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

Интерфейсы обмена данными Различные микроконтроллеры данной серии могут иметь по нескольку наиболее распространённых интерфейсов, сильно облегчающих общение с другими чипами и внешним миром:

  • USART — асинхронный последовательный порт, часто использующийся для связи с компьютером там он называется COM или RS232, модемами и другими устройствами
  • SPI — высокоскоростной интерфейс, который имеют очень многие чипы, например внешняя память
  • I2C — двухпроводной интерфейс, разработанный для общения с датчиками и другой периферией на небольшом расстоянии и небольших скоростях обмена. Большой его плюс заключается в том, что одновременно к одной шине можно подключить десятки различных устройств

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

Аналого-цифровой преобразователь АЦП или ADС на котором придётся остановиться подробнее.

Чрезвычайно полезный модуль, который способен измерять напряжение аналоговых сигналов. Оценивает он их в долях от величины опорного источника сигнала, в нашем случае это напряжения питания аналогового модуля микроконтроллера, которое может быть равным или немного ниже основного напряжения питания чипа. Теоретическая точность работы АЦП зависит от его разрядности. В современных микроконтроллерах чаще всего применяется 12 разрядный АЦП последовательного приближения, реже 10 и как экзотика встречается 16.

При питании 3 вольта 12 разрядный АЦП микроконтроллера будет иметь разрешающую способность 3/4096=0.00073 Вольта — лучше одного милливольта.

Но на практике достичь этого идеала бывает не просто.

Подробности для начинающих разработчиковНа практике всё бывает далеко не так красиво и точность измерений может снижаться по многим причинам. Ниже перечисляю основные, хорошо известные любому опытному электронщику, а также простые но эффективные способы сведения их пагубного влияния до минимума
нестабильность напряжения источника питания АЦП
  • применять для питания MCU линейные стабилизаторы с хорошими параметрами
  • применять для питания аналоговой части MCU высокостабильные источники опорного напряжения

импульсные помехи по питанию АЦП
  • подключать аналоговое питание к цифровому через простейшие фильтры низкой частоты — подавать питание на аналоговую часть MCU через индуктивность и в непосредственной близости от входа микроконтроллера устанавливать керамический конденсатор с диэлектриком XR7 ёмкостью 100 нанофарад, а ещё лучше, параллельно ему включить танталовый конденсатор с ёмкостью в одну — две микрофарады.

импульсные помехи на входе АЦП
  • пропускать входной сигнал хотя бы через простейший ФНЧ, состоящий из резистора и конденсатора. Для борьбы с помехами от передающих радиотрактов и короткими импульсными помехами иногда достаточно одиночного конденсатора с диэлектриком NP0 ёмкостью в несколько десятков пикофарад, установленного между входом и землёй, в непосредственной близости от входа АЦП
  • не экономить на блокировочных конденсаторах, по крайней мере самого микроконтроллера, устанавливать их в непосредственной близости от каждого вывода питания и в других местах, рекомендованных производителем, рекомендованного им номинала
  • тщательно выбирать месторасположение компонентов и соблюдать правила трассировки цепей питания и особенно “земли”, в идеале аналоговая и цифровая земли должны соединяться в одной точке — рядом с выводом аналоговой земли микроконтроллера

высокое выходное сопротивление источника сигнала, опасно тем, что в момент старта измерения АЦП последовательного приближения, которое чаще всего используется в микроконтроллерах, его вход потребляет некоторый отличный от нуля ток и это может привести к уменьшению истинного значения напряжения, так как сигнал фактически подаётся через делитель напряжения.
  • правильно выбирать параметры настройки АЦП, например во многих микроконтроллерах можно увеличить время зарядки входной цепи, правда тут приходится идти на компромисс, снижая быстродействие
  • устанавливать на входе АЦП буферные усилители на основе ОУ (операционный усилитель), или повторители напряжения. Выбирать их по принципу самых дешёвых не стоит, можно не улучшить, а ухудшить ситуацию, причём значительно. Если не хватает собственного опыта, лучше поискать специально рекомендованные производителями для подобных приложений

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

От цепи VBUT питается вся цифровая часть микроконтроллера. На всякий случай привожу номиналы элементов: R5-10 Ом, С10 0.1 мкФ, без индуктивностей L1 и L2 BLM18PG471SN1D в большинстве случаев можно обойтись.

Ещё один любопытный пример из моей практики. В плате, на которой размещалось большое количество высокопотребляющих чипов ASIC, необходимо было измерять их температуру. Самый простой и дешёвый способ — использование высокоомных термисторов. В качестве фильтров я применил конденсаторы достаточно большой ёмкости, воспользовавшись тем фактом, что температура меняется сравнительно медленно. Для оцифровки звука такой фокус однозначно бы «не прокатил».

Осталось упомянуть ещё одну важную особенность АЦП, характерную для микроконтроллеров. Собственно, модулей АЦП в нём, как правило, один или два, а вот входов может быть много. В описываемой серии модуль 1, а входов может быть до 16. Как же так? Очень просто, входы подсоединены к нему через коммутатор. Если вы собираетесь измерять напряжение с 10 входов, то должны организовать цикл — последовательно переключить коммутатор к каждому из 10 входов и сделать измерение. Это необходимо учитывать, рассчитывая времена измерения. В данной серии АЦП, теоретически, способно сделать измерение за 1 микросекунду. Получается, что полный цикл 10 измерений у вас займёт точно больше 10 микросекунд!


Система прямого доступа в память ПДП или DMA — ещё одна архиважная вещь. Этот модуль позволяет пересылать данные от периферии в память или наоборот.

Например, с его помощью вы можете выделить участок памяти для хранения данных, приходящих из АЦП и сделать из него кольцевой буфер. Далее запускается АЦП в режиме считывания данных через равные промежутки времени. Используя механизмы DMA, считанные данные будут, без участия ядра, самостоятельно, байт за байтом, помещаться в выделенный буфер. Когда буфер будет полностью заполнен, ядро получит сигнал и приступит к их программной обработке, а система DMA начнёт процесс загрузки сначала. Поскольку DMA имеет несколько каналов, то никто не мешает реализовать для нашего случая автоматический вывод на USART данных из буфера. В результате мы получим, работающий без использования ядра процесс передачи считанных с АЦП в USART, и не простая работа программиста по конфигурации DMA окупится сторицей.

Модуль широтно-импульсной модуляции ШИМ или PWM, в силу ограниченности статьи не будем останавливаться на нём подробно, отмечу только, что это крайне полезная и широко используемая функция, с помощью которой возможно управлять яркостью светодиодов, скоростью вращения двигателей, рулевыми машинками, конструировать интеллектуальные DC-DC преобразователи и даже звук синтезировать.

Что можно получить, добавив 30 центов?

Переход на Cortex-M0+. Самый дешёвый способ получить дополнительные функции

А какие дополнительные плюшки предлагает микроконтроллер новейшей серии с ядром чуть посовременнее Cortex-M0+, при стоимости на 20-50 центов дороже аналогов в рассмотренной выше серии по корпусу и количеству выводов?

Таблица отличий между сериями

  • в два раза увеличилась максимальная тактовая частота
  • с 2 до 1.7 вольт понизилось минимальное напряжение питания
  • АЦП способно работать в два с половиной раза быстрее
  • появились два канала 12 битного цифро-аналогового преобразователя. Это крайне полезная функция, с помощью которой возможно формировать на выводах сигнал заданного напряжения с точностью лучшей чем 1 мВ, например сигналы произвольной формы в звуковом диапазоне частот
  • появились компараторы — устройства для сравнения величин двух аналоговых сигналов, это бывает полезным скажем для определения момента возникновения перегрузки по току
  • добавлен USB интерфейс, посредством которого можно подключать устройства к компьютеру. Особый интерес вызывает наличие поддержки опций управления питанием для реализации USB type3-C совместимого интерфейса. О нём я рассказывал в одной из своих статей на Хабре
  • появился ускоритель AES для процедур 256 битного шифрования/дешифрации
  • UART получил возможность работы в режимах сна и аппаратную поддержку протоколов LIN (простая сеть, широко используется в автопроме), IRDA (протокол передачи данных посредством инфракрасных светодиодов, вспомните телевизионные пульты), SIMcard…
  • расширены возможности таймеров и модуля PWM
  • верхняя граница температурного диапазона работы поднялась до 125 градусов
  • увеличена надёжность работы за счёт расширения режимов перезапуска при возникновении проблем с питанием
  • добавлен “честный” аппаратный генератор случайных значений — полезная функция в криптографии

Ну что же, для многих применений незначительная добавка в цене себя вполне окупает, поскольку можно отказаться от перехода на более дорогостоящие микроконтроллеры старших модельных рядов.
А что добавит переход на Cortex-M4, кроме возросшей в пару раз цены?

  • Максимальная тактовая частота вырастает уже до 80 МГц
  • Появился блок для ускорения вычислений с плавающей точкой
  • Ясное дело, максимальная встроенная память увеличилась
  • Модели с количеством ног 100 и более поддерживают работу с внешней статической памятью
  • USB научился работать в режиме HOST
  • Появился контроллер CAN интерфейса. Это очень перспективный интерфейс разработанный для высоконадёжных приложений. Своё победное шествие он начал с автомобильной промышленности и уже почти 20 лет ведёт затяжную войну с давно устаревшим RS-485 в крайне консервативной отрасли промышленной автоматизации.
  • Появился интерфейс для подключения SDcard. Очень полезная функция — добавляете в своё устройство держатель за 50 центов и получаете съёмный носитель размером в десятки Гигабайт! С большинством карт удаётся работать и по обычному SPI, но намного медленнее
  • Добавили встроенный Операционный Усилитель с большим разнообразием режимов работы. Именно благодаря этой и предыдущей функциям, для своего последнего проекта беспроводного стетоскопа, пришлось остановить выбор на M4 вместо M0+. В результате появилась возможность управлять усилением сигнала с MEMS микрофона и сохранять десятки часов аудиозаписей работы сердца на SD карте
  • Криптомодуль научился аппаратно считать HASH функции.
  • Контроллер сенсорных приложений усовершенствован и теперь поддерживает уже не только кнопки, но и элементы прокрутки

Cortex-M7 — когда хочется большего…

В подавляющем количестве проектов возможностей предоставляемых вышеописанными ядрами достаточно, но случаются и исключения. Лично со мной такое случалось всего пару раз, причём лишь один раз по действительно уважительной причине — требовалась высокая производительность для подготовки данных для ASIC, контроллер Ethernet и шина CAN-FD c повышенной скоростью обмена.

Если на уровне универсальных микроконтроллеров с ядрами Cortex 4 и ниже, на мой субъективный взгляд, по параметру цена/функциональность сейчас лидирует фирма ST, то в области более высокопроизводительных чипов она уступает лидерство ATMEL, вернее, теперь уже недавно поглотившему его MICROCHIP. Поэтому я остановил свой выбор на серии ATSAMV71, стоимостью от 6 долларов.

Помимо вышеописанного (контроллер Ethernet и шина CAN-FD), по большому счёту, мы получаем, существенно увеличивающее производительность ядро с ускорителем операций, работающее на тактовой частоте до 300 МГц, интерфейсы для подключения видеоматрицы и поддержку динамической памяти.

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

habr.com

Советы начинающим программистам микроконтроллеров / Habr

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

1. Многие начинающие электронщики не знают с чего начать, поэтому спрашивают совета. Большинство бывалых радиолюбителей ответят, что начни собирать какую нибудь схему. Естественно в голове любого начинающего сразу мелькает LCD дисплей с jpeg картинками, какой нибудь mp3 плеер или часы, без малейшей мысли о том, что не имея базовых знаний это неподъемная задача.

Я категорически против такого подхода. Обычно это все заканчивается — либо ничем, либо забитые форумы с мольбами помочь. Даже если кому то помогают, то в 90% он больше никогда не всплывет на сайтах по электронике. В остальных 10% он так и продолжает заливать форумы мольбами, его будут сначала пинать, затем поливать грязью. Из этих 10% отсеивается еще 9%. Далее два варианта: либо таки до глупой головы доходит и все же происходит goto к началу, либо в особо запущенных вариантах, его удел копировать чужие конструкции, без единой мысли о том как это работает. Из последних зачастую рождаются ардуинщики.

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

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

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

2. Перед решением задачи, дробите ее до абсурда вплоть до «припаять резистор», это помогает, проверено. Мелкие задачи решать куда проще. Когда большая задача разбита на кучу мелких действий, то все что остается — это выполнить их. Могу привести еще один годный совет, хоть он вам и покажется бредовым — заведите блокнотик и пишите в него все что собираетесь сделать. Вы думаете, итак запомню, но нет. Допустим сегодня у меня хорошее настроение и думаю о том, как собрать плату. Запиши план действий: сходить купить резистор, подготовить провода, сделать крепление дисплея. Потом все забудешь, откроешь блокнотик и смотришь — ага сегодня настроение попилить и построгать, сделаю крепление. Или собираешь ты плату и уже осталось допаять последний компонент, но не тут то было резисторы кончились, вот записал бы перед тем как паять, то вспомнил.

3. Не пользуйтесь кодогенераторами, нестандартными фичами и прочими упрощалками, хотя бы на первых этапах. Могу привести свой личный пример. Во времена активного использования AVR я пользовался кодогеном CAVR. Меня он полностью устраивал, хотя все говорили, что он кака. Звоночки звенели постоянно, были проблемы с библиотеками, с синтаксисом, с портированием, но было тяжело от этого отказаться. Я не разбирался как это работает, просто знал где и как поставить галочки.

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

По поводу всех улучшалок и упрощалок, было одно очень хорошее сравнение, что они подобны инвалидным коляскам, которые едут по рельсам, можно ехать и наслаждаться, но вставать нельзя, куда везут — туда и приедешь.

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

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

Очень многие начинающие брезгуют изучением языка, поэтому если вы не будете как все, то сразу станете на две ступени выше остальных новичков. Так же не никакой разницы, где изучать язык. На мой взгляд, микроконтроллер для этого не очень подходит. Гораздо проще поставить какую нибудь Visual studio или Qt Creator и порешать задачки в командной строке.

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

5. Изучение ассемблера? Бояться его не нужно, равно как и боготворить. Не нужно думать, что умея написать программу на ассемблере, вы сразу станете гуру микроконтроллеров, почему то это частое заблуждение. В первую очередь это инструмент. Даже если вы не планируете использовать его, то все равно я бы настоятельно рекомендовал написать хотя бы пару программ. Это сильно упростит понимание работы микроконтроллера и внутреннего устройства программ.

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

7. Часто народ просит прислать даташит на русском. Даташит — это то, что должно восприниматься как истина, самая верная информация. Даже там не исключены ошибки. Если к этому добавятся ошибки переводчика, он ведь тоже человек, может даже не нарочно, просто опечататься. Либо у него свое видение, может что-то упустить, на его взгляд не важное, но возможно крайне важное для вас. Особенно смешной становится ситуация, когда нужно найти документацию на не сильно популярные компоненты.

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

Мною был проведен эксперимент: в наличии был студент, даташит и гугл переводчик. Эксперимент №1: студенту вручен даташит и дано задание самостоятельно найти нужные значения, результат — «да как я смогу», «да я не знаю английский», «я ничего не нашел/я не понял» типичные фразы, говорящие о том, что он даже не пытался. Эксперимент №2: тому же студенту, вручен все тот же даташит и тоже задание, с той разницей, что я сел рядом. Результат — через 5 минут он сам нашел все нужные значения, абсолютно без моего участия, без знания английского.

8. Изобретайте велосипед. Например, изучаете какую то новую штуку, допустим транзистор, дядька Хоровиц со страниц своей книги авторитетно заявляет, что транзистор усиливает, всегда говорите — НЕ ВЕРЮ. Берем в руки транзистор включаем его в схему и убеждаемся что это действительно так. Есть целый пласт проблем и тонкостей, которые не описываются в книгах. Прочувствовать их можно только, когда возьмешь в руки и попробуешь собрать. При этом получаем кучу попутных знаний, узнаем тонкости. Кроме того, любая теория без практики забудется намного быстрее.

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

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

9. А как бы я сделал это, если бы находился на месте разработчиков? Могу ли я сделать лучше? Каждый раз задавайте себе эти вопросы, это очень хорошо помогает продвигаться в обучении. Например, изучите интерфейсы 1wire, i2c, spi, uart, а потом подумайте чем они отличаются, можно ли было сделать лучше, это поможет осознать почему все именно так, а не иначе. Так же вы будете осознавать, когда и какой лучше применить.

10. Не ограничивайтесь в технологиях. Важно что этот совет имеет очень тонкую грань. Был этап в жизни, когда из каждой подворотни доносилось «надо бы знать ПЛИС», «а вот на ПЛИС то можно сделать». Формально у меня не было целей изучать ПЛИСины, но и пройти мимо было никак нельзя. Этому вопросу было выделено немного времени на ознакомление. Время не прошло зря, у меня был целый ряд вопросов, касаемых внутреннего устройства микроконтроллеров, именно после общения с плисинами я получил ответы на них. Подобных примеров много, все знания, которые я приобретал в том или ином виде, рано или поздно пригодились. У меня нет ни единого бесполезного примера.

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

11. Если спросить начинающего радиолюбителя, что ему больше нравится программирование или схемотехника, то с вероятностью 99% ответ будет программирование. При этом большую часть времени эти программисты тратят на изготовление плат ЛУТом/фоторезистом. Причины в общем то понятны, но довольно часто это переходит в некий маразм, который состоит в изготовлении плат ради изготовления плат.

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

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

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

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

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

15. Тонкий вопрос: профильное высшее образование, нужно ли оно? Мне известны не единичные случаи, когда люди работали абсолютно без образования и по опыту и знаниям они могли дать прикурить любому дипломированному специалисту. Собственно, у меня нет профильного образования, испытываю ли я от этого дискомфорт? В определенной степени да.

Еще в самом начале, когда микроконтроллеры были для меня хобби, я много помогал с курсовыми и дипломами разных вузов, просто чтобы оценить свой уровень. Могу сказать уверенно, что уровень в целом невысок вне зависимости от имени вуза. Учиться несколько лет, для того чтобы написать такой диплом, совершенно необязательно. Достигнуть этого можно самостоятельно за весьма короткий срок. И все же зачастую бывали моменты, когда студенты знали какой то предмет, который они проходили на 2-3 курсе, а я этого не знал. Хоть все эти знания и компенсировались самообразованием, но все же лучше было бы не тратить на это время.

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

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

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

Если подытожить то совет таков: если есть хоть малейшая возможность — нужно идти учиться, обязательно по профилю, если есть хоть какие то шансы, то лезть везде, а не отсиживать штаны на задней парте. Заводить знакомства, параллельно дома самому практиковаться, развиваться.

16. Поздно ли начинать программировать в 20, 30, 40, 50 лет? Практика других людей показывает, что возраст вообще не помеха. Многие почему то не учитывают то, что есть целый пласт работы, которую молодые в силу своих амбиций не хотят делать. Поэтому работодатели предпочитают брать тех, кто будет ее тащить. Это ваш шанс зацепиться, а дальше все зависит только от вас.

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

habr.com

Две стороны повсеместного применения микроконтроллеров / Habr

Микроконтроллеры (старое красивое название — однокристалльные микро-ЭВМ) в настоящее время имеют невероятно много областей применения. От промышленной автоматики до бытовых приборов, от управления ядерными станциями до детских игрушек, от секретных военных систем до переключения каналов в вашем радиоприемнике. Одним словом, проще перечислить, где они не применяются.

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

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

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

Упрощение схемотехники


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

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

Унификация


Разделение программной и аппаратной части позволило унифицировать элементную базу. Один и тот же контроллер может применяться для создания множества различных устройств. Унификация приводит к снижению стоимости производства. Экономически выгодно производить несколько десятков видов контроллеров вместо сотни разновидностей логических микросхем (и тысячи специализированных).

Несколько разных по функциональности устройств могут иметь одну и ту же схему, а различаться лишь программой. Наиболее ярким примером могут служить промышленные ПЛК (программируемые логические контроллеры). Они собираются из стандартных модулей: устройств ввода, устройств вывода, вычислительных и интерфейсных модулей. За взаимодействие модулей между собой и алгоритмы работы системы в целом отвечает программная часть. Таким образом, из небольшого набора стандартных блоков можно построить любую необходимую систему.

Простота внесения изменений


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

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


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

Снижение надежности


Теория надежности включает в себя много различных аспектов, но в «бытовом» смысле, когда говорят о надежности техники, обычно имеют в виду устойчивость к отказам и сбоям. Отказ — это неустранимое нарушение работоспособности, как пример можно привести перегоревшую лампочку. Сбой — это нарушение, которое устраняется само по себе, или при минимальном воздействии оператора. Старый телевизор, который «чинится» ударом кулака — пример системы, работающей со сбоями.

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

Проигрывают они по устойчивости к сбоям. Сбои, как правило, вызываются внешними воздействиями: температурой, электромагнитными помехами, радиацией. Особенно чувствительны контроллеры к электромагнитным воздействиям, которые вызывают зависания и самопроизвольные перезагрузки. Для обеспечения помехозащищенности микроконтроллерных схем требуются специальные меры: разделение шин питания, сторожевые таймеры, дополнительные слои металлизации на плате и т.п. Подробнее — см. [1].

Часто источником сбоев становится плохо отлаженная прошивка. Или же причина ненадежной работы лежит на стыке программной и аппаратной части. Например, многократная запись в одну и ту же ячейку flash-памяти рано или поздно приводит к исчерпанию ресурса ячейки, и данные начинают повреждаться. Микроконтроллер может обеспечить уровень надежности, необходимый для большинства задач, но только при грамотном подходе к проектированию. Об этом, кстати, стоит сказать отдельно.

Кажущаяся простота разработки


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

Порог входа для программирования гораздо ниже. Можно за один вечер изучить основы любого языка и научиться писать «Hello world»ы. Ясно, что между «программистом» и «хорошим программистом» лежит огромная пропасть, но легкость, с которой можно начать писать, подкупает.

Точно также низок порог входа для разработки устройств на контроллерах. Сейчас полно отличных Arduino-подобных комплектов, огромный выбор периферийных модулей к ним, осталось потратить тот самый вечер на освоение IDE (среды разработки) — и можно приступать к своему первому проекту.

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

Получается, что легкость разработки под контроллеры — только иллюзия. Микроконтроллер гораздо чувствительнее к ошибкам программиста, чем «большие» компьютеры. Ограниченный объем памяти, требования к быстродействию «по тактам» и почти полное отсутствие «защит от дурака» требуют высокой квалификации разработчика.

Функциональная перегруженность и неудобные интерфейсы


— Как выглядит идеальный интерфейс? Одна кнопка с надписью «Сделай мне хорошо».
— Нет, никаких кнопок, просто надпись «Тебе уже хорошо».

Шутка с долей правды.


Для решения той или иной задачи микроконтроллер всегда выбирается c запасом по параметрам. Соответственно, часть ресурсов контроллера (иногда до 90%) остается свободной. Это приводит к тому, что добавить несколько дополнительных функций можно практически «бесплатно», дописав пару десятков строк в коде прошивки. И такой возможностью часто злоупотребляют. В результате нарушается принцип K.I.S.S., объявляющий простоту системы одним из основных приоритетов в проектировании. Получается устройство, большая часть возможностей которого никогда не используется, а о половине из них пользователь даже не знает.

Наличие ненужных функций — лишь вершина айсберга. Казалось бы, не используется — и ладно, может когда-нибудь пригодится… Но функциональная сложность приводит к сложности пользовательских интерфейсов. Тут возможно два пути. Можно попытаться «втиснуть» управление всеми функциями в ограниченный набор элементов ввода-вывода. Так появляются меню с N-надцатью уровнями вложенности, или кнопки с десятками альтернативных действий. Как пример сумеречного инженерного гения в этом направлении можно привести телефон-АОН «Русь». У кого был этот агрегат, тот знает, что его настройка похожа на программирование в машинных кодах.

Второй путь — сделать интерфейс удобным для пользователя путем применения большого цветного экрана (лучше сенсорного) или добавления своей кнопки для каждой функции. Этот вариант уже лучше, но увеличиваются габариты, уменьшается время автономной работы, снижается надежность устройства. И не забываем о цене. Даже если затраты на производство возрастают незначительно, наличие «супер-пупер экрана с 5000000 цветов» позволяет без лишних угрызений совести накрутить +50…250% к конечной стоимости устройства.

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


В крупном торговом комплексе ни с того ни с сего открываются фрамуги дымоудаления (большие окна с электроприводом) и выдают неисправность на реле управления. Ночью обещали дождь; не починим — зальёт полкомплекса.
Вызываю из фирмы спеца, который релюху эту программировал. Он на город один, зараза, сам всё паяет и ставит. Описал проблему; он ответил, мол, всё понятно, сейчас приеду и сделаю.
Приезжает, уверенной походкой идет к релюхе, снимает с неё плату, тыкает в переходник. Открывает редактор какой-то — всё в шестнадцатиричном коде, ни черта не понять. Что же, думаю, он делать будет? Наблюдаю как бы случайное движение мышки в правый нижний угол — навёл, каналья, дату посмотрел, открыл конвертер, перевёл какие-то числа в hex, поиском нашёл их в коде и заменил на другие. «Чё, — спрашиваю, — таймер отработал?»

IThappens.ru


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

Какова вероятность того, что помимо основных функций, в прошивке не присутствуют какие-либо дополнительные? Это может быть отправка статистики производителю, намеренно сделанная ошибка, модуль перехвата данных, backdoor — все, что угодно. Причем «закладку» не обязательно добавлять во время разработки, можно внести изменения в прошивку любого существующего устройства. В качестве примера можно привести червя StuxNet, который внедрял свой код в ПЛК ядерно-обогатительных предприятий [2]. Если вы не обогащаете уран, это еще не значит, что вам ничего не угрожает. Уже разработаны механизмы атаки на принтеры [3] и роутеры [4], использующие смену прошивки. Учитывая, с какой легкостью перепрошивается большинство устройств, в ближайшем будущем следует ожидать появления новых «программно-аппаратных» вирусов и разновидностей атак.

А вы уверены, что прямо сейчас ваша микроволновка не следит за вами? 🙂


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

Основной вывод, который хотелось бы сделать — а он подходит для любой технологии — необходимо умело пользоваться преимуществами, которые дает эта технология, но не забывать об их оборотной стороне. Благодарю за внимание, и да пребудет с вами Сила!

Литература


[1] — Г. Горюнов. «Почему одни микроконтроллеры надежнее других».
[2] — «Как Symantec взломала Stuxnet». Хабрахабр.
[3] — «Десятки миллионов принтеров HP LaserJet уязвимы». Хакер.
[4] — «Троян в роутере: заражение D-link 500T в домашних условиях». Хакер №7/10

habr.com

ARM жаждет крови / Habr

Года так 2 назад на одном из форумов по радиоэлектронике я попросил посоветовать, какой микроконтроллер изучать — и больше всего голосов было в поддержку AVR — популярных, 8-и битных МК, под которые легко писать, программатор можно сделать одной рукой (из проводов и резисторов)… Будущее было ясным и безоблачным, пока в 2009-м году не пошли новости про новые микроконтроллеры на ядре ARM Cortex-M0, которые должны были стоить меньше 1$ (во что в принципе никто не верил) и перекрыть кислород 8-и битным микроконтроллерам.

Сейчас на дворе середина 2011 года и пришла пора посмотреть, что и по какой цене у нас можно купить, и какая получается расстановка сил (цены — из terraelectronica.ru).

МК Ядро Цена (рубли в розницу) Flash-память (кб) ОЗУ (кб) Производительность (MIPS) Потребление энергии (мА/Mhz)
LPC1111FHN33 ARM 32-bit Cortex M0 56 8 2 0.9*50 0.15
STM32F100C4T6B ARM 32-bit Cortex-M3 28.15 16 4 1.25*24 0.23
AtTiny13A Atmel 8bit 25.5 1 0.064 20 0.3 (1mhz)
0.55 (20 mhz)
atmega48 Atmel 8bit 47.06 4 0.5 20 0.3 (1mhz)
0.55 (20 mhz)
MSP430F2101IPW TI 16bit MSP430 52.12 1 0.12 16 0.25 (1mhz)
0.4 (16mhz)
PIC16F676 PIC16 8bit 36.8 2 0.22 5 0.1*4
PIC12F509 PIC12 8bit 26.3 2 0.041 5 0.087*4
PIC10F200T PIC10 8bit 14 0.25 0.016 1 0.043*4

Пояснения: Потребление энергии — указаны в оптимальных условиях в соответствии с datasheet (минимальное напряжение для данной частоты + отключена лишняя периферия). На «высоких» частотах у некоторых МК потребление на MHz выше т.к. требуется более высокое напряжение.

Также нужно помнить, что MIPS-ы у ARM-ов существенно более мясистые, чем у 8/16-и битных МК. Умножение 32×32 за 1 такт это вам не шутки…

Выводы

Определенно, Atmel недокладывает мяса тиграм. В настоящий момент в области высокой производительности/функционала полностью проигрывают Cortex M3 от STM32 (и по цене и по функционалу), а для мелких приложений — мелким PIC-ам, которые вдвое дешевле. Видимо мой собранный потом и кровью программатор для Atmel скоро останется не у дел… Впрочем, есть еще небольшая ниша для приложений где требуется работа от 5V…

У PIC-а только у PIC10 своя ниша остается, остальные проигрывают младшим армам STM32.

Cortex M0 от NXP должен был быть самым дешевым (с ценой до 0.5$ крупными партиями), но в реальности нам приходится платить 2$.

А вот Cortex M3 от STM32 просто рвет все в клочья: при цене крупными партиями 0.85$, его сейчас можно купить по одному за 0.99$ — определенно так будет не всегда, и это вероятно маркетинговая акция, но мне она нравится (я лично купил 20 впрок ). Также нужно помнить, какие плюшки несет нам Cortex M3 по сравнению с M0: умножение 32×32->64 (у M0 только 32×32->32), аппаратный делитель, операции вида MADD — все это и дает на 38% больше скорости на МГц. По энергопотреблению на MIPS получается примерно то-же. Даже если цена вырастет до 1.5$ — все равно будет вкусно, и дешевле большинства AtMega. Кстати, STM32 скоро Cortex M0 также запускает, посмотрим что из этого получится.

А вот по энергопотреблению 8-и и 16-и битные контроллеры ощутимо проигрывают (как это ни удивительно), а если учесть что ARM может больше спать при выполнении той же задачи, отрыв будет еще сильнее. PIC конечно в цифрах выглядит хорошо, но цифру в их случае надо умножать на 4 (т.к. требуется по 4 такта на выполнение команд).

Почему цена 8-и и 32-х бит так мало отличается?

Все дело в том, что само 32-х битное ядро не так уж и много места занимает, порядка десятка тысяч транзисторов. А например 256Кб Flash-памяти — это 2 млн транзисторов, что не сравнимо больше. Т.е. основное место все равно занимает память и ввод/вывод, так почему бы не потратить +2% площади кристалла и получить 32-х битное ядро нормальной скорости. Также надо учитывать, что уменьшение площади кристалла даже в 2 раза не уменьшает стоимость вдвое — цена разрезания пластины, тестирования, корпусирования остается той-же — и выигрывает тот, кто имеет большие объемы производства.

Так что нам остается смириться, и использовать ARM даже там, где хватило бы и 4-х битного процессора. Небольшая ниша остается у 6-и ногих крошек PIC10 (и AtTiny10 при снижении цены), и все.

Как жить дальше?

Программатор для ARM-ов собрать несколько сложнее, чем для AVR, но наши китайские товарищи не дремлют, и там можно заказать занедорого отличный программатор JLINK (подходит практически для всех армов всех производителей) — 24$ с доставкой — мне как раз сейчас едет.

Там же есть веселые отладочные платки с сенсорным экраном по 39.

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

Комментарии / вопросы / мнения — в студию!

habr.com

Современные микроконтроллеры STM, ATMEL AVR, PIC (520 книг) + исходники

Подборка книг по микроконтроллерам на русском и английском языках во многих случаях с исходниками, упорядоченная по темам :
Arduino, Микроконтроллеры STM, Микроконтроллеры PIC, Микроконтроллеры AVR, Raspberry Pi

Arduino:


Arduino датчики и сети для связи устройств 2-е изд 2015.pdf
Bionik arduino na russkom.zip
Eвстифеев А.В. микроконтроллеры avr семейства mega.djvu
Kulakov.V.rar
Банци Arduino для начинающих волшебников 2012.pdf
Белов А. В. Разработка устройств на микроконтроллерах AVR 2013 CD.7z
Белов А. В. Разработка устройств на микроконтроллерах AVR 2013.djvu
Белов А.В. Самоучитель по микропроцессорной технике 2008.djvu
Блокнот программиста Arduino v1-1.pdf
Блум Изучаем Arduino — инструменты и методы технического волшебства 2015 CD code.rar
Блум Изучаем Arduino — инструменты и методы технического волшебства 2015 .djvu
Блум Изучаем Arduino — инструменты и методы технического волшебства 2015.pdf
Быстрый старт. Первые шаги по освоению Arduino. МаксКит. 2015 [PDF].pdf
В.Н. Гололобов С чего начинаются роботы. О проекте Arduino для школьников 2011.pdf
Евстифеев А.В. Микроконтроллеры AVR семейства Mega 2006.pdf
Карвинен Т., Карвинен К., Валтокари В. — Делаем сенсоры — 2015.djvu
Петин Arduino и Raspberry Pi в проектах Internet of Things 2016.djvu
Петин Arduino и Raspberry Pi в проектах Internet of Things 2016 СВ.ZIP
Петин В.А. — Проекты с использованием контроллера Arduino CD.7z
Петин В.А. — Проекты с использованием контроллера Arduino (Электроника) 2014.pdf
Петин В.А. — Проекты с использованием контроллера Arduino (Электроника) 2-е издание 2015.pdf
Программирование микроконтроллерных плат Arduino Freeduino 2012 CD.7z
Программирование микроконтроллерных плат Arduino Freeduino 2012 CD.ISO.7z
Программирование микроконтроллерных плат Arduino Freeduino 2012.djvu
Ревич Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера.pdf
Шонфелдер Измерительные устройства на базе микропроцессора Atmega. 2012.djvu

Arduino Eng:


Adith Jagadish Boloor — Arduino by Example — 2015 CD.7z
Adith Jagadish Boloor — Arduino by Example — 2015.pdf
Arduino and Kinect Projects.pdf
Arduino Android Blueprints.pdf
Arduino Building exciting LED based projects and espionage devices Code.zip
Arduino Building exciting LED based projects and espionage devices.pdf
Arduino Cookbook 2nd Edition 2012 CD.zip
Arduino Cookbook 2nd Edition 2012.pdf
Arduino Development Cookbook.pdf
Arduino Development Cookbook.pdf
Arduino Essentials.pdf
Arduino for Beginners. Essential Skills Every Maker Needs Code.zip
Arduino for Beginners. Essential Skills Every Maker Needs.pdf
Arduino for Ham Radio 2014.pdf
Arduino for Secret Agents.pdf
Arduino — J. M. Hughes.pdf
Arduino Meets Linux. The Users Guide to Arduino Yun Development.pdf
Arduino — Physical Computing fur Bastler, Designer und Geeks.pdf
Arduino Praxiseinstieg.pdf
Arduino Projects for Amateur Radio 2015.pdf
Arduino Projects for Amateur Radio.pdf
Arduino Robotic Projects.pdf
Arduino Robotic Projects.zip
Arduino sketches. Tools and techniques for programming wizardry.pdf
Arduino Zero Projects Book.pdf
Beginning C for Arduino 2nd Edition.pdf
Boxall J — Arduino Workshop — 2013.pdf
[BW] Practical Arduino Cool Projects for Open Source Hardware.pdf
Connecting Arduino. Programming And Networking With The Ethernet Shield code.rar
Connecting Arduino. Programming And Networking With The Ethernet Shield.pdf
C Programming for Arduino.pdf
Getting Started with Adafruit FLORA. Making Wearables with an Arduino-Compatible Electronics Platform.pdf
Ham Radio for Arduino and Picaxe 2013.pdf
Home Automation with Arduino. Automate your Home using Open-Source Hardware cd.rar
Home Automation with Arduino. Automate your Home using Open-Source Hardware.pdf
Joe-Pardue.-C-Programming-for-Microcontrollers-from-NETBUK.pdf
Junk Box Arduino. Ten Projects in Upcycled Electronics.pdf
Maik Schmidt — Arduino. A Quick Start Guide- 2011.pdf
Maik Schmidt — Arduino A Quick-Start Guide, 2nd Edition (The Pragmatic Programmers) — 2015.pdf
Maik Schmidt — Arduino A Quick-Start Guide 2nd Edition The Pragmatic Programmers — 2015.pdf
Make. Basic Arduino Projects. 26 Experiments with Microcontrollers and Electronics.pdf
Make. Bluetooth. Bluetooth LE Projects with Arduino, Raspberry Pi, and Smartphones.pdf
practical-arduino.pdf
Programming Arduino Freeduino-Willi Somer 2012.ISO
Programming Arduino with LabVIEW.pdf
Purdum J — Beginning C for Arduino Technology in Action — 2012.pdf
The TAB Book of Arduino Projects. 36 Things to Make with Shields and Proto Shields.pdf

Микроконтроллеры STM:


stm32 book ru.pdf
STM32F10 DOC RU.pdf
STM32. Програмування STM32F103 CD.7z
STM32. Програмування STM32F103.html
Андронников И. STM32F4 это же просто.pdf
Бугаев В.И. Лаб практикум по микроконтроллам STM32 на базе STM32F3 Discovery 1.pdf
Бугаев В.И. Лаб практикум по микроконтроллам STM32 на базе STM32F3 Discovery 2.pdf
Изучаем STM32. Четыре Урока .pdf
Как запустить STM32CubeMX в ОС Linux.html
Мартин м. Инсайдерское руководство по STM32 Cortex-M3.pdf
Мартин м. Инсайдерское руководство по STM32.pdf
Матюшов Начало работы с контроллерами STM8 2016.djvu
Микроконтроллеры STM8 Лекция STM32.pdf
Микроконтроллеры STM8 с нуля.pdf
Микроконтроллеры STM для чайников 2013 08 45.pdf
Микропроцессорная техника. Введение в Cortex-M3.pdf
Новости электроники N 11 2014 Cortex M.pdf
Программирование микроконтроллеров ST7. Учебное пособие 2007.pdf
Торгаев МИКРОКОНТРОЛЛЕРЫ STM8S 2014.pdf
Ядро Cortex — МЗ компании ARM. Полное руководство.djvu

Микроконтроллеры STM ENG:


ARMCortexM3Guide.pdf
ARM® Cortex® M4 Cookbook — Dr. Mark Fisher.mobi
audioDSP.zip
Cortex M3.pdf
Donald Reay-Digital signal processing using the ARM Cortex-M4-Wiley (2015).pdf
en.CD00267113.pdf
en.DM00105823.pdf
Fisher M.ARM Cortex M4 cookbook.2016.pdf
geoffrey brown Discovering the STM32 microcontr.pdf
Hitex STM32 Insider Guide.pdf
InsideCORTEX-STM32 2008.pdf
Joseph Yiu (Auth.)-The Definitive Guide to Arm® Cortex®-M3 and Cortex®-M4 Processors-Newnes (2014).pdf
mastering-stm32 CD.7z
mastering-stm32-sample 114.pdf
mastering-stm32-sample 119p 2016.10.pdf
STM32F4-Discovery Projects.pdf
Trevor Martin (Auth.) The Designer’s Guide to the Cortex-m P.pdf
Trevor Martin dial The Insiders Guide to the STM32 ARM based Microcontroller Hitex.pdf
Yiu J. — The Definitive Guide to ARM Cortex-M0 and Cortex-M0+ Processors, 2nd Edition — 2015.pdf

Микроконтроллеры AVR:


А. В. Кравченко — 10 практических устройств на AVR-микроконтроллерах. Книга 1 (from NETBUK).djvu
Баранов В.Н Применение микроконтроллеров AVR. Схемы, алгоритмы, программы 2004.djvu
Белов А.В. Конструирование устройств на микроконтроллерах 2005.djvu
Белов А.В. Микроконтроллеры AVR в радиолюбительской практике 2007 CD.zip
Белов А.В. Микроконтроллеры AVR в радиолюбительской практике 2007.djv
Белов А.В. Микроконтроллеры AVR. От азов программирования до создания практических устройств (2016) disk mk AVR.zip
Белов А.В. Микроконтроллеры AVR. От азов программирования до создания практических устройств 2016.djvu
Белов А.В. Микроконтроллеры AVR. От азов программирования до создания практических устройств (2016) .PDF
Белов А.В. Создаем устройства на микроконтроллерах. 2007.djvu
Белов Микроконтроллеры AVR в радиолюбительской практике 2007.djvu
Вальпа О.Д. Полезные схемы с применением МК и ПЛИС 2006 CD.7z
Вальпа О.Д. Полезные схемы с применением МК и ПЛИС 2006.djvu
Встраиваемые микроконтроллеры AVR-8. Учебное пособие.pdf
Гадре Д — Занимательные проекты на базе микроконтроллеров tinyAVR — (Электроника) — 2012 CD — Project Codes.7z
Гадре Д — Занимательные проекты на базе микроконтроллеров tinyAVR — (Электроника) — 2012.djvu
Голубцов М.С. AVR — от простого к сложному (2003).djvu
Евстифеев А.В. Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL 2008 CD Files.7z
Евстифеев А.В. Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL 2008.pdf
Евстифеев А.В. Микроконтроллеры AVR семейства Mega 2007.djvu
Измерительные устройства на базе микропроцессора ATmega 2012.7z
Измерительные устройства на базе микропроцессора ATmega 2012.pdf
Кравченко А.В. — 10 практических устройств на AVR-микроконтроллерах CD — Книга 1.7z
Кравченко А.В. — 10 практических устройств на AVR-микроконтроллерах CD — Книга 2.7z
Кравченко А.В. — 10 практических устройств на AVR-микроконтроллерах CD — Книга 3.7z
Кравченко А.В. — 10 практических устройств на AVR-микроконтроллерах Книга 1 2008.djvu
Кравченко А.В. — 10 практических устройств на AVR-микроконтроллерах Книга 2 2009.djvu
Кравченко А.В. — 10 практических устройств на AVR-микроконтроллерах Книга 3 2011.djvu
Микроконтроллеры ARM7 семейства LPC2000. Руководство пользователя (П.П. Редькин, 2007).djvu
Микроконтроллеры ARM семейств LPC 2300-2400. Вводный курс разработчика (Т. Мартин, 2010).djvu
Микроконтроллеры AVR. Вводный курс.(Мортон Д.).djvu
Микроконтроллеры AVR практикум для начинающих.djvu
Михаэль Хофманн Микроконтроллеры для начинающих 2014 CD.iso
Михаэль Хофманн Микроконтроллеры для начинающих 2014 CD.rar
Михаэль Хофманн Микроконтроллеры для начинающих 2014.djvu
Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера 2 издание 2011.djvu
Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера, 3-е издание .djvu
Практическое программирование МК Atmel AVR языке ассемблера Ю.Ревич 2014-600M.djvu
Применение микроконтроллеров AVR. Схемы, алгоритмы, программы (Баранов В.Н.).djvu
Программирование микроконтроллеров AVR (ATMEL). Учебное пособие.pdf
Ревич Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера 2008.djvu
Ревич Ю.В. — Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера 2-е изд — 2011.djvu
Редькин П. Микроконтроллеры Atmel архитектуры AVR32 семейства AT32UC3 2010.djvu
Редькин П.П. 32 16-битные микроконтроллеры ARM7 2010.djvu
Редькин П.П. 32 и 16 битные микроконтроллеры ARM7 семейства AT91SAM7 фирмы Atmel 2008 CD.7z
Редькин П.П. 32 и 16 битные микроконтроллеры ARM7 семейства AT91SAM7 фирмы Atmel 2008.djvu
Рюмик С. М. 1000 и одна микронтроллерная схема. Выпуск 1 2010.djvu
Рюмик С. М. 1000 и одна микронтроллерная схема. Выпуск 1 2010 source.7z
Рюмик С. М. 1000 и одна микронтроллерная схема. Выпуск 2. 2011. .djvu
Рюмик С. М. 1000 и одна микронтроллерная схема. Выпуск 2. 2011. source.7z
Рюмик С.М. — Микроконтроллеры AVR. 10 ступеней (2005)(2 Mb)(djvu).djvu
Трамперт AVR-RISC микроконтроллеры 2006.djvu
Трамперт В. — Измерение, управление и регулирование с помощью AVR-микроконтроллеров — 2006 CD.7z
Трамперт В. — Измерение, управление и регулирование с помощью AVR-микроконтроллеров — 2006.djvu
Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих. 2007.djvu
Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих. 2-е издание 2012 CD.zip
Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих. 2-е издание 2012.djvu
Ю. А. Шпак — Программирование на языке C для AVR и PIC микроконтроллеров 2006.djvu
Ю. А. Шпак — Программирование на языке C для AVR и PIC микроконтроллеров 2-e издание 2011-CD.7z
Ю. А. Шпак — Программирование на языке C для AVR и PIC микроконтроллеров 2-e издание 2011.pdf

Микроконтроллеры AVR 2000 2008:


avr123.nm.ru.rar
AVR-RISC микроконтроллеры (В. Трамперт, 2006).pdf
AVR-RISC микроконтроллеры (В. Трамперт, 2006).rar
AVR-RISC микроконтроллеры (Трамперт)(2006).pdf
AVR-от простого к сложному (М.С. Голубцов, 2003).djvu
AVR-от простого к сложному (М.С. Голубцов, 2003).rar
Измерение управление и регулирование с помощью AVR.(2006)(Трамперт).djvu
Измерение, управление и регулирование с помощью AVR микроконтроллеров (В. Трамперт, 2006).djvu
Измерение, управление и регулирование с помощью AVR микроконтроллеров (В. Трамперт, 2006).rar
Конструирование устройств на микроконтроллерах.(Белов)(2005).djvu
Лебедев М.Б. CodeVisionAVR. Пособие для начинающих 2008.djvu
Лебедев М.Б. CodeVisionAVR. Пособие для начинающих 2008.rar
Методичка по многотерминальному лабораторному комплексу (изучение AVR, ассемблер).djvu
Микроконтроллеры AVR. Вводный курс (Д. Мортон, 2006).djvu
Микроконтроллеры AVR в радиолюбительской практике (А.В. Белов, 2007).djvu
Микроконтроллеры AVR в радиолюбительской практике (А.В. Белов, 2007).zip
Микроконтроллеры AVR — от простого к сложному.(2003)(Голубцов).djvu
Микроконтроллеры AVR. Практикум для начинающих (В.Я. Хартов, 2007).djvu
Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL.(2004)(Евстифеев).djvu
Микроконтроллеры AVR семейств Tiny и Mega фирмы Atmel (А.В. Евстифеев, 2004).djvu
Микроконтроллеры AVR семейства Classic фирмы Atmel (А.В. Евстифеев, 2002).djvu
Микроконтроллеры AVR семейства Classic фирмы Atmel (А.В. Евстифеев, 2006).pdf
Микроконтроллеры AVR семейства Mega. Руководство пользователя (А.В. Евстифеев, 2007).djvu
Микроконтроллеры AVR (ступени 1-7)(Рюмик).pdf
Микроконтроллеры AVR, ступени 1-7 (Рюмик).pdf
Микроконтроллеры семейства AVR фирмы Atmel (В.В. Гребнев, 2002).djvu
Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера (Ю. Ревич, 2008).djvu
Применение микроконтроллеров AVR. Схемы, алгоритмы, программы.(2004)(Баранов).djvu
Применение микроконтроллеров AVR. Схемы, алгоритмы, программы (В.Н. Баранов, 2004).djvu
Самоучитель по микропроцессорной технике.(2003)(Белов).djvu
Самоучитель разработчика на микроконтроллерах AVR (А.В. Белов, 2008).djvu
Справочник по программированию «Bascom-AVR» (М.Л. Кулиш).pdf
Васильев Микроконтроллеры. Разработка встраиваемых приложений 2008.djvu

Микроконтроллеры AVR ENG:


AVR an Introductory course (J.Morton, 2002).pdf
BASCOM AVR, help reference (2007).PDF
Beginers introduction to the Assebly Language of ATMEL-AVR Microprocessors (Gerhard Schmidt,2003, англ).pdf
Beginers introduction to the Assebly Language of ATMEL-AVR Microprocessors (Gerhard Schmidt,2004, англ).pdf
CodeVision AVR 1.25.7, user manual.pdf
Fast AVR. Basic compiller for AVR. User manual (2004).pdf
Programming And Customizing The Avr Microcontroller (D.V. Gadre, 2001).pdf

PIC-микроконтроллеры:


PIC-микроконтроллеры. Практика применения. Справочник. 2010.pdf
Брей Б. — Применение микроконтроллеров PIC18. — 2008 CD.7z
Брей Б. — Применение микроконтроллеров PIC18. — 2008.DJVU
Брэй Б. Применение микроконтроллеров PIC18 , 2008.djvu
Брэй Б. Применение микроконтроллеров PIC18 2008.rar
Дитер Кохц Измерение и регулирование с помощью PIC микроконтроллеров 2006 CD.7z
Дитер Кохц Измерение и регулирование с помощью PIC микроконтроллеров 2006 .pdf
Дитер Кохц Измерение и регулирование с помощью PIC микроконтроллеров 2006 копия.pdf
Заец Н.И. — Радиолюбительские конструкции на PIC-микроконтроллерах 2003
Катцен PIC-микроконтроллеры. Полное руководство 2010.djvu
Катцен PIC-микроконтроллеры. Полное руководство 2010.pdf
Катцен С. PIC микроконтроллеры. Все что вам необходимо знать 2008.djvu
Катцен С Все что необходимо знать о PIC микроконтроллерах 2008.djvu
Кениг А Полное руководство по PIC 2007.djvu
Магда Ю. С Микроконтроллеры PIC 2009.pdf
Микроконтроллеры PIC. Архитектура и программирование (Ю.С.Магда, 2009).pdf
Полное руководство по PIC-микроконтроллерам (А.Кениг, М.Кениг, 2007).djvu
Предко. Справочник по PIC-микроконтроллерам 2002.djvu
Программирование PIC микроконтроллеров на язуке PicBasic (Чак Хелибайк, 2008).rar
Программирование PIC микроконтроллеров на языке PicBasic (Чак Хелибайк, 2008).djvu
Программирование на C микроконтроллеров PIC24 2014.djvu
Разработка встроенных систем с помощью микроконтроллеров PIC 2008.djvu
Самоучитель по программированию PIC контроллеров для начинающих (Е.А. Корабельников,2008).pdf
Самоучитель по программированию PIC контроллеров с нуля (Е.А. Корабельников, 2008).rar
Тавернье Кристиан PIC-микроконтроллеры. Практика применения 2004.djvu
Тим Уилмсхерст — Разработка встроенных систем с помощью микроконтроллеров PIC 2008 CD.7z
Тим Уилмсхерст — Разработка встроенных систем с помощью микроконтроллеров PIC 2008.djvu
Шпак Программирование на языке С для AVR и PIC микроконтроллеров 2006.djvu
Шпак Программирование на языке С для AVR и PIC микроконтроллеров 2006.rar

Raspberry Pi:


Микрокомпьютеры Raspberry Pi. Практическое руководство cd.rar
Петин В. — Микрокомпьютеры Raspberry Pi Практическое руководство — 2015 CD.zip
Петин В. — Микрокомпьютеры Raspberry Pi Практическое руководство — 2015.pdf
Ричардсон и Уоллес. Заводим Raspberry Pi 2013.pdf
Ричардсон и Уоллес. Заводим Raspberry Pi 2013 чисто.pdf

Raspberry Pi ENG:


Building a Home Security System with Raspberry Pi.pdf
Exploring the Raspberry Pi 2 with C++.pdf
Learn Electronics with Raspberry Pi.pdf
Learn Raspberry Pi 2 with Linux and Windows 10.pdf
Make. Getting Started With Raspberry, 3rd Edition.pdf
Make Raspberry Pi and AVR Projects.pdf
Mastering the Raspberry Pi 2014.pdf
Programming the Raspberry Pi, Second Edition. Getting Started with Python.pdf
Raspberry Pi 3. UpSkill Learning.pdf
Raspberry Pi Cookbook for Python Programmers.pdf
Raspberry Pi Cookbook. Software and Hardware Problems and Solutions.pdf
Raspberry Pi For Dummies.pdf
Raspberry Pi IoT Projects. Prototyping Experiments for Makers. John C. Shovic 2016.pdf
Raspberry Pi IoT Projects. Prototyping Experiments for Makers.pdf
Raspberry Pi LED Blueprints Code.zip
Raspberry Pi LED Blueprints.pdf
Raspberry Pi Projects 2015.pdf
Raspberry Pi Robotic Blueprints code.zip
Raspberry Pi Robotic Blueprints.pdf
Raspberry Pi Robotic Projects.pdf
Raspberry Pi The Complete Manual. 6th Edition.pdf
Raspberry Pi User Guide. 4th Edition.pdf
The Raspberry Pi for kids.pdf

Микроконтроллеры 2000-2008:


32-16 битные микроконтроллеры ARM7 фирмы Atmel.djvu
AVR ATMEL 2002.djvu
instrset-rus.pdf
Michail.Guk.Interfacy.PC.Spravochnik.OCR.djvu
Zanim microelectronika.rar
Аналоговые интерфейсы микроконтроллеров 2007.djvu
Аналоговые интерфейсы микроконтроллеров (Р.Стюарт Болл, 2007).djvu
Антонов А.П. Язык описания цифровых устройств AlteraHDL. Практический курс.djvu
Баширов С.Р. Применение микроконтроллеров в звуковой технике 2008 CD.7z
Баширов С.Р. Применение микроконтроллеров в звуковой технике 2008.djvu
Бейкер Что нужно знать цифровому разработчику об аналоговой электронике 2010.djvu
Занимательно о микроконтроллерах (А. Микушин, 2006).djvu
Как превратить персональный компьютер в измерительный комплекс ( П.Гелль, 1999).djvu
Как превратить персональный компьютер в универсальный программатор (П.Гёлль, 2006).DjVu
Кенио Т.Шаговые двигатели и их микропроцессорные системы управления.1987.djvu
Компьютерное управление внешними устройствами через стандартные интерфейсы (В.М. Рябенький, 2008).pdf
Корякин-Черняк С. Л. — Как собрать шпионские штучки своими руками 2010.djvu
Корякин-Черняк С.Л. Справочник по цветовой, кодовой маркировке и взаимозаменяемости компонентов 2010.djvu
Крупник А.Б. — Изучаем Си — 2001.7z
Крупник А.Б. — Изучаем Си — 2001.pdf
Мiкропроцесорна технiка (Ю.I Якименко, 2004).djvu
Микроконтроллеры 16-разрядные Flash семейства 16LX фирмы Fujitsu (2004).djvu

Микроконтроллеры AVR


Пантюшин А.В. Основы программирования микроконтроллеров. Учебно-методическое пособие 2016.pdf
Пей Ан. Сопряжение ПК с внешними устройствами (from NETBUK).djvu
Последовательные интерфейсы ПК. Практика программирования (П.Агуров) (from NETBUK).djvu
Ревич Ю. Занимательная электроника, 2-е изд. 2009.djvu
Семёнов Б. Шина I2C в радиотехнических конструкциях 2002.djvu
Сташин В.В. Урусов А.В. Мологонцева О.Ф. Проэктирование цифровых устройств на МК (from NETBUK).djvu

Микроконтроллеры ENG:


altera Cyclone II FPGA BOARD Manual.pdf
Mikrocontroller. Grundlagen der Hard- und Software der Mikrocontroller ATtiny2313, ATtiny26 und ATmega32.pdf
Practical Microcontroller Engineering with ARM Technology 2016.pdf
The Art of Designing Embedded Systems.pdf

Микроконтроллерыi 8051:


8051 Interfacing and Applications (1991).pdf
Microcontroller 51 Based Projects.djvu
Каспер Программирование на языке Ассемблера для микроконтроллеров семейства i8051 2004.djvu
Микроконтроллеры серии 8051. Практический подход 2008.pdf
Проектирование цифровых устройств на МК (Сташин)(1990).djvu
Разработка устройств на МК (ужасный скан куска книги).djvu

PIC-микроконтроллеры. ENG:


Basic for PIC Microcontrollers ( M. Nebojsa, 2000).pdf
Basic for PIC Microcontrollers (M. Nebojsa, 2001).PDF
Basic for PIC Microcontrollers.PDF
CCS Peter H Anderson Pic Source Code Book (pdf+files).rar
Experimenting with the PICbasic Pro Compiler (Les Johnson, 2000).djvu
Experimenting with the PICbasic Pro Compiler (Les Johnson, 2000).rar
Interfacing PIC Microcontrollers (Bates).pdf
Interfacing PIC Microcontrollers (M. Bates).zip
Introduction to PIC Microcontrollers (Complete Guide to PIC).pdf
Kit 81 Simple PICMicro programmer (2002).pdf
Microcontroller Programming. Thi Micro Chip PIC (Julio Sanchez, 2007).pdf
My first PIC projects (pdf+asm).rar
PIC Basic Projects. 30 Projects using PIC BASIC and PIC BASIC PRO (D. Ibragim, 2006).pdf
PIC C.pdf
PIC in Practice A Project-based Approach (D.W. Smith, 2-nd edition, 2006).pdf
PIC microcontroller project book (John Iovine, 2000).pdf
PIC microcontrollers (Dragan Andric).pdf
PICmicro MCU C — An itroduction to programming The Microchip PIC in CCS C (N.Gardner, 2002).pdf
Programming 16-Bit PIC Microcontrollers in C. Learning to Fly the PIC24 (Lucio Di Jasio)(2007).pdf
Programming PIC Microcontrollers with PicBasic (Chuck Hellebuyck, 2003).pdf
STAMP 2. Communications And Control Projects (Tom Petruzzellis).pdf
The PIC Microcontroller Book for beginning (Nebojsa Matic).pdf
The quintessential PIC microcontroller (S. Katzen, 2000).pdf

PIC-микроконтроллеры. PIC 2002 2007:


PICmicro MCU C — Введение в программирование на CCS C (eng).djvu
PICmicro MCU C — Введение в программирование на CCS C (eng).pdf
PIC-микроконтроллеры. Практика применения (Тавернье)(2003).djvu
The PIC Microcontroller Book.pdf
Аппаратные хитрости применения PIC-микроконтроллеров (Александр Торес).djvu
Микроконтроллеры MicroChip Практическое руководство.(Яценков)(2002).djvu
Микроконтроллеры Microchip с аппаратной поддержкой USB 2008.djvu
Микроконтроллеры PIC16C7X (Ульрих)(2000).djvu
Микроконтроллеры PIC16X7XX (Ульрих)(2002).djvu
Микроконтроллеры PIC16X7XX,ч1 (В.А. Ульрих, 2 изд, 2002).djvu
Микроконтроллеры PIC16X7XX,ч2 (В.А. Ульрих, 2 изд, 2002).djvu
Микроконтроллеры rfPIC со встроенным маломощным радиопередатчиком (В.С. Яценков, 2006).djvu
Особенности и рабочая среда HI-Tech PICC (И. Яловой, 2003).pdf
Программирование на языке Си для AVR и PIC микроконтроллеров (Ю.А.Шпак).djvu
Руководство по микроконтроллерам (Том 1)(Предко)(2001)(picbook edition).djvu
Руководство по микроконтроллерам (Том 2)(Предко)(2001)(picbook edition).djvu
Справочник по PIC-микроконтроллерам (М. Предко, 2002).djvu
Тавернье PIC-микроконтроллеры, практика применения 2004.djvu
Тимофеев MPASM. Как правильно оформлять программы на ассемблере для PIC.pdf
Устройства управления роботами (Предко)(2004)(picbook edition).djvu
Устройства управления роботами (Предко)(файлы к книге).rar
Учимся программировать микроконтроллеры Pic на языке PicBasicPro (В.В. Хилинский, 2007).pdf
Фрунзе А.В. Микроконтроллеры. Это же просто. Том 1 — 2002.djvu
Фрунзе А.В. Микроконтроллеры. Это же просто. Том 2 — 2002.djvu
Фрунзе А.В. Микроконтроллеры. Это же просто. Том 3 — 2003.djvu
Фрунзе А.В. Микроконтроллеры. Это же просто. Том 4 2008.djvu
Фрунзе А.В. Микроконтроллеры. Это же просто. Том 4.7z
Яценков Практическое руководство MicroChip 2001.djvu

Радиолюбительские конструкции на PIC-микроконтроллера:


Заец Н.И. — Радиолюбительские конструкции на PIC-микроконтроллерах 1.djvu
Заец Н.И. — Радиолюбительские конструкции на PIC-микроконтроллерах 2.djvu
Заец Н.И. — Радиолюбительские конструкции на PIC-микроконтроллерах 2.pdf
Заец Н.И. — Радиолюбительские конструкции на PIC-микроконтроллерах 3.djvu
Заец Н.И. — Радиолюбительские конструкции на PIC-микроконтроллерах 3.pdf
Заец Н.И. — Радиолюбительские конструкции на PIC-микроконтроллерах 4.djvu
Заец Н.И. — Радиолюбительские конструкции на PIC-микроконтроллерах 4.pdf
Заец Н.И. — Радиолюбительские конструкции на PIC-микроконтроллерах source.7z
Заец Н.И. — Электронные самоделки. Для быта, отдыха и здоровья.djvu
Заец Н.И. — Электронные самоделки. Для быта, отдыха и здоровья.pdf

Микроконтроллеры 2000-2008:


123 эксперимента по робототехнике (Предко)(2007).djvu
The Microcontroller Idea Book (Jan Axelson)(1994).pdf
Системы малой автоматизации (Николайчук)(2003).pdf
Системы малой автоматизации (Николайчук)(2003)(pdf).rar
Умный дом своими руками (Гололобов)(2007).djvu
Микроконтроллеры ARM7. Семейство LPC2000 Philips (Мартин)(2006).djvu

Микроконтроллеры MSP430:


MSP430 Mikrokontrollery so sverkhnizkim energopo.iso
Семейство микроконтроллеров MSP430x1xx (Компэл)(2004).pdf
Семенов Б. Ю. Микроконтроллеры MSP430: первое знакомство. 2006.djvu

Год: 2000-2016
Автор: Разные
Издательство: Разные
Количество страниц: много
Формат: pdf, djvu, chm, iso
Язык: русский, английский
Размер: Part 1 — 1,95 GB, Part 2 — 1,95 GB, Part 3 — 1,89 GB (3% восст.)

radiohata.ru

Микроконроллеры: краткий обзор — DRIVE2

Первый микроконтроллер

Перый микроконтроллер появился на свет в 1976 году, через 5 лет после создания первого микропроцессора. Это была микросхема фирмы Intel, получившая имя 8048.
Помимо центрального процессора, на кристалле находились 1 КБайт памяти программ, 64 байта памяти данных, два восьмибитных таймера, генератор часов и 27 портов ввода/вывода.
Микроконтроллеры семейства 8048 использовались в игровых консольных приставках Magnavox Odyssey, в клавиатурах первых IBM PC и в ряде других устройств.
Существует также мнение, что первым микроконтроллером был 4-х pазpядный TMS1000 от Texas Instruments, котоpый содеpжал ОЗУ (32 байта), ПЗУ (1К), часы и поддеpжку ввода-вывода, что позволяло считать его именно первым микpоконтpоллеpом. Выпущенный в 1972 году, он имел новую по тем временам возможность — добавление новых инструкций.

8051

Следующий микроконтроллер Intel 8051, выпущенный в 1980 году, стал поистине классическим образцом устройств данного класса. Этот 8-битный чип положил начало целому семейству микроконтроллеров, которые господствовали на рынке вплоть до недавнего времени.
Аналоги 8051 выпускали советские предприятия в Минске, Киеве, Воронеже, Новосибирске, на них выросло целое поколение отечественных разработчиков.
Большинство фирм производителей микроконтроллеров и сегодня выпускают устройства, основанные на этой архитектуре. Среди них Philips, Atmel, Dallas, OKI, Siemens — можно перечислить более полутора десятков имен. Но 51-е семейство постепенно сдает свои позиции более молодым и совершенным микроконтроллерам.

Motorola и Zilog

Другими яркими представителями восьмиразрядных микроконтроллеров явились изделия компаний Motorola (68HC05, 68HC08, 68HC11) и Zilog (Z8).
Motorola длительное время не предоставляла средств, позволяющих дешево и быстро начать работать с ее контроллерами, что явно не способствовало их популярности у некорпоративных разработчиков. Однако стоит заметить, что за рубежом микроконтроллеры от Motorola занимают лидирующее положение на рынке. В нашей стране их популярность не очень высока, возможно, еще в силу отсутствия достаточного количества доступных учебных материалов и средств разработки.
Микроконтроллеры фирмы Zilog, основанной бывшими сотрудниками Intel, еще недавно казавшиеся столь многообещающими, не выдержали гонки в стремительно развивающемся секторе рынка, и сегодня система команд Z8 выглядит достаточно устаревшей.

Microchip

Первые значительные перемены произошли с появлением PIC-контроллеров фирмы Microchip. Эти чипы предлагались по рекордно низким ценам, что позволило им в короткий срок захватить значительную часть рынка микроконтроллеров. К тому же кристаллы от Microchip оказались не уступающими, а нередко и превосходящими микроконтроллеры х51 по производительности и не требовали дорогостоящего программатора.
Вместе с контроллерами появились дешевые комплекты PICSTART, содержащие все, что было нужно для того, чтобы, не имея ни средств, ни навыков работы с PIC-контроллерами, быстро создать и отладить на нем продукт.
Эти микроконтроллеры имели хорошие порты, но все остальное было сделано весьма неудобно. Архитектура оставляла желать лучшего, система команд была крайне ограничена. Тем не менее, PIC-контроллеры остаются популярными в тех случаях, когда требуется создать недорогую систему, не предъявляющую высоких требований по ее управлению.
Обзор различных семейств микроконтроллеров PIC можно посмотреть здесь — ru.wikipedia.org/wiki/PIC

Scinex

На волне успеха PIC-контроллеров появились очень похожие на них изделия фирмы Scinex. Они обладали у

www.drive2.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *