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

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


Как микроконтроллеры завоевали мир
Архитектура 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 МГц, интерфейсы для подключения видеоматрицы и поддержку динамической памяти.

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

Комментарии (212)


  1. dmitrmax
    03.04.2019 23:52
    +3

    Что вы так носитесь с этой защитой кода? В 95% девайсов прошивка производителя нужна только для демонстрации возможностей и proof of concept. А дальше надо открывать спеки на железо и давать это сообществу. Они напишут такой код, что будет работать и обновляеться, когда уже самой компании не станет.


    1. progchip666 Автор
      04.04.2019 00:15
      +1

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

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


      1. naviastro
        04.04.2019 01:06
        +3

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


        1. progchip666 Автор
          04.04.2019 01:38

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


      1. Tanner
        04.04.2019 01:16

        Даже в секторе IoT можно получить много сюрпризов, оставив ПО открытым.
        Про security through obscurity слышали?


        1. progchip666 Автор
          04.04.2019 01:38

          Очень спорная концепция.


          1. naviastro
            04.04.2019 02:00

            Оно порицается для универсального применения (а-ля залепить жвачкой текущий радиатор), но может иметь ограниченный положительный эффект в частностях. Например, просто зная версии ядра/библиотек можно уже получить в руки хорошую отправную точку, даже не имея физического доступа к устройству (в т.ч. удалённого). А, вот девайс, залитый правильным компаундом может повысить не только информационную безопасность, чем не security through obscurity))


            1. progchip666 Автор
              04.04.2019 07:36
              +1

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


      1. dmitrmax
        04.04.2019 01:52
        +2

        Различные медицинские приборы и прочая узкосегментая девайсщина не считается — там делайте, что хотите. Я говорю о массмаркете. Посмотрите, например, во что развилась возможно прошивать роутеры. И как стагнирует экосистема IP-камер на чисетах Hi 35xx, на которых (у всех вендоров) стоит одна и та же китайская убогая, кривая и косая прошивка ужасного качества. Конечно, на Linksys WRT54G в своё время спеки никто не открывал, но помогла «стандартность» железа. А вот с IP-камерами немного сложнее, так как интерфейс с матрицей и с хардварными кодеками вообще негде посмотреть. Открой спеки на это железо и сообщество бы в миг написало нормальную прошивку и камеры бы разлетались как горячии пирожки. Аналогично дело обстоит со всяким IoT'ов для умного дома. Сплошной vendor lock in и довольно недолгий цикл поддержки. И ведь умный дом никто из потребителей не хочет делать так, чтобы каждые два года его выкидывать и ставить новый.


        1. progchip666 Автор
          04.04.2019 10:58

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


      1. aakolov
        06.04.2019 14:54

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


        1. Am0ralist
          06.04.2019 15:49

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


  1. progchip666 Автор
    04.04.2019 00:19

    Как интересно идёт голосование! Не ожидал что 8 битники получат перевес. Правда с учётом того, что я сильно сегментировал ARM по ядрам, они всё таки пока впереди, но с минимальным перевесом.


    1. quwy
      04.04.2019 01:25
      +3

      8 битники получат перевес

      Не в последнюю очередь благодаря приятным для DIY корпусам (включая тот самый).


      1. 8street
        04.04.2019 09:04

        С корпусами как раз проблем нет с появлением переходников QFP-DIP и аналогичных. Плюсом, на этих переходниках есть вся необходимая комплектуха. Популярность 8-битных МК вызва Ардуино сообществом, где они и применяются, в основном.


        1. progchip666 Автор
          04.04.2019 09:22

          Для того чтобы эти переходники использовать надо ещё LQFP паять научиться. Некоторых это пугает. Зачем напрягаться.
          Тем не менее думаю фактор Ардуино таки перевешивает. Правда большинство любителей этой платформы оперирует на уровне плат и редко что-то самостоятельно на микронтроллерах собирает.


          1. SamaRazor
            04.04.2019 14:34
            +1

            LQFP все-таки не BGA, не так страшен черт как его малюют. Относительно легко управиться почти любым паяльником и хорошим флюсом/припоем.


            1. progchip666 Автор
              04.04.2019 14:40

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


              1. BigBeaver
                05.04.2019 07:56

                Можно тупо канифолью.


                1. progchip666 Автор
                  05.04.2019 08:09

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


                  1. BigBeaver
                    05.04.2019 08:19

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


        1. Andy_Big
          04.04.2019 09:40

          Ардуины там выделены в отдельный пункт :)
          А переходники — так какая разница паять QFP на переходник или сразу на плату?


          1. Alexeyslav
            04.04.2019 10:02

            Разница в том что переходник делается на производстве с более тонкими технологическими нормами, а плата куда вставляется контроллер делается в домашних условиях где проблемы начинаются уже с дорожек 0.4мм и провести дорожку между выводом контроллера с шагом 2.54мм/1.27мм и 0.5мм огромная разница.
            Проблема не впаять контроллер в плату, а изготовить ту самую плату в домашних условиях.


            1. Andy_Big
              04.04.2019 10:23

              Да вроде дорожки 0.3 мм с промежутком 0.2 мм давно уже не проблема даже при лазерно-утюжном изготовлении, не говоря уж о фоторезистивном :)
              А проводить дорожки между выводами QFP не каждое производство позволит. И если вдруг возникает такая необходимость, то явно имеются какие-то проблемы с проектированием платы в целом, а не с ограничениями домашнего изготовления.


              1. progchip666 Автор
                04.04.2019 10:54

                Вот смотрите. Рекомендованная ширина площадки для LQFP 0.3 мм, шаг 0.5 мм. Чтобы провести дорожку не уложимся даже в нормы 0.1 мм ширина, 0.1, расстояние между дорожкой и контактной площадкой, поскольку поскольку у нас всего 0.2 мм остаются. А там ещё вопрос маски вылезет на поверхность.
                Китайцы конечно сделать смогут, а вот тот же Резонит уже вряд ли. В таких ситуациях гораздо лучше перейти на четырёх слойку и она обойдётся дешевле чем двухслойка, которая позволяет творить такие чудеса! При массовом производстве плат сегодня четырёхслойка без извращений стоит всего процентов на 20 дороже двухслойки с одинаковыми нормами допуска.
                В последнем проекте очень хотелось поставить BGA чипы с шагом 0.5 мм, но крепко подумал отказался. Вручную сэмплы спаять сложно, проверить качество пайки невозможно, отлаживать плату крайне неудобно. Скрипя сердцем установил таки LQFP 64 и перекинул несколько компонентов на вторую сторону платы. Зато плату без проблем сделали в Резоните. Это был прототип, если дойдёт до серии ещё подумаю…
                Кстати, что легко можно делать даже в утюжной технологии — пускать проводники по углам LQFP, для 64 нового корпуса и более легко проходит по три проводника.


                1. Andy_Big
                  04.04.2019 10:59
                  +1

                  Так это Вы не меня уговаривайте, а того, кому я отвечал :) Я-то написал то же самое — и что между выводов QFP дорожки не стоит пускать даже при нормальном производстве плат, и что утюжная технология позволяет QFP без особых трудностей :)


                1. BigBeaver
                  05.04.2019 08:04

                  Резонит спокойно делает 0.1мм зазоры.

                  При массовом производстве плат сегодня четырёхслойка без извращений стоит всего процентов на 20 дороже двухслойки с одинаковыми нормами допуска.
                  В Резоните при прочих равных цена пропорциональна числу слоев.


                  1. progchip666 Автор
                    05.04.2019 08:39

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


                    1. BigBeaver
                      05.04.2019 08:49

                      Коэффициент 1.5. Ни каких требований к выкупанию всей закотовки нет (но могут быть при толстой фольге, нестандартнома материале и тд).


                      1. progchip666 Автор
                        05.04.2019 09:54

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


                        1. BigBeaver
                          05.04.2019 10:27

                          Ну я не знаю деталей вашего заказа. Пока не очевидно, что дело в допусках.

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


                          1. progchip666 Автор
                            05.04.2019 11:53

                            Последний заказ мне без всякой кнопочки запустили без оплаты, поскольку он менее чем в 5000 уложился и вопросов технологов к нему не было.
                            Но дальше начался ад. Сначала они подняли визг, что я не указал реквизиты плательщика, хотя совершенно не понятно какого чёрта им они нужны, если это частное лицо. Я никогда ранее их не указывал и всё работало. Потом они не включили в стоимость заказа стоимость доставки, хотя раньше всегда по умолчанию включали. Потом они зачем-то заменили лицо, указанное мной в адресе доставки на ФИО плательщика, причём без предупреждения. В итоге, в место того, чтобы доставить в ближайший постомат заказ в Самаре, его доставили почему — то в деревню под Самарой, хотя адрес был указан точно и полно вплоть до индекса! Пришлось названивать ругаться и в результате заплатить более 1000 рублей за доставку платок, общей площадью менее двух квадратных дециметров! Процесс логистики в России разваливается буквально на глазах, даже у ранее уважаемых мной компаний. Резонит не единственная в этом списке.


                            1. BigBeaver
                              05.04.2019 13:44

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


                              1. progchip666 Автор
                                05.04.2019 13:54

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


                                1. BigBeaver
                                  05.04.2019 15:06

                                  Ну. Раньше галочка «запускать без оплаты» стояла по дефолту в срочном. Сейчас, вроде, снята.

                                  После смены партнера мне стали привозить за 1 день, чему я очень рад.


                                  1. progchip666 Автор
                                    05.04.2019 16:04

                                    А мне за одну неделю, с огромной кучей потраченных нервов и в два раза дороже


                                    1. vvzvlad
                                      06.04.2019 22:26
                                      -1

                                      И почему-то косяки ТК вы считаете за косяки резонита.


              1. Alexeyslav
                04.04.2019 11:59

                Проблема на производстве разрешается многослойностью, с ЛУТ-ом в домашних условиях уже двухслойная это лишний напряг, а там ещё переходные отверстия добавляют.


          1. roboter
            04.04.2019 11:49

            Я до этого пункта даже не дочитал :)


        1. quwy
          04.04.2019 18:27
          +1

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


      1. evocatus
        04.04.2019 17:04

        Есть такая штука как панельки.
        Например: www.symmetron.ru/suppliers/wells


        1. quwy
          04.04.2019 18:35

          Поколонники STM32 постоянно напирают на его низкую цену. Сколько такая панелька добавит к стоимости контроллера? А к размеру на плате?

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


          1. Andy_Big
            04.04.2019 18:53

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


            1. progchip666 Автор
              04.04.2019 19:02

              Лёгкость монтажа(да и то когда не имеешь навыка) — только для ручного монтажа, даже на вручную расставляя корпуса, а потом паяя их феном или ещё лучше в печке SMD корпуса уже проще монтировать


              1. Andy_Big
                04.04.2019 21:09

                Конечно для ручного. Даже больше — для очень неопытного ручного :)


              1. quwy
                05.04.2019 15:34

                ещё лучше в печке

                Чего мелочиться, давайте сразу волной паять. Делов-то на пять копеек.

                Поймите же, речь про DIY, а это, если немного утрировать, — паяльник на 40 ватт, припой ПОС-61 прутком и сосновая канифоль в баночке. Какие печки, о чем вы вообще?


                1. progchip666 Автор
                  05.04.2019 16:08

                  Даже к DIY люди совершенно по разному подходят. Некоторые вообще в результате превращают хобби в конце концов в бизнес.


                1. Andy_Big
                  05.04.2019 16:13

                  речь про DIY, а это, если немного утрировать, — паяльник на 40 ватт, припой ПОС-61 прутком и сосновая канифоль в баночке

                  Это уже какой-то случайный DIY и речь уже будет идти не о разработке, а о повторении — взять ардуину, припаять к ней на проводках остальное как показано в ролике на Ютубе :) Тогда и панельки не востребованы и статья эта не для таких людей.


            1. quwy
              05.04.2019 15:27

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

              Вот именно поэтому восьмибитники и лидируют в опросе.

              В DIY обычно нет такого понятия как «прототип» (если не считать поделки на беспаечных экспериментальных платах), есть первое и часто единственное устройство, которое должно поддаваться легкой перепрошивке без геморроя с разводкой ISP-интерфейса и подбора пинов для несовместимых с ним нагрузок.

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

              DIP дороже

              Переходник гоооораздо дороже выйдет.

              DIP съедает больше места

              Тот же аргумент.

              У DIP нет преимуществ кроме легкости монтажа

              Неправда. Панельки для DIP никоим образом не влияют на размер платы, не требуют изменения разводки, но позволяют вынуть контроллер и залить в него новую прошивку за две минуты. Это гигантское преимущество.


              1. Andy_Big
                05.04.2019 16:27
                +1

                В DIY обычно нет такого понятия как «прототип»

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

                Он просто не нужен.
                Панельки для DIP никоим образом не влияют на размер платы

                Посмотрите на плату на КДПВ этой статьи и представьте на ней корпус DIP на 40 ног. Влазит? И это на 40 ног, а не на 64, как у микроконтроллера на фото.
                позволяют вынуть контроллер и залить в него новую прошивку за две минуты

                Вот прямо сейчас у меня рядом лежит отлаживаемая плата, на которую я заливаю прошивку за 3 секунды вообще не прикасаясь к ней. И отлаживаюсь в рилтайме, выполняя по шагам, останавливая программу на нужных строках, видя вживую все переменные и регистры. Вот это — гигантское преимущество. В панельки (обычные для DIP) — это костыль, когда ничего другого не остается.
                А такие панельки как по ссылке выше… Вы в курсе цен на такие панельки для QFP? Они совершенно не для DIY.


                1. progchip666 Автор
                  05.04.2019 19:44

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


                  1. Andy_Big
                    05.04.2019 20:13

                    Конечно ничто не мешает :) Я так и делаю. Но перед заказом все же собираю прототип, на котором проверяю основной функционал. Иногда это, как я и писал, куски старых плат с кучей проводов.

                    А иногда чуть аккуратнее:

                    Не обращайте внимания на состояние меди — этот отладочный прототип уже с год валяется в ящике :)


            1. Roman_Popov
              06.04.2019 00:19

              Хватит плодить байку про легкость монтажа в дырки. Я сам на несколько лет откладывал переход на SMD из-за этого заблуждения. Но как показала практика это посильно даже 10-летнему ребенку. Даже со спиртоканифолью и паяльником ЭПСН SMD паяются быстрее и проще этих нескончаемых ножек.


              1. Andy_Big
                06.04.2019 01:02

                А мне-то Вы зачем это пишете? :)
                Я наоборот за поверхностный монтаж — QFP, QFN. Обычным паяльником я запаиваю десяток TQFP-64 минут за 8, раза, наверное в два-три быстрее, чем паять DIP в пересчете на один вывод :)


                1. progchip666 Автор
                  06.04.2019 20:53

                  Мастер! Я так быстро не умею.


                  1. Andy_Big
                    06.04.2019 21:30
                    +1

                    Ну так это сразу десять плат в одной панели, не нужно тратить время на переворот каждой платы отдельно :) Больше всего времени занимает прицеливание с прихваткой одного угла. А потом сама пайка — секунды по 3-4 на сторону.


                    1. progchip666 Автор
                      06.04.2019 21:36

                      Ну вот именно с прихваткой у меня и проблемы. Установил точно, но когда начинаешь «прихватывать» одну сторону чип съезжает. Не хватает твёрдости рук.


                      1. Andy_Big
                        06.04.2019 22:24
                        +1

                        Я не паяю сразу всю первую сторону. Сначала прихватываю только пару выводов одной стороны в углу, который выровнял, а потом уже паяю всю противоположную сторону, слегка подправив ее при необходимости.
                        Хотя уже с пол-года не занимался этим в таких объемах, после того как купил PnP-станок и трафаретный принтер :)


                        1. progchip666 Автор
                          06.04.2019 22:49

                          Я в принципе тоже стараюсь сначала с двух сторон прихватывать Про станки интересно интересно. В Китае брали? Ссылками не поделитесь?


                          1. Andy_Big
                            06.04.2019 23:34

                            Да, брал в Китае, вот тут — item.taobao.com/item.htm?id=525680982287
                            Взял самый дорогой вариант TVM802BX из-за встроенного компьютера, то есть не нужно искать где-то отдельный комп, занимать им место. Ну и в дальнейшем выяснилось еще одно его преимущество — у него шаговые сервоприводы, а не просто моторы. То есть с энкодерами на валах для обратной связи по положению. В более младших моделях стоят двигатели без энкодеров.
                            Я делал на него обзор, если интересно — mysku.ru/blog/taobao/66376.html


                            1. progchip666 Автор
                              07.04.2019 08:26

                              крутая штука


          1. evocatus
            04.04.2019 22:38
            +1

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

            P.S. Вот вам ARM Cortex-M0 в DIP-корпусе.
            И вообще, много интересного есть.


            1. quwy
              05.04.2019 15:13

              акие панельки исключительно для макетных плат

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

              Вот вам ARM Cortex-M0 в DIP-корпусе

              Так это же не STM, пацаны не поймут.


              1. Andy_Big
                05.04.2019 16:28

                ISP создает проблемы в разводке, да и с подключенными цепями совместим далеко не всегда

                А какие проблемы у Вас с разводкой двух линий? И зачем совмещать их с какими-то цепями?


                1. quwy
                  07.04.2019 04:39

                  Если эти ножки нужны как GPIO, то появляются варианты.


                  1. Andy_Big
                    07.04.2019 05:33

                    Например, взять корпус с бОльшим количеством выводов :)


    1. HardWrMan
      04.04.2019 06:15

      Жалко, что можно выбрать только 1 устройство, потому как я бы выбрал половину указанных пунктов. И это реальное положение моих дел.


      1. progchip666 Автор
        04.04.2019 07:47
        +1

        Очень хорошо, понимаю вас, коллега. Надеюсь в ближайшее время написать статью, посвящённую выбору микроконтроллера. Мне в последнее время тоже приходится часто мигрировать и диву даёшься к каким хитростям прибегают маркетологи, чтобы заставить нас вложить в проект более дорогой чип! В результате, когда выбираешь камень для серийной разработки, приходится просматривать нескольких производителей, очень внимательно вчитываться в даташиты на предмет наличия тех или иных функций ИМЕННО В ЭТОМ ЧИПЕ и выбирать между разными семействами Cortex. Иногда бывает дешевле перейти в более старшее семейство, потому что в младшем нужная тебе функция вроде бы и есть, но только в топовых дорогих чипах с большим количеством выводов…


  1. Amomum
    04.04.2019 01:56
    +1

    Не возьмусь судить о том, насколько статья понятна человеку, далекому от эмбеда, поэтому лучше придерусь :)


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

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

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


    Физический доступ к девайсу это очень серьезный аргумент при взломе, тут нужны какие-нибудь более серьезные процы с сертификацией, типа ST53G.


    1. Andy_Big
      04.04.2019 04:40
      +1

      При отключенном отладочном интерфейсе и включенной защитой от чтения взлом становится достаточно затруднительным делом. По третьей ссылке описан вообще какой-то редкостно удачный случай :)


      1. HardWrMan
        04.04.2019 06:19

        Согласен. 100% защиты не бывает: один человек сделал а второй сломает. Вопрос стоит в том, чтобы повысить трудоёмкость и стоимость взлома настолько, чтобы покупать оригинал стало заметно выгоднее для хотя-бы 80% потенциальных покупателей. Потому как тот, кто оплатит дорогой взлом вряд-ли будет сильно демпинговать, а пока этот взлом будет длиться рынок наш.


        1. progchip666 Автор
          04.04.2019 08:02
          +1

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

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


        1. Andy_Big
          04.04.2019 10:55
          +1

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


    1. progchip666 Автор
      04.04.2019 07:56

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


      1. amartology
        04.04.2019 14:08

        Бизнесы по взлому микроконтроллеров вполне себе существуют и сегодня. Не всегда написать программу дешевле. Иногда надо не взломать программу, а обеспечить совместимость контрафакта с «родными» изделиями. Разное бывает.


        1. progchip666 Автор
          04.04.2019 14:43

          Возможно вы и правы, особенно если речь идёт о давно устаревших 8 битных моделях.


          1. amartology
            04.04.2019 14:50

            Вскрытие прошивки STM32F1 стоит в пределах пары тысяч евро. Вроде бы не давно устаревшие)


            1. progchip666 Автор
              04.04.2019 19:06

              За три можно несложный проект заказать целиком. Смысл? Если только чтобы ключи своровать.


              1. amartology
                04.04.2019 19:13

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


  1. Andy_Big
    04.04.2019 04:43
    +1

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

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


    1. HardWrMan
      04.04.2019 06:23

      Более того, это же делать надо когда готовишься ко сну.


      1. Andy_Big
        04.04.2019 09:57

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


      1. progchip666 Автор
        04.04.2019 10:19

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


        1. Andy_Big
          04.04.2019 10:44
          +1

          Сейчас работаю над программой для одного устройства на STM32L151 с автономным питанием, уделил довольно много внимания энергопотреблению. Правда, я кладу контроллер в спячку в режим STANDBY, когда и без моих усилий выводы оказываются «подвешенными», а периферия отключенной. Потребление в итоге получается около 65 мкА с внешней периферией — аппаратным контроллером питания, солнечной панели и заряда аккумулятора, цифровым барометром, SPI-флеш, счетчиком (PCF8583 в режиме подсчета импульсов) и OLED-экранчиком. Из них около 35 мкА жрет китайский экранчик и около 28 мкА жрет менеджер питания на «рассыпухе».


          1. progchip666 Автор
            04.04.2019 11:46

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


            1. Andy_Big
              04.04.2019 12:49

              хороший результат, отлично поработали коллега

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

              У меня тоже в некотором смысле беспроводное решение — с использованием GSM-модема. Но с потреблением модема решается просто — ему рубится питание когда он не нужен :) У девайса задача просыпаться через заданные промежутки времени для сбора данных с кучки датчиков, а через более длительные промежутки времени просыпаться и отправлять собранные данные через модем. Если не получилось отправить — сохранить и передать в следующем сеансе связи вместе с новыми данными, терять накопленные данные недопустимо.
              до последнего времени как раз STM32L151 юзали

              А на что перешли и по каким причинам?
              купить во такого монстра

              Помню статью о нем :) Если не секрет — сколько такая штука стоит? :)


              1. progchip666 Автор
                04.04.2019 14:21

                Называется NRF6707, как ни странно брал на алиэкспрессе где то в районе 110 долларов, поскольку на маусере в Россию поставлять не захотели, не знаю уж как сейчас с этим. А китайцы прислали без проблем.
                от STM32L151 отказываться не собираемся, но в последнем проекте потребовался аппаратный интерфейс к SD карте, SPI медленно работает и не со всеми картами. А иногда наоборот что-то надо бывает попроще и подешевле — был эксперимент с STM32L031


                1. Andy_Big
                  04.04.2019 14:25

                  Спасибо :)


                1. mpa4b
                  04.04.2019 15:17

                  SPI медленно работает и не со всеми картами.

                  А можно вот тут поподробнее? С какими не заработало?


                  1. progchip666 Автор
                    04.04.2019 15:29

                    Сорри, данная информация со слов, чьих не помню, но читал в форумах неоднократно, я лично только через специальный интерфейс запускал, который квадро SPI. Несколько карт пробовал от 4 до 16 гиг — работало нормально.


                  1. donbob
                    05.04.2019 11:43

                    Насчёт карт не могу сказать, но по скорости передачи SPI допускает тактирование до 20 МГц, I2С около 1.5 МГц, кроме того необходимо обслуживать протокол, которого у SPI просто нет, так как невозможны коллизии.


                    1. Alexeyslav
                      05.04.2019 13:45

                      А разве карты работают по I2C протоколу? Помоему ни одной такой не видел. Отдельные EEPROM бывают, но там не ставится требование максимальной скорости.
                      Обычно карточки вроде SD/TF или MMC работают по упрощённому SPI интерфейсу или 4*SPI с тактовой частотой до 45Мгц.
                      Для режима single-SPI скорость тактовая ограничена, поэтому кроме того что карта работает всего лишь в один поток из 4-х так ещё и медленней в итоге реальная скорость обмена не больше 1-2мб/сек.
                      Не представляю как такие карты обеспечивают режим работы класса U3? 30Мбайт/сек на запись гарантированно, скорость интерфейса должна быть минимум 60Мгц на 4 канала, или там >30Мгц но защёлка срабатывает и по фронту и спаду тактового сигнала? или многофазный тактовый сигнал? Дальше только SATA интерфейс встраивать прямо в карту или USB3.1 но это новый виток войн интерфейсов…


                      1. mpa4b
                        05.04.2019 15:10

                        SD-карты работают по своему протоколу, который конечно похож на SPI но ни разу не SPI. SPI поддерживается по стандарту, если карте послать спецкоманду в начале инициализации. При этом в режиме SPI нет проверки CRC на переданные данные ну и скорость ниже. Ещё есть особенность, что вообще любое начало работы с SD-картой должно происходить на очень низкой частоте (что-то вроде 500кгц), и только после начальной инициализации можно поднимать.

                        Собственно и мой вопрос насчёт 'какие-то карты не работают с SPI' был вызван именно этим — может, из-за того, что не подали низкую частоту вначале инициализации. Ну а может, у китайцев появились 'чюдесные' нестандартные карты, которые «SPI-illiterate» :)


            1. igrushkin
              04.04.2019 14:06

              Это PPK?


          1. HardWrMan
            04.04.2019 11:46

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


            1. Andy_Big
              04.04.2019 12:50

              Надо было отключать ему питание :)


              1. HardWrMan
                04.04.2019 13:00

                Шутку понял. (с)


                1. Andy_Big
                  04.04.2019 13:04

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


    1. progchip666 Автор
      04.04.2019 08:08
      +1

      У меня был случай, когда мне принесли простой электросчётчик на основе простенького MSP, который не проходил тест на ЭМС. После долгих разбирательств и оптимизации трассировки удалось выяснить что дело было в висящей в воздухе ножке. Высоковольтный импульс приводил к сбросу устройства, причём только тогда, когда оно находилось в режиме низкого энергопотребления. Замкнул вывод на корпус и «вылечил».


  1. oam2oam
    04.04.2019 06:23

    Как-то не согласен, что среди Cortex-M7 лидирует не STM. А как же замечательнейший stm32h750 ?? И это чудо на 400 МГц и, конечно, с непревзойденным фаршем от STM (в том числе с HRTIM!) всего за $2.5! Ну просто сказочно дешево… Причем 1024 RAM! Как говорится, ну что еще-то надо? Кстати, и jpeg-кодек есть и… да что я пишу, читайте даташит.


    1. progchip666 Автор
      04.04.2019 08:15

      Не знал про этот вариант, надо будет присмотреться.
      Возможно причина моих пробелов в этом:

      весьма характерная строчка сегодня для региона России, но редкая для Евросоза, где я сейчас нахожусь


      1. Jef239
        04.04.2019 14:46

        STMH7 есть в двух вариантах. Подороже — 1 мег ОЗУ, 2 мега flash. Сильно подешевле — 1 мег ОЗУ, 128К flash. Основное достоинство H7 (и F7) даже не ОЗУ, а аппаратный FPU двойной точности. У нас GNSS (GPS), расчет больших матриц. И аппаратный FPU двойной точности для нас — обязательная вещь.

        Я бы сказал, что F7/H7 — это такой особый класс SoC — замена Linux-систем. То есть Вместо 3х чипов для linux — ставим один для FreeRTOS. Мы, лично, получили большой кайф при избавлении от linux.

        Поэтому мой совет — если у вас linux, но сама задача в H7 влезает — подумайте, нужен ли вам этот огромный монстр?


        1. mpa4b
          04.04.2019 15:25

          И аппаратный FPU двойной точности для нас — обязательная вещь.

          А работа с двумя флоатами на одно число вот как-то так не спасала?


          1. Jef239
            04.04.2019 16:17

            Мы пробовали на STM32F4 (правда не по этой статье) — скорость практически такая же, как при эмуляции. Понятно, что это зависит от отношения скоростей FPU и CPU.


            1. mpa4b
              05.04.2019 15:16

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


              1. Jef239
                05.04.2019 16:58

                А какая разница? Метод не даст выигрыша в разы, всего лишь десяток процентов. Итоговый вывод — при одинаковой тактовой 32битный FPU не быстрее CPU для обработки double. Ниже уже привели ссылку с ровно тем же выводом. Иными словами — если вам нужно ускорение в разы, то 32битный FPU вам не поможет.

                Откопал в почте наши измерения
                С оптимизацией "-Os":
                — Cholesky using float pair
                Cnt=10000 Neg=0 SumTime=10.9s AveTime=1.0ms

                Cholesky using double
                Cnt=10000 Neg=0 SumTime=6.5s AveTime=657.5mks

                Gauss_TT using float
                Cnt=10000 Neg=0 SumTime=34.2s AveTime=3.4ms

                Gauss_TT using double
                Cnt=10000 Neg=0 SumTime=19.8s AveTime=1.9ms
                max err Cholesky = 0.000000077
                max err Gauss_TT = 0.000000000
                — С оптимизацией "-O3":
                — Cholesky using float pair
                Cnt=10000 Neg=0 SumTime=6.2s AveTime=629.1mks

                Cholesky using double
                Cnt=10000 Neg=0 SumTime=6.5s AveTime=656.5mks

                Gauss_TT using float
                Cnt=10000 Neg=0 SumTime=19.5s AveTime=1.9ms

                Gauss_TT using double
                Cnt=10000 Neg=0 SumTime=19.5s AveTime=1.9ms
                max err Cholesky = 0.000000077
                max err Gauss_TT = 0.000000000


          1. Fox_Alex
            05.04.2019 01:16

            В рассылке у Джека Гансла недавно пробегали тесты этих FPU, можете почитать. www.ganssle.com/tem/tem369.html


            1. mpa4b
              05.04.2019 15:15

              Какие-то странные тесты, не приведён код (в т.ч. дизасм того, что нагенерил компилятор). Иногда кажется, что тупо неправильно настроен компилятор или либы — например sqrt похоже что шёл в эмулирующую библиотеку, вместо использования команды процессора. Что, впрочем, неудивительно, если для корня использовалась sqrt(), которая берёт и выдаёт даблы, в то время как для single->single надо использовать sqrtf()

              Ну и ещё совершенно ясно, что на m4f даблы будут эмулироваться, смысл их тестировать? Double-word arithmetic даёт максимальную точность, равную кол-ву бит мантиссы в двух флоатах, т.е. 23*2=46 бит, в то время как точность даблов — 53 бита, откуда следует, что эмулировать даблы при помощи double-word arithmetic нельзя.


              1. Fox_Alex
                05.04.2019 17:28

                Отмотайте пару выпусков назад, там условия теста вроде были. Я правда особо не вчитывался, в текущих моих проектах нет ни одного стма с FPU.


        1. progchip666 Автор
          04.04.2019 15:32

          У нас задачи проще, но требуют быстрого реагирования часто, максимум RTOS применяем


    1. clawham
      04.04.2019 10:31
      +1

      esp8266 имеет 80 кил оперативы, 160 мегагерц и прекрасно справляется с mp3 jpg и имеет вайфай на борту а стоит доллар в рознице на плате с антеннкой и флешкой на 4 мегабайта для кода. Почему вы её забыли а этого монстра нет? для иота esp более чем достаточная вешь… правда если бы было на неё полное описание и открытый SDK… ну и gpio мало но впринципе для многих задач решается внешним расширителем.
      Я же плотно засел на атмеги. Да они сейчас на китае в основном контрафакт но имея арсенал из 15 устройств в разработку которых потрачено много времени сил и денег — переход на армы пока не планируется даже просто потому что под арм уже двусторонняя плата нужна а это стоимость и проблема в том что и атмеги 328 нам хватает не то что за глаза — а просто выше крыши.


      1. mpa4b
        04.04.2019 10:41

        правда если бы было на неё полное описание и открытый SDK

        Вот поэтому, наверное, его и не все любят :)


      1. Andy_Big
        04.04.2019 10:48
        +1

        правда если бы было на неё полное описание и открытый SDK… ну и gpio мало

        То-то и оно :)
        под арм уже двусторонняя плата нужна

        Не совсем понял — как это внутренняя архитектура микроконтроллера влияет на количество слоев платы? :)
        атмеги 328 нам хватает не то что за глаза — а просто выше крыши

        Только стоит она как очень неплохой такой ARM, особенно в DIP-корпусе :)


        1. clawham
          04.04.2019 11:57

          мега в qfn у нас разведена в один слой, покупали партией в 1000 штук(для когото слезы а нам огопартия :) и тогда она вышла в районе 0.9 долара за штуку. армы на такой ценник только большими партиями, у популярных из них много ног и питания расположены так вырвиглазно что в один слой развести очень сложно.


          1. Andy_Big
            04.04.2019 12:59

            тогда она вышла в районе 0.9 долара за штуку. армы на такой ценник только большими партиями, у популярных из них много ног

            STM32F030C8T6 — 0.73$ за штуку в партии от 750 штук (в Компэле), 64/8 кб флэш/оперативка, LQFP-48 :)
            STM32F030K6T6TR — 0.48$ за штуку в партии от 960 штук (в Компэле), 32/4 кб флэш/оперативка, LQFP-32 :)


          1. progchip666 Автор
            04.04.2019 14:27

            Если честно я не понимаю зачем упираться в однослойку? Неужели при партиях в 1000 штук вы применяете утюжную технологию? Закажите двухслойки в Китае, на такой партии разницы с однослойками вы практически не почувствуете, но мучаться не придётся. Мы применяем ЛУТ только когда надо очень быстро проверить какую нибудь спорную мысль на концепте. На двухслойных платах хотя бы землю с питанием можно нормально развести. На однослойках сильно упираться надо, особенно в случае если используете цифро-аналоговые цепи.


            1. clawham
              04.04.2019 14:36
              +1

              жоская конкуренция — очень нишевое решение. Лишний кварц с кондерами не могу позволить — калибрую частоту атмеги по внешнему сигналу каждый раз при включении :) двуслойка выходит реально дороже т.к. ни маски ни шелкографии на эту плату не применяем — пытаемся конкурировать по цене с китаем.
              0,9 это с доставкой — нас устраивает. Переход на принципиально другой камень на 3.3 вольта это сложно технически и программно и не обойдется без пары преобразователей 3.3-5 что уже недопустимая роскошь. Дада в 2019 году есть устройства которые не понимают 3.3/3.6 на входе на частоте 100 герц всего :) опять же цена.
              Конечно же когда встанет вопрос разработки нового устройства следующего в серии мы попытаемся прикинуть и впихнуть в арм какойто но это очень сложно на текущий момент не смотря на то что атмеги не производятся официально — атмель умер


              1. Andy_Big
                04.04.2019 14:43

                Переход на принципиально другой камень на 3.3 вольта это сложно и не обойдется без пары преобразователей 3.3-5 что уже недопустимая роскошь.

                Если это однонаправленные линии, то преобразователь — это транзистор с парой резисторов — это меньше одного рубля :)


                1. Gryphon88
                  04.04.2019 15:07
                  +1

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


                  1. Andy_Big
                    04.04.2019 15:43

                    Да, энергопотребление слегка пострадает, согласен :)


                1. progchip666 Автор
                  04.04.2019 15:20

                  Большинство микроконтроллеров ARM от ST толерантны к 5 вольтовому напряжения при питании от 3.3 вольт. Тоесть на вход можно соединять напрямую, на выход тоже, но если 5 вольтовому входу в вашем устройстве 3,3 вольта на входе недостаточно, можете выход ST в виде открытого коллектора сконфигурировать и к 5 вольтам подтянуть. И да, забыл написать для совсем экономных есть ещё клон ST, вроде вполне официальный
                  можете посмотреть вот здесь
                  По моим оценкам они стоят где то в два раза дешевле чем аналогичные производства STM, но простейших Cortex-M0 они не производят, только старенькие копируют.
                  Если важно низкое энергопотребление то не подойдут.


                  1. Roman_Popov
                    05.04.2019 17:02

                    А вот эти гигадевайсы это полный клон? В смысле инструментарий разработки и прошивки ровно тот же, что и у STM32?


                    1. progchip666 Автор
                      05.04.2019 20:19

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


                      1. Roman_Popov
                        06.04.2019 00:21

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


                        1. progchip666 Автор
                          06.04.2019 08:18

                          Да, видно у них старая технология производства, чипы с пониженным энергопотреблением ещё не освоили


                1. clawham
                  04.04.2019 16:25
                  +1

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

                  progchip666, Опять же мы не из России и потому есть проблемы определенные с логистикой.
                  Брак попадался и попадается… у нас есть уарт 38400 с другим кварцованным устройством. раньше никогда проблем небыло в том что атмега работает на внутреннем генератора. тест 0..+50 оно выдерживало. С конца прошлого года пошли приколы — партия с заниженной частотой, купили ещё партию — пришли все с завышенной частотой — сделал на этапе прошивки калибровку — проблема ушла… третья партия этого года мало того что в перемешку завышенные и заниженные так ещё и уход на полтора мегагерца(с 8ми) уже при +5 на корпусе вместо +25 а на +40 вообще мегагерц в плюс… тоесть дажде уарт уже ломался. Пришлось сделать онлайн-калибровку частоты по вот этому уарту — меряю програмно длину стартбита и подгоняю частоту OSCCAL под соответствие измеренной длины стартбита реальному значению. Костыль да но в общем-то и изящное решение — ноль внешних компонентов, ноль нагрузки на проц(раз в секунду промер 10 мсек в моменты простоя) и обьем кода мизерный. и никаких апаратных модулей дополнительно не используется — меряю уартом же на скорость 921600 без стартбита — тупо смотрю сколько бит в нуле до первого в единице — точности более чем хватает. опыты показывают что прекрасно теперь работает и при -20 и при +120 — никаких рассинхронов.
                  Ещё были приколы с собственно кварцевым генератором на другом устройстве — кварцы не стартовали ни в какую ни с обычными кварцами ни с гарантированно рабочими. решили эти процы пустить на другие платы без кварца.


                  1. progchip666 Автор
                    04.04.2019 17:05

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


                    1. Alexeyslav
                      04.04.2019 17:13
                      +1

                      Если они годами обходятся всего 5-ю моделями, на новые вероятно нет спроса. Скорей освободившееся время тратить уже на совсем другой продукт — выпечку булочек например.
                      А более технологичное изделие может потребовать оборудования которое окупится при таких объёмах лет через 100.


                      1. progchip666 Автор
                        04.04.2019 19:08

                        Почему нет :)


                  1. Alexeyslav
                    04.04.2019 17:10

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


                    1. clawham
                      04.04.2019 18:14
                      +1

                      в уарт шлется каждую секунду 4 посылки и потерять одну раз в 30 секунд при старте — не критично вообще. посылки шлет не наше устройство так что заставить его слать чтото другое — не вариант.

                      progchip666 эти платы это маленькая часть огромного обьема работ что мы делаем помимо собственно плат. На производстве пластика мы отыгрываемся но постоянно нужно менять формы этого пластика совершенствоваться и так далее при этом плата — не меняется ни физически ни програмно. Вот на эти эксперименты + содержание кружка юнного техника авиа и судомоделирования на бесплатных началах — вынуждает ужиматься с расходами по максимуму + по прибыли ну года два назад это был очень прибыльный бизнес, потом про это пронюхал китай и сейчас у нас каждые пару месяцев происходит прикол что наш прошлый кораблик уже выпускается китайцами и нам собственно надо уже чтото новее лучше бустрее делать. платы не меняются — есть 5 «категорий» если так можно сказать с разными платами и программами. а внутри категорий собственно очень много разных вариантов корабликов. Иногда выходит что новая модель пол года держится до подделок иногда и месяца не проходит а уже надо новые пресформы :)


                  1. Andy_Big
                    04.04.2019 18:18

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

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


                    1. clawham
                      04.04.2019 20:18
                      +2

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


              1. progchip666 Автор
                04.04.2019 14:50

                С одной стороны понятно, но мне кажется конкурировать с китайцами вообще не самый правильный бизнес. В общем если он налажен, то ваша стратегия понятно, вопрос стоит скорее о новых разработках.
                Но если идёт речь об экономии в несколько центов на плату… Шелкографией ясное дело можно пожертвовать. Маской — тут большой вопрос. Если ваши платы малы по размеру, а судя по косвенным признаком это так, то за счёт такой экономии выиграете вы меньше чем 5 центов за плату.
                Кстати, покупая у китайцев неофициально произведённые микроконтроллеры на брак не нарывались? Если нарывались, компенсацию удавалось вырвать?
                Ещё хочу заметить, если у вас постоянная потребность в одних и тех же чипах, в размере нескольких тысяч в год хотя бы, то можете обратиться к российским дистрибьюторам, реально защитить проект, сэкономить на этом 10 — 30 процентов, да ещё и товарный кредит получить!
                В прошлой жизни я работал пару лет Бренд Менеджером, знаю эту кухню не по наслышке. Так что переход на простейшие АРМы в новых изделиях может даже снизить издержки. ПО у вас не сложное как я понял, модификация вряд ли отнимет много сил и времени.


              1. Polaris99
                04.04.2019 18:18

                ATSAMC — можно питать от 5 Вольт, ядро — Cortex-M0+. Плюс крайне разумное распределение пинов в корпусе 5 на 5 мм. Из 32 пинов 22 можно использовать как GPIO даже при подключении кварца и отладки. Сами поставили по именно этой причине из-за экономии места на плате, сунуть преобразователи уровней было реально некуда, а вот CAN был нужен позарез, так что хотя бы уже по этой причине все Меги пролетают.


      1. progchip666 Автор
        04.04.2019 11:05

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


      1. Alexeyslav
        04.04.2019 13:15

        Камушек довольно противоречивый, хоть и тактовая частота у него 160Мгц реально добиться этого быстродействия невозможно в виду того что из разных сегментов памяти команды выбираются разное время, и толку от 160Мгц если ядро вынуждено ждать 10 тактов для выборки из медленной памяти? А быстрой памяти там кот наплакал и обычно она сильно занята. Можно многое, но с неочевидными ограничениями и приходится тасовать что где лучше всего держать или даже подгружать код по мере необходимости в SRAM.


  1. mpa4b
    04.04.2019 10:39

    А что добавит переход на Cortex-M4, кроме возросшей в пару раз цены?

    USB научился работать в режиме HOST

    Да что вы говорите? usb host появился ещё в f105 и f205.

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

    в два раза увеличилась максимальная тактовая частота
    с 2 до 1.7 вольт понизилось минимальное напряжение питания
    АЦП способно работать в два с половиной раза быстрее



    И какая связь между набором периферии (о котором как раз речь) и применённым в контроллере ядром процессора?

    По факту, очень похоже по стилю изложения на маркетолуха.


    1. progchip666 Автор
      04.04.2019 11:15

      Да что вы говорите? usb host появился ещё в f105 и f205.

      Не буду спорить, но я сравнивал конкретные модели, ОТG появился в тех же LPC вообще в незапамятные времена.
      И какая связь между набором периферии (о котором как раз речь) и применённым в контроллере ядром процессора?

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


      1. mpa4b
        04.04.2019 13:38

        Вот я это и пытаюсь сказать — что именно маркетолухи любят такие трюки и такой стиль изложения. А на самом деле никакой связи между 'кр00тым' ядром и богатой периферией нет, кроме искусственно заложенной маркетолухами при почёсывании в затылке 'а давайте новую серию замутим!'. Ну и к тому же проц M0+ не то чтобы прям уж сильно отличается от M0 без плюса.


  1. KonstantinSpb
    04.04.2019 12:30
    +2

    Ну вот в этом году ST выпустит STM32L5 серию со многими вкусняшками для защиты IP и anti-tamper фичами


    1. progchip666 Автор
      04.04.2019 12:52

      Нельзя объять необъятное, особенно в одной статье, она и так чересчур длинная получилась. Будем изучать… В принципе уровни защиты даже десяток лет назад разработанным микроконтроллеров меня более чем устраивает. А вот появление плеяды АРМов со сверхнизким потреблением очень радует. Пока только до L4 успели ручки дотянуться…


  1. Polaris99
    04.04.2019 13:53

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


    1. Andy_Big
      04.04.2019 14:12
      +1

      Не могли бы Вы конкретизировать?


      1. Polaris99
        04.04.2019 14:24
        +2

        1. Переходы от семейства к семейству мотивируются вещами, которых в природе нет, причем даже для очень полюбившихся автору STM32. Внимательнее нужно читать даташиты. Ну и о других производителях не забывать, а то смешно было местами.
        2. В описании периферии полно неточностей.
        3. Выводы о сравнении потребления 8-битников и 32-битников крайне спорные. Да, когда куча вычислений в int32 или с плавающей точкой, то да, есть смысл, когда же идет работа с периферией или просто дрыганье ногами, то эффективность ARM гораздо ниже заявленной, так что ни о каком преимуществе речи нет.
        И да, я работал и работаю как с 8-битниками, так и с АРМами, причем не от одного-двух производителей.


        1. Andy_Big
          04.04.2019 14:38
          +1

          Переходы от семейства к семейству мотивируются вещами, которых в природе нет

          1. Да, этот момент слишком обобщен и размыт, но не так категорично.
          2. Вижу только неточности, привнесенные в угоду краткости статьи и ее доходчивости для тех, кто не знаком с микроконтроллерами.
          3. Даже в работе с периферией ARM способен быть гораздо эффективнее большинства 8-битников за счет наличия DMA. Плюс умение управлять своей тактовой частотой во многих случаях очень хорошо помогает сэкономить энергию. Так что тоже не все однозначно и уж точно нельзя безапелляционно утверждать про «заблуждений и откровенной дезинформации».


          1. Polaris99
            04.04.2019 18:23

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


            1. Andy_Big
              04.04.2019 18:48

              DMA не для всех возможных режимов работы периферии доступна

              Да я и не говорил про все режимы. Даже более того — не для всех случаев он даст преимущество в скорости. Но «в среднем по больнице» наличие DMA все же способно значительно сократить время активности микроконтроллера.
              а уж в плане работы с битами ARM всегда проигрывает мелким контроллерам

              Можно конкретный пример? А то у ARM, например, есть даже команда BFI среди битовых операций, остальные битовые операции как-то вроде не сильно беднее, чем у тех же AVR.


              1. Polaris99
                04.04.2019 23:29

                Можно конкретный пример? А то у ARM, например, есть даже команда BFI среди битовых операций, остальные битовые операции как-то вроде не сильно беднее, чем у тех же AVR.

                И у Cortex-M0 тоже есть?
                А теперь сравните их по мощности с командами SBI/SBIC/SBIS из набора команд AVR. Там для операций с периферией мне не нужно ее читать, изменять и записывать, причем команды чтения и записи в ARM (LDR/STR), насколько я помню, не читают по адресу, нужно еще загрузить его сначала.
                Я не к тому, что AVR рвет ARM в клочья, упаси боже, просто это две разные архитектуры, и для достаточно большого класса приложений AVR может работать даже быстрее, особенно если речь идет о Cortex-M0 с невысокой тактовой частотой, которая еще и не используется полностью по причине медленно работающей флэши. Вот я сейчас ковыряю nRF51822 и понимаю, что он со своими 16 МГц работает медленнее даже банальной Mega128, потому как DMA де-факто почти и нет, а каждая операция с периферией требует гораздо больше телодвижений. Каждой задаче свой инструмент, а автор как-то очень свободно подменяет факты своими домыслами.


                1. Andy_Big
                  05.04.2019 00:36

                  И у Cortex-M0 тоже есть?

                  Нету, но Вы ведь без всяких оговорок объединили все ядра под одной аббревиатурой — «в плане работы с битами ARM всегда проигрывает мелким контроллерам» :)
                  Каждой задаче свой инструмент, а автор как-то очень свободно подменяет факты своими домыслами.

                  Ну, Вы-то со своими категоричными утверждениями еще более свободно подменяете понятие «в некоторых случаях» на «всегда» :)


                  1. Polaris99
                    05.04.2019 00:47

                    Еще раз — сравните BFI и SBI/SBIC/SBIS


                    1. Andy_Big
                      05.04.2019 02:31
                      +1

                      Да что Вы уперлись в эти битовые операции над выводами? Ручная работа с выводами — вообще достаточно редкая операция на фоне всего остального. Если, конечно, не эмулировать программно какой-то аппаратный интерфейс из-за убогости аппаратных возможностей 8-битника :)


                      1. Polaris99
                        05.04.2019 09:34

                        Резюме:
                        * битовые операции есть, но не у всех кортексов и только для регистров общего назначения
                        * DMA помогает не всегда и есть не у всех
                        * богатство периферии с одной стороны приводит к большему оверхеду с настройками
                        Вопрос:
                        Мы точно о преимуществах в работе с низким потреблением говорим?


                        1. Andy_Big
                          05.04.2019 10:30
                          +1

                          Другое резюме:
                          * бедность периферии заставляет дергать I/O, руками, хотя битовые операции с I/O чуть-чуть помогают
                          * DMA не помогает нигде и никогда
                          * отсутствие необходимости настройки периферии экономит сотню тактов, но передача пары-тройки байт по софтовому SPI съедает напрочь эту экономию
                          * необходимость провести какие-то вычисления с числами больше байта (например, произвести расчет реального атмосферного давления из полученных от датчика BMP180 данных) приводит к большому оверхеду


                          1. Polaris99
                            05.04.2019 11:03

                            У AVR нет хардварного SPI? Вот это сюрприз!
                            Кстати, а Вы в курсе, что даже у 8-битников бывает DMA? Вот у того же CC2540 с 8051 ядром есть для передачи по SPI. А у nRF51822 с ядром Cortex-M0, сюрприз-сюрприз, нету! Как с этим быть?


                            1. Andy_Big
                              05.04.2019 11:38

                              У AVR нет хардварного SPI?

                              У AVR нет двух хардварных SPI, как и нет назначения разных выводов для него. Но можно взять для примера более жизненный случай — ШИМ. Аппаратные возможности вывода ШИМ сильно ограничены в 8-битниках ввиду ограниченности числа таймеров.
                              Кстати, а Вы в курсе, что даже у 8-битников бывает DMA?

                              В курсе. Так же в курсе, что бывают 8-битники с сотнями МГц тактовой.
                              Как с этим быть?

                              А как быть с тем, что у CC2540 нет команд SBI/SBIC/SBIS? И как это увязать с Вашим утверждением «в плане работы с битами ARM всегда проигрывает мелким контроллерам»?


                              1. BigBeaver
                                05.04.2019 13:47

                                Есть всякие AtTiny с аж 4 каналами fastPWM.


                                1. Andy_Big
                                  05.04.2019 16:41

                                  На двух таймерах, один из которых 8-битный :)


                                  1. Gryphon88
                                    05.04.2019 16:49

                                    Будто Вы никогда не использовали счётчик переполнения счётчика переполнений таймера :)


                                    1. Andy_Big
                                      05.04.2019 16:58

                                      Аппаратному ШИМу это не поможет :)


                                      1. Gryphon88
                                        05.04.2019 17:06

                                        Это да, я так с input capture баловался, а начало ветки невнимательно прочёл.


                              1. mpa4b
                                05.04.2019 15:06

                                У AVR нет двух хардварных SPI

                                Зато иногда в режиме SPI может работать UART (или как он там уже начинает называться).


                                1. BigBeaver
                                  05.04.2019 15:08

                                  На мелких камнях у них везде USI, который конфигурируется как spi/twi/uart и тд.


                          1. progchip666 Автор
                            05.04.2019 11:23

                            Согласен со всем, кроме одного, бывают таки случаи, когда DMA полезно, ну во всяком случае в ARMaх


                            1. Andy_Big
                              05.04.2019 11:38

                              Вообще, я это резюме писал на 8-битники, у которых DMA попросту нет :)
                              А при его наличии — да, DMA очень часто дает большой выигрыш.


                    1. mpa4b
                      05.04.2019 15:04
                      -1

                      Сравните bit banding, который есть в M3 (и наверное M4, не уверен), доступен для большей части периферии и ПАМЯТИ, и периферию в АВРках, вылезшую за предел диапазона SBI/CBI/SBIC/SBIS (всего 32 байта тот диапазон).


                      1. Polaris99
                        05.04.2019 15:52

                        Вы смотрели, как это осуществляется компилятором?


                        1. mpa4b
                          05.04.2019 18:12

                          Если в авр вылезет на пределы тех 32 байтов — то будет read-modify-write, никуда не деться.

                          bitbanding сам по себе в gcc не поддерживается, но можно написать простейшую функцию c __attribute__((always_inline)) и тогда всё хорошо. Номера битов в инклудах есть, покрмере для stm32


  1. Gryphon88
    04.04.2019 14:07
    +1

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


    1. progchip666 Автор
      04.04.2019 14:33

      Спасибо.

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

      Это наверно потому, что вы ещё не интересовались сколько стоит молд, или другими словами прессформа, для изготовления кастомного корпуса. Вот это действительно адские деньги! Уложиться в 10K гринов — большая удача!


      1. Gryphon88
        04.04.2019 15:04
        +2

        Интересовался, правда, уже после первой собственной метеостанции :)
        Молд — это всё-таки крупная серия, если единицы-десятки штука корпуса ещё дороже, хотя серия суммарно и дешевле. С большим удовольствием читаю, как уродуются пытаются сэкономить на изготовлении ребята из проекта по автономному сборщику мячей для гольфа, используя разные технологии. Да и статьи Milfgard про производство тоже оказались полезными, теперь я знаю, сколько может стоить правильная картонная коробка…


        1. progchip666 Автор
          04.04.2019 15:36

          Лично я бы при не слишком больших сериях присмотрелся бы к плоскостным технологиям. Корпус из нескольких вырезанных из оргстекла слоёв. Ребята делают ещё и из цветных, весьма симпатично получается. Само стекло и его резка лазером в России очень дёшево обходится.


          1. Gryphon88
            04.04.2019 16:09
            +1

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


  1. MegaVolt1976
    04.04.2019 14:56
    +2

    Мы используем Microblaze внутри ПЛИС.


    1. progchip666 Автор
      04.04.2019 14:57

      Путь настоящих джидаев! По белому завидую. Давно тянет меня ПЛИС, но так пока и не сделал на них ни одного проекта.


      1. MegaVolt1976
        04.04.2019 15:47
        +1

        Так пора начинать. На али куча дешёвых плат. В инете полно рецептов.


        1. progchip666 Автор
          04.04.2019 19:45

          Нет свободного времени да и задач, если честно.


          1. MegaVolt1976
            04.04.2019 21:21

            Понятно…


    1. mpa4b
      04.04.2019 15:32

      А как компилируете, отлаживаетесь? gcc, openocd или проприетарный vendor lock?


      1. MegaVolt1976
        04.04.2019 15:50

        Всё в комплекте от производителя. Но там Eclipse-based система для софта. Так что всё вполне стандартно.


  1. Neptun43
    04.04.2019 17:07

    Не подскажете, где поискать DC-DC преобразователи с внутренним потреблением в единицы-десятки микроампер? Это реальная проблема — потребление МК понятно, как уменьшать, а вот найти понижайку пока получилось только с собственными запросами на 160мкА. Нужно получить 3.2В от входных 3.6...6В.


    1. progchip666 Автор
      04.04.2019 17:17
      +1

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


    1. progchip666 Автор
      04.04.2019 17:23

      Из импульсников вот такие использовал

      TPS6205x 800-mA Synchronous Step-Down Converter
      12-µA Quiescent Current (Typical)


    1. amartology
      04.04.2019 17:27

      А что-то вроде TPS62745 чем вас не устраивает? У него собственный ток меньше 1 мкА при максимальном выходном токе в 300 мА.
      И про LDO выше дело написано.



  1. semen-pro
    04.04.2019 17:29

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

    Пришлось лезть в гугл… Ну нет не Атмегах серийника, только в версиях с USB он бывает.


    1. Andy_Big
      04.04.2019 18:23
      +2

      А когда это атмега успела попасть в категорию «простейшего ARM микроконтроллера за пол бакса… одной из простейших серий от ST на основе ядра Cortex-M0 — stm32F03»? :)


    1. Gordon01
      04.04.2019 19:01

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


    1. progchip666 Автор
      04.04.2019 19:47

      Я про меги ничего не писал. Последний проект на AVR сделал боле 10 лет назад. Это касалось ARM от ST


  1. tbl
    04.04.2019 21:05
    +2

    Этот график какой-то менеджер по продажам рисовал?

    график энергопотребления
    image


    1. Polaris99
      04.04.2019 23:31

      Это ж стандартный сферический конь в вакууме, не узнали?


      1. progchip666 Автор
        05.04.2019 10:00

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


        1. tbl
          07.04.2019 20:10

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

          Аналогичный пример из церкви макаронного монстра
          image


  1. bisquitie
    05.04.2019 07:49

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


    1. progchip666 Автор
      05.04.2019 11:58

      Спасибо за лестный отзыв.
      bt-приёмник — имеется виду Bluetooth или что то другое?


      1. bisquitie
        05.04.2019 13:52

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


        1. progchip666 Автор
          05.04.2019 14:01

          В данном случае возможно будет лучше линейный стабилизатор применить, самому на макетке спаять, но это зависит от того каким напряжением собираетесь запитывать. Надеюсь магнитола не настолько древняя что ламповая? Если транзисторная, то там найдёте напряжения питания от 6 до 12 вольт. BLE модули потребляют обычно не более 50 мА и для них вполне подойдёт линейный стабилизатор с подходящим выходным напряжением. Какой именно — надо выбирать исходя от величины напряжения, которое вы возьмёте из магнитолы для питания.


          1. bisquitie
            05.04.2019 14:08

            Не думал засовывать это внутрь магнитолы (хотел сделать снаружи, подключив к Line In), но Ваши комментарии заставили подумать — там ведь действительно напряжение должно быть стабилизированное. Спасибо!


            1. progchip666 Автор
              05.04.2019 14:12

              Должно и лишних 20 — 50 мА не должно быть проблемой для штатного источника питания.


            1. Alexeyslav
              05.04.2019 14:16

              Не парьтесь. Импульсник туда подходит, если с блютуз-модуля брать сигнал сразу с диф.выхода, а преобразовывать в обычный непосредственно возле магнитолы и со своим стабильным питанием. Но если взять в китае сразу модуль+платку-основу то там всё это уже сделано и универсальное питание организовано. Обычно там используют HX-MINI-360 преобразователь.


          1. Alexeyslav
            05.04.2019 14:11

            BLE модуль может кратковременно в режиме коннекта взять 300мА да и те же 50мА уже достаточно много чтобы применять злой(вроде LM7805) линейный стабилизатор уже с радиатором, стабилизаторы в корпусе TO92 или меньше хоть и могут обеспечить требуемый ток но они не пройдут по тепловому режиму — греться будут как черти. При этом не надо забывать о том что для автомобильной бортсети в требованиях к потребителям прописано выдерживать кратковременные всплески до 200В, а линейный стабилизатор обычно до 30В входного и не больше, нужна защита на входе + ВЧ фильтр не будет лишним. Многие почему-то об этом забывают.


        1. Alexeyslav
          05.04.2019 14:04

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


    1. Alexeyslav
      05.04.2019 13:55

      У блютуз-приемника выходы обычно дифференциальные, помехи питания для них побоку если около магнитолы с её стабильным питанием(или организованным отдельно) будет правильная схема преобразования диф.сигнала в single-ended(как оно правильно переводится?) или в магнитоле изначально предусмотрен дифференциальный вход — его задействовать без каких-либо проблем.


      1. bisquitie
        05.04.2019 14:11

        Думал брать питание от бортсети автомобиля, а не лезть в магнитолу. Хабракомментарии убедили, что может стоит и внутрь залезть. Спасибо.


        1. Alexeyslav
          05.04.2019 14:24

          Изнутри будет сложнее сигналу пробиваться, модуль всеравно нужен снаружи а длинные провода питания пользы не добавят. Хотя если панелька передняя пластиковая полностью, то модуль будет светить через неё как направленной антенной, правда я сомневаюсь что это придет на пользу внутренностям магнитолы, могут возникнуть паразитные наводки на усилитель и слаботочные цепи внутри магнитолы, которые никак не ожидают радиочастотного сигнала в 2.4ГГц внутри магнитолы на мощности до 100мВт. Попробовать то можно, но что-то мне подсказывает… будет щёлкать в колонках в моменты активности. Вот платку преобразования дифференциального сигнала с модуля в магнитолу встроить можно и подключить параллельно линейному входу.


          1. bisquitie
            05.04.2019 15:23

            Спасибо, буду думать и пробовать.


  1. Roman_Popov
    05.04.2019 17:09

    Неоднократно пытался таки перейти на 32бита. Ну вот в одном только проекте показалось удобно использовать ОС и соответственно STM32. Для всего остального за глаза хватает разных атмег. Кстати относительно энергопотребления, вот прямо сейчас нужно спроектировать прототипчик с батарейным питанием. Нужны SPI, I2C, UART. По сути просто перегонять байтики между ними периодически, никакой математики. Перерыл гору даташитов разных производителей. Как не странно самыми симпатичными выглядят PIC16F.


    1. progchip666 Автор
      05.04.2019 19:48

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


  1. IgorPie
    06.04.2019 03:35

    АЦП на stm32 все же не очень. Только оверсемплинг, медиана и фильтрация помогут. ЦАП — много лучше, 13 бит и более выжимаются почти без хлопот.


    Атмелы — 300МГц — это хорошо, но давно же есть STM32H7 — 400МГц


    1. progchip666 Автор
      06.04.2019 08:27

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


      1. IgorPie
        06.04.2019 12:41

        Атмел выкрутились, можно было стопорнуть процессорное ядро на время измерений. Да и у dsPIC все было не так печально. Правда ЦАП выдавал черти что. Нулевая точка плавала от экземпляра к экземпляру.


  1. ladle
    06.04.2019 22:46

    USART — асинхронный последовательный порт, часто использующийся для связи с компьютером там он называется COM или RS232, модемами и другими устройствами

    A universal synchronous and asynchronous receiver-transmitter (USART) is a type of a serial interface device that can be programmed to communicate asynchronously or synchronously. See universal asynchronous receiver-transmitter (UART) for a discussion of the asynchronous capabilities of these devices.

    См. например
    www.edn.com/electronics-blogs/embedded-basics/4440395/USART-vs-UART--Know-the-difference