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



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

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


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

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

    Only registered users can participate in poll. Log in, please.

    Какие микроконтроллеры вы чаще всего используете в своих разработках?

    Share post

    Comments 217

      +1
      Что вы так носитесь с этой защитой кода? В 95% девайсов прошивка производителя нужна только для демонстрации возможностей и proof of concept. А дальше надо открывать спеки на железо и давать это сообществу. Они напишут такой код, что будет работать и обновляеться, когда уже самой компании не станет.
        +6
        На самом деле не столько я ношусь, сколько заказчики. Многие относятся к этому вопросу просто маниакально.
        Вообще необходимость в защите кода сильно зависит от разрабатываемого устройства. Хочу также заметить, что обновляемое ПО не обязательно является незащищённым. Если речь идёт, например, о медицинском приборе, то оставлять его содержание в открытом доступе во многих случаях просто опасно. Даже в секторе IoT можно получить много сюрпризов, оставив ПО открытым.
        В 95% девайсов прошивка производителя нужна только для демонстрации возможностей
        я бы не рискнул высказываться так однозначно, возможно в вашем сегменте это так, но обобщать не стоит.
          +4
          На флеши могут быть ключики, коэффициенты цифровых фильтров, таблицы переключений, калибровки под заказчика, да просто огромная куча всего, что не желательно для раскрытия примитивными средствами. Это помимо, собственно, защиты кода, который тоже может иметь наибольший вклад в стоимость девайса, ибо PCB-шки реверсятся и воспроизводятся некоторыми друзьями просто на ура.
            0
            Остановить копирование изделия конечно не получится путём защиты кода, но значительно его затормозить вполне.
            В серийный устройствах, изготовляемых китайцами я вообще рекомендую клиентам исключительно функциональные тесты прошивать. Для устройств, имеющих беспроводные интерфейсы, ещё бутлоадер для перепрошивки, причём привязанный к номеру устройства.
            В большинстве случаев, для более-менее сложных дивайсов всё равно окончательную сборку, прошивку и тестирование клиенты уже в России делают. Ну а скажем такие вещи как автомобильные сигнализации, часто имеют универсальную плату в которую шьётся ПО для различных моделей.
            +2
            Даже в секторе IoT можно получить много сюрпризов, оставив ПО открытым.
            Про security through obscurity слышали?
              +1
              Очень спорная концепция.
                +2
                Оно порицается для универсального применения (а-ля залепить жвачкой текущий радиатор), но может иметь ограниченный положительный эффект в частностях. Например, просто зная версии ядра/библиотек можно уже получить в руки хорошую отправную точку, даже не имея физического доступа к устройству (в т.ч. удалённого). А, вот девайс, залитый правильным компаундом может повысить не только информационную безопасность, чем не security through obscurity))
                  +3
                  В далёкие советские годы, когда генсеки ещё не начали гонки на лафетах, мы были очень наивными. Верили что Японские Телевизоры плоские и вешаются на стены как картины, а их видеомагнитофоны имеют идеальную защиту от взлома — при попытке вскрыть заднюю крышку просто разваливаются на части.
                  Сегодня телевизоры действительно висят на стенах и в принципе можно делать очень совершенные датчики проникновения, при наличии резервной батареи они могут заставить программу самоуничтожиться.
              +2
              Различные медицинские приборы и прочая узкосегментая девайсщина не считается — там делайте, что хотите. Я говорю о массмаркете. Посмотрите, например, во что развилась возможно прошивать роутеры. И как стагнирует экосистема IP-камер на чисетах Hi 35xx, на которых (у всех вендоров) стоит одна и та же китайская убогая, кривая и косая прошивка ужасного качества. Конечно, на Linksys WRT54G в своё время спеки никто не открывал, но помогла «стандартность» железа. А вот с IP-камерами немного сложнее, так как интерфейс с матрицей и с хардварными кодеками вообще негде посмотреть. Открой спеки на это железо и сообщество бы в миг написало нормальную прошивку и камеры бы разлетались как горячии пирожки. Аналогично дело обстоит со всяким IoT'ов для умного дома. Сплошной vendor lock in и довольно недолгий цикл поддержки. И ведь умный дом никто из потребителей не хочет делать так, чтобы каждые два года его выкидывать и ставить новый.
                +2
                Собственно вы только подтвердили мои слова.
                Всё зависит от сегмента и в описанном вами случае это вполне может быть разумным ходом.
                В описанном вами сегменте я к сожалению или к счастью не работаю.
                0
                Согласитесь, есть разница между выкладыванием кода под свободной лицензией и предоставлением возможности установить свою прошивку на устройство. С теми же медицинскими (да и многими лабораторными) приборами типичная ситуация — это управляющее ПО, написанное под Windows XP, и которое для запуска под современной Windows требует костылей.
                  0
                  Знаете, по опыту работы с ПО под меданализаторы — там не то, что костыли требуются, там весьма примитивные утилиты, которые, по сути, вообще редко когда прибиты к каким-либо особенностям винды.
                  Просто производителю нет смысла даже тестировать ПО начала нулевых, когда можно просто под современную ОС запустить вмварю и в ней win2000. Просто из принципа, что под новую ОС могут быть какие-то редкие баги. Ну или она могла хранить данные в папке своей установки, который в программ файлз, и путь этот забит внутри программы, а сейчас это запрещено.
                    0
                    Вообще это интересно. На самом деле это не запрещено а просто является плохой практикой, решается это изменением прав доступа к папке с программой. И пиши — не хочу.
                    Но этим никто не хочет заморачиваться, ведь это надо будет учитывать при установке софта, развертывании в домене(например). А там как обычно поменяют что-то незначительно и установка прав не сработает, надо другой набор атрибутов прописывать а для этого нужно выяснить какие именно… с точки зрения затрат на решение проблемы, развертывание виртуальной среды дешевле и даёт стабильный результат.
              0
              Как интересно идёт голосование! Не ожидал что 8 битники получат перевес. Правда с учётом того, что я сильно сегментировал ARM по ядрам, они всё таки пока впереди, но с минимальным перевесом.
                +5
                8 битники получат перевес

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

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

                    0
                    Для того чтобы эти переходники использовать надо ещё LQFP паять научиться. Некоторых это пугает. Зачем напрягаться.
                    Тем не менее думаю фактор Ардуино таки перевешивает. Правда большинство любителей этой платформы оперирует на уровне плат и редко что-то самостоятельно на микронтроллерах собирает.
                      +2
                      LQFP все-таки не BGA, не так страшен черт как его малюют. Относительно легко управиться почти любым паяльником и хорошим флюсом/припоем.
                        0
                        Абсолютно правда, главное иметь хороший, как вы отметили флюс, точно спозиционировать чип, тогда он при некоторых навыках паяется широким жалом по нескольку ножек за один провод паяльника. Но ведь сначала этот навык надо наработать! Умельцы в ларьках по ремонту сотовых телефонов с помощью фена и простейшей печки и BGA корпуса с мелким шагом достаточно легко заменяют!
                          0
                          Можно тупо канифолью.
                            0
                            Если стремление к совершению подвига в душе неистребимо, можно и канифолью и даже тупо.
                            Свои первые поделки в кружке радиолюбителей в конце концов я так паял и ничего, работало. Правда микросхем в них не было никаких, даже в DIP корпусах.
                              0
                              Ну почти любой флюс состоит из канифоли, растворителя и активаторов. Если плата луженая (а не золото, скажем), то активаторы не нужны — с обычной чистой канифолью очень хорошо запаяется. Главное чтобы плата с маской была. Ну и жало только толстое и можно использовать — ровность пайк в этом случае обеспечивается поверхностным натяжением, а не точностью попадания.
                      +2
                      Ардуины там выделены в отдельный пункт :)
                      А переходники — так какая разница паять QFP на переходник или сразу на плату?
                        0
                        Разница в том что переходник делается на производстве с более тонкими технологическими нормами, а плата куда вставляется контроллер делается в домашних условиях где проблемы начинаются уже с дорожек 0.4мм и провести дорожку между выводом контроллера с шагом 2.54мм/1.27мм и 0.5мм огромная разница.
                        Проблема не впаять контроллер в плату, а изготовить ту самую плату в домашних условиях.
                          +1
                          Да вроде дорожки 0.3 мм с промежутком 0.2 мм давно уже не проблема даже при лазерно-утюжном изготовлении, не говоря уж о фоторезистивном :)
                          А проводить дорожки между выводами QFP не каждое производство позволит. И если вдруг возникает такая необходимость, то явно имеются какие-то проблемы с проектированием платы в целом, а не с ограничениями домашнего изготовления.
                            0
                            Вот смотрите. Рекомендованная ширина площадки для LQFP 0.3 мм, шаг 0.5 мм. Чтобы провести дорожку не уложимся даже в нормы 0.1 мм ширина, 0.1, расстояние между дорожкой и контактной площадкой, поскольку поскольку у нас всего 0.2 мм остаются. А там ещё вопрос маски вылезет на поверхность.
                            Китайцы конечно сделать смогут, а вот тот же Резонит уже вряд ли. В таких ситуациях гораздо лучше перейти на четырёх слойку и она обойдётся дешевле чем двухслойка, которая позволяет творить такие чудеса! При массовом производстве плат сегодня четырёхслойка без извращений стоит всего процентов на 20 дороже двухслойки с одинаковыми нормами допуска.
                            В последнем проекте очень хотелось поставить BGA чипы с шагом 0.5 мм, но крепко подумал отказался. Вручную сэмплы спаять сложно, проверить качество пайки невозможно, отлаживать плату крайне неудобно. Скрипя сердцем установил таки LQFP 64 и перекинул несколько компонентов на вторую сторону платы. Зато плату без проблем сделали в Резоните. Это был прототип, если дойдёт до серии ещё подумаю…
                            Кстати, что легко можно делать даже в утюжной технологии — пускать проводники по углам LQFP, для 64 нового корпуса и более легко проходит по три проводника.

                              +1
                              Так это Вы не меня уговаривайте, а того, кому я отвечал :) Я-то написал то же самое — и что между выводов QFP дорожки не стоит пускать даже при нормальном производстве плат, и что утюжная технология позволяет QFP без особых трудностей :)
                                0
                                Резонит спокойно делает 0.1мм зазоры.
                                При массовом производстве плат сегодня четырёхслойка без извращений стоит всего процентов на 20 дороже двухслойки с одинаковыми нормами допуска.
                                В Резоните при прочих равных цена пропорциональна числу слоев.
                                  0
                                  0.1 он делает не спокойно, но с существенной надбавкой «за сложность» — это раз.
                                  Потом ты узнаёшь от них что твой заказ с такими допусками настолько индивидуален, что придётся делать его на отдельной заготовке, площадь которой придётся оплатить полностью, причём по завышенному тарифу.
                                  В результате у меня бывали случаи что переплачивать приходилось в 3-5 раз при заказе маленьких по площади плат в небольших количествах, а другие у меня редко бывают.
                                    0
                                    Коэффициент 1.5. Ни каких требований к выкупанию всей закотовки нет (но могут быть при толстой фольге, нестандартнома материале и тд).
                                      0
                                      К кому как, а для меня почему то эти требования были и платить приходилось по полной. Возможно если поскандалить то можно было бы их избежать, ценой задержки заказа на неделю другую, но тогда это уже не срочное производство.
                                        0
                                        Ну я не знаю деталей вашего заказа. Пока не очевидно, что дело в допусках.

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

                                                После смены партнера мне стали привозить за 1 день, чему я очень рад.
                                                  0
                                                  А мне за одну неделю, с огромной кучей потраченных нервов и в два раза дороже
                                                    0
                                                    И почему-то косяки ТК вы считаете за косяки резонита.
                                +2
                                Проблема на производстве разрешается многослойностью, с ЛУТ-ом в домашних условиях уже двухслойная это лишний напряг, а там ещё переходные отверстия добавляют.
                              0
                              Я до этого пункта даже не дочитал :)
                              +1
                              Сейчас снова схлопочу минусов от фанатов, но правда есть правда: с переходником цена контроллера оказывается уже не такой красивой, как ее малюют. Плюс переходники эти очень хреново совместимы с панельками, т.е. проблему перепрошивки решают весьма посредственно. Ну и выглядит схема с переходником как колхоз «красное дышло».
                                0
                                У китайцев stm32f103 «bluepill» стоит копейки.Считай, готовый DIP-модуль. Хочешь — впаивай в плату, хочешь — через гнезда/штыри подключай.
                              0
                              Есть такая штука как панельки.
                              Например: www.symmetron.ru/suppliers/wells
                                0
                                Поколонники STM32 постоянно напирают на его низкую цену. Сколько такая панелька добавит к стоимости контроллера? А к размеру на плате?

                                Иногда создается впечатление, что некоторые даже многослойную плату готовы утюжить дома, лишь бы не использовать ненавистный DIP.
                                  0
                                  DIP дороже, DIP съедает больше места. У DIP нет преимуществ кроме легкости монтажа, а это не актуально для нормального разработчика.
                                  Панельки по ссылке выше, разумеется, не для серийного устройства, а, например, для прошивальщика или для прототипа.
                                    0
                                    Лёгкость монтажа(да и то когда не имеешь навыка) — только для ручного монтажа, даже на вручную расставляя корпуса, а потом паяя их феном или ещё лучше в печке SMD корпуса уже проще монтировать
                                      0
                                      Конечно для ручного. Даже больше — для очень неопытного ручного :)
                                        –1
                                        ещё лучше в печке

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

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

                                            Это уже какой-то случайный DIY и речь уже будет идти не о разработке, а о повторении — взять ардуину, припаять к ней на проводках остальное как показано в ролике на Ютубе :) Тогда и панельки не востребованы и статья эта не для таких людей.
                                              0
                                              Эээ… почему DIY не может быть на более-менее современном оборудовании? В конце концов, паяльник нормальный на картридже T12 в китае стоит 30$ и 5$ за жало для пайки волной(кстати и при обычной пайке тоже здорово помогает!). Кстати у таких паяльников и нагреватель даже мощнее… как-то пришлось попользоваться старым 60 ваттным паяльником… я уже отвык что они нагреваются бесконечно долго, сперва подумал «а он вообще рабочий?».
                                              Сейчас наверно эти советские раритетные паяльники остались у очень немногих, а в основном если хочешь заняться DIY сейчас очень хороший выбор для старта в том числе и жала для пайки волной по цене ничем не отличающиеся от обычных а стало быть нет причин чтобы не иметь их в арсенале.
                                              Вот что сейчас кусается ценой для DIY так это инфракрасные паяльники, но думаю в итоге и они тоже пойдут в дело. Ведь это почти как фен только не сдувает компоненты с платы.
                                            0
                                            Панельки по ссылке выше, разумеется, не для серийного устройства, а, например, для прошивальщика или для прототипа.

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

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

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

                                            DIP дороже

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

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

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

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

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

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

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

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

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

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

                                              +1
                                              Хватит плодить байку про легкость монтажа в дырки. Я сам на несколько лет откладывал переход на SMD из-за этого заблуждения. Но как показала практика это посильно даже 10-летнему ребенку. Даже со спиртоканифолью и паяльником ЭПСН SMD паяются быстрее и проще этих нескончаемых ножек.
                                                +1
                                                А мне-то Вы зачем это пишете? :)
                                                Я наоборот за поверхностный монтаж — QFP, QFN. Обычным паяльником я запаиваю десяток TQFP-64 минут за 8, раза, наверное в два-три быстрее, чем паять DIP в пересчете на один вывод :)
                                                  0
                                                  Мастер! Я так быстро не умею.
                                                    +1
                                                    Ну так это сразу десять плат в одной панели, не нужно тратить время на переворот каждой платы отдельно :) Больше всего времени занимает прицеливание с прихваткой одного угла. А потом сама пайка — секунды по 3-4 на сторону.
                                                      0
                                                      Ну вот именно с прихваткой у меня и проблемы. Установил точно, но когда начинаешь «прихватывать» одну сторону чип съезжает. Не хватает твёрдости рук.
                                                        +1
                                                        Я не паяю сразу всю первую сторону. Сначала прихватываю только пару выводов одной стороны в углу, который выровнял, а потом уже паяю всю противоположную сторону, слегка подправив ее при необходимости.
                                                        Хотя уже с пол-года не занимался этим в таких объемах, после того как купил PnP-станок и трафаретный принтер :)
                                                          0
                                                          Я в принципе тоже стараюсь сначала с двух сторон прихватывать Про станки интересно интересно. В Китае брали? Ссылками не поделитесь?
                                                            0
                                                            Да, брал в Китае, вот тут — item.taobao.com/item.htm?id=525680982287
                                                            Взял самый дорогой вариант TVM802BX из-за встроенного компьютера, то есть не нужно искать где-то отдельный комп, занимать им место. Ну и в дальнейшем выяснилось еще одно его преимущество — у него шаговые сервоприводы, а не просто моторы. То есть с энкодерами на валах для обратной связи по положению. В более младших моделях стоят двигатели без энкодеров.
                                                            Я делал на него обзор, если интересно — mysku.ru/blog/taobao/66376.html
                                                              0
                                                              крутая штука
                                              +1
                                              Такие панельки исключительно для макетных плат, которые делаются дома кустарным методом. А для таких изделий вопрос цены глубоко вторичный. Это для прототипов и проектов, которые делаются для души.

                                              P.S. Вот вам ARM Cortex-M0 в DIP-корпусе.
                                              И вообще, много интересного есть.
                                                0
                                                акие панельки исключительно для макетных плат

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

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

                                                Так это же не STM, пацаны не поймут.
                                                  0
                                                  ISP создает проблемы в разводке, да и с подключенными цепями совместим далеко не всегда

                                                  А какие проблемы у Вас с разводкой двух линий? И зачем совмещать их с какими-то цепями?
                                                    0
                                                    Если эти ножки нужны как GPIO, то появляются варианты.
                                                      0
                                                      Например, взять корпус с бОльшим количеством выводов :)
                                                    +1
                                                    Как показывает практика, проще ISP развести чем дергать чип из панельки. ISP занимает не так много выводов и представляет проблему только если выводов у контроллера ну прям совсем впритык и даже на выводах ISP висит силовая нагрузка.
                                                    Дёргать контроллер из панельки для очередной отладочной прошивки… и сколько раз ты его так сдёрнешь до первого обломанного вывода? Панелька… это от силы десяток-другой выдёргиваний, если надо больше это уже крайне неудобно.
                                            +2
                                            Жалко, что можно выбрать только 1 устройство, потому как я бы выбрал половину указанных пунктов. И это реальное положение моих дел.
                                              +2
                                              Очень хорошо, понимаю вас, коллега. Надеюсь в ближайшее время написать статью, посвящённую выбору микроконтроллера. Мне в последнее время тоже приходится часто мигрировать и диву даёшься к каким хитростям прибегают маркетологи, чтобы заставить нас вложить в проект более дорогой чип! В результате, когда выбираешь камень для серийной разработки, приходится просматривать нескольких производителей, очень внимательно вчитываться в даташиты на предмет наличия тех или иных функций ИМЕННО В ЭТОМ ЧИПЕ и выбирать между разными семействами Cortex. Иногда бывает дешевле перейти в более старшее семейство, потому что в младшем нужная тебе функция вроде бы и есть, но только в топовых дорогих чипах с большим количеством выводов…
                                            +2

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


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

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

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


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

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

                                                  Бывают варианты — зачастую сам процесс вывода на рынок изделия настолько затратен, что контрафакт имеет мало смысла. Исключение пожалуй составляют очень массовые изделия, которые клонируют китайцы, либо просто часть тиража продают налево.
                                                    +1
                                                    Именно так. Защита должна быть такой, чтобы стоимость ее взлома приближалась к стоимости разработки аналогичной прошивки. Или к выгоде от получения при взломе каких-то данных типа паролей или ключей.
                                                  +1
                                                  Если честно, я бы не принимал на веру всех статей с хакерских форумов. ещё лет 20, возможно 15 назад существовал бизнес «по взлому» микроконтроллеров. Сегодня я про это не слышал. Взломать можно всё что угодно, но в большинстве случаев в наши дни дешевле нанять программиста чтобы написать программу заново.
                                                  Что касается программных методов взлома — зачастую они становятся возможными по одной простой причине — программист не уделил достаточно много внимания защите кода, особенно это характерно для устройств с бутлоадерами. Можно пролезть в «дырку», изменить часть кода «внедрив» в программу «демона», который перехватит управление и сольёт содержание программы через один из внешних интерфейсов.
                                                  Однако это путь «настоящих джидаев». Даже «чёрные кассы» — кассовые аппараты с закладками для обнуления — создавали в своё время разработчики ПО для тех же касс с целью дополнительного заработка.
                                                    0
                                                    Бизнесы по взлому микроконтроллеров вполне себе существуют и сегодня. Не всегда написать программу дешевле. Иногда надо не взломать программу, а обеспечить совместимость контрафакта с «родными» изделиями. Разное бывает.
                                                      0
                                                      Возможно вы и правы, особенно если речь идёт о давно устаревших 8 битных моделях.
                                                        0
                                                        Вскрытие прошивки STM32F1 стоит в пределах пары тысяч евро. Вроде бы не давно устаревшие)
                                                          0
                                                          За три можно несложный проект заказать целиком. Смысл? Если только чтобы ключи своровать.
                                                            0
                                                            Ничего не знаю про смысл, не имею отношения к такого рода бизнесу. Знаю, что компании, предлагающие такого рода услуги существуют — видимо, это означает и наличие спроса сегодня, а не пятнадцать лет назад.
                                                  +2
                                                  Цифровые входы обычно имеют очень высокое входное сопротивление, поэтому, если их оставить не подключенными, их состояние может скакать из нуля в единицу и обратно, под действием наводок электромагнитных полей. Для того, чтобы этого не происходило, существуют специальные режимы, когда внутри чипа вход соединяется через сопротивление 20 — 50 КОм с плюсом питания микроконтроллера (pull-up) или с минусом (pull-down).

                                                  Недавно тут была статья, в которой советовалось неиспользуемые выводы переводить в режим аналоговых входов. Тогда внутренний триггер Шмитта отключается и не молотит от всех этих наводок.
                                                    +2
                                                    Более того, это же делать надо когда готовишься ко сну.
                                                      0
                                                      Ну да, перед сном. В активном режиме эти дополнительные единицы микроампер большой роли не играют.
                                                        +1
                                                        Корректная подготовка к глубокому сну и выход из него — вообще боольшая отдельная тема.
                                                          +1
                                                          Сейчас работаю над программой для одного устройства на STM32L151 с автономным питанием, уделил довольно много внимания энергопотреблению. Правда, я кладу контроллер в спячку в режим STANDBY, когда и без моих усилий выводы оказываются «подвешенными», а периферия отключенной. Потребление в итоге получается около 65 мкА с внешней периферией — аппаратным контроллером питания, солнечной панели и заряда аккумулятора, цифровым барометром, SPI-флеш, счетчиком (PCF8583 в режиме подсчета импульсов) и OLED-экранчиком. Из них около 35 мкА жрет китайский экранчик и около 28 мкА жрет менеджер питания на «рассыпухе».
                                                            0
                                                            На мой взгляд — хороший результат, отлично поработали коллега. Я много работаю с беспроводными решениями в последнее время, BLE в основном кстати до последнего времени как раз STM32L151 юзали. Пришлось даже специально купить во такого монстра, для остеживания уровней энергопотребления в динамике
                                                              0
                                                              хороший результат, отлично поработали коллега

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

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

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

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

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

                                                                            Собственно и мой вопрос насчёт 'какие-то карты не работают с SPI' был вызван именно этим — может, из-за того, что не подали низкую частоту вначале инициализации. Ну а может, у китайцев появились 'чюдесные' нестандартные карты, которые «SPI-illiterate» :)
                                                                    0
                                                                    Это PPK?
                                                                    +1
                                                                    У меня был случай, когда использовали внешний генератор тактовой частоты вместо резонатора ради малого джиттера. Естественно, в глубокой спячке этот генератор «генерировал» почти 60% тока.
                                                                      0
                                                                      Надо было отключать ему питание :)
                                                                        0
                                                                        Шутку понял. (с)
                                                                          +1
                                                                          Вообще-то я серьезно. Переводим контроллер на внутренний генератор, отключаем питание внешнему, засыпаем. Проснулись (на внутреннем генераторе), включили питание внешнего генератора, дождались его стабилизации, переключились на него.
                                                                          Хотя если микроконтроллер не умеет управлять своими клоками, тогда шутка, да :)
                                                                +1
                                                                У меня был случай, когда мне принесли простой электросчётчик на основе простенького MSP, который не проходил тест на ЭМС. После долгих разбирательств и оптимизации трассировки удалось выяснить что дело было в висящей в воздухе ножке. Высоковольтный импульс приводил к сбросу устройства, причём только тогда, когда оно находилось в режиме низкого энергопотребления. Замкнул вывод на корпус и «вылечил».
                                                                +2
                                                                Как-то не согласен, что среди Cortex-M7 лидирует не STM. А как же замечательнейший stm32h750 ?? И это чудо на 400 МГц и, конечно, с непревзойденным фаршем от STM (в том числе с HRTIM!) всего за $2.5! Ну просто сказочно дешево… Причем 1024 RAM! Как говорится, ну что еще-то надо? Кстати, и jpeg-кодек есть и… да что я пишу, читайте даташит.
                                                                  +1
                                                                  Не знал про этот вариант, надо будет присмотреться.
                                                                  Возможно причина моих пробелов в этом:

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

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

                                                                    Поэтому мой совет — если у вас linux, но сама задача в H7 влезает — подумайте, нужен ли вам этот огромный монстр?
                                                                      0
                                                                      И аппаратный FPU двойной точности для нас — обязательная вещь.

                                                                      А работа с двумя флоатами на одно число вот как-то так не спасала?
                                                                        0
                                                                        Мы пробовали на STM32F4 (правда не по этой статье) — скорость практически такая же, как при эмуляции. Понятно, что это зависит от отношения скоростей FPU и CPU.
                                                                          0
                                                                          А по какой статье? Если брать тот метод, что по моей ссылке, вроде как там сложение и умножение раз в 5 дольше всего лишь получаются, чем с single precision.
                                                                            0
                                                                            А какая разница? Метод не даст выигрыша в разы, всего лишь десяток процентов. Итоговый вывод — при одинаковой тактовой 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


                                                                            float- арифметика через float pair на 32битном FPU, double — soft FPU. Видно, что обращение матрицы все равно занимает 1.9мс, то есть больше 500 обращений в секунду не сделать.

                                                                            Кстати и 64битный FPU дает ускорение где-то на полпорядка (в 3-6 раз, если не путаю). Матрицы довольно большие, при обращении все в кэш не лезет.

                                                                            Ну и чтобы два раза не вставать. Расчет sqrt полиномом обычно настолько эффективен, что может даже обгонять FPU. Помню как 35 лет назад мы очень этому факту удивлялись. Проверьте на любом доступном вам проце — думаю, что тоже удивитесь.
                                                                          0
                                                                          В рассылке у Джека Гансла недавно пробегали тесты этих FPU, можете почитать. www.ganssle.com/tem/tem369.html
                                                                            0
                                                                            Какие-то странные тесты, не приведён код (в т.ч. дизасм того, что нагенерил компилятор). Иногда кажется, что тупо неправильно настроен компилятор или либы — например sqrt похоже что шёл в эмулирующую библиотеку, вместо использования команды процессора. Что, впрочем, неудивительно, если для корня использовалась sqrt(), которая берёт и выдаёт даблы, в то время как для single->single надо использовать sqrtf()

                                                                            Ну и ещё совершенно ясно, что на m4f даблы будут эмулироваться, смысл их тестировать? Double-word arithmetic даёт максимальную точность, равную кол-ву бит мантиссы в двух флоатах, т.е. 23*2=46 бит, в то время как точность даблов — 53 бита, откуда следует, что эмулировать даблы при помощи double-word arithmetic нельзя.
                                                                              0
                                                                              Отмотайте пару выпусков назад, там условия теста вроде были. Я правда особо не вчитывался, в текущих моих проектах нет ни одного стма с FPU.
                                                                          0
                                                                          У нас задачи проще, но требуют быстрого реагирования часто, максимум RTOS применяем
                                                                        +1
                                                                        esp8266 имеет 80 кил оперативы, 160 мегагерц и прекрасно справляется с mp3 jpg и имеет вайфай на борту а стоит доллар в рознице на плате с антеннкой и флешкой на 4 мегабайта для кода. Почему вы её забыли а этого монстра нет? для иота esp более чем достаточная вешь… правда если бы было на неё полное описание и открытый SDK… ну и gpio мало но впринципе для многих задач решается внешним расширителем.
                                                                        Я же плотно засел на атмеги. Да они сейчас на китае в основном контрафакт но имея арсенал из 15 устройств в разработку которых потрачено много времени сил и денег — переход на армы пока не планируется даже просто потому что под арм уже двусторонняя плата нужна а это стоимость и проблема в том что и атмеги 328 нам хватает не то что за глаза — а просто выше крыши.
                                                                          0
                                                                          правда если бы было на неё полное описание и открытый SDK

                                                                          Вот поэтому, наверное, его и не все любят :)
                                                                            +1
                                                                            правда если бы было на неё полное описание и открытый SDK… ну и gpio мало

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

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

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

                                                                                STM32F030C8T6 — 0.73$ за штуку в партии от 750 штук (в Компэле), 64/8 кб флэш/оперативка, LQFP-48 :)
                                                                                STM32F030K6T6TR — 0.48$ за штуку в партии от 960 штук (в Компэле), 32/4 кб флэш/оперативка, LQFP-32 :)
                                                                                  0
                                                                                  Если честно я не понимаю зачем упираться в однослойку? Неужели при партиях в 1000 штук вы применяете утюжную технологию? Закажите двухслойки в Китае, на такой партии разницы с однослойками вы практически не почувствуете, но мучаться не придётся. Мы применяем ЛУТ только когда надо очень быстро проверить какую нибудь спорную мысль на концепте. На двухслойных платах хотя бы землю с питанием можно нормально развести. На однослойках сильно упираться надо, особенно в случае если используете цифро-аналоговые цепи.
                                                                                    +1
                                                                                    жоская конкуренция — очень нишевое решение. Лишний кварц с кондерами не могу позволить — калибрую частоту атмеги по внешнему сигналу каждый раз при включении :) двуслойка выходит реально дороже т.к. ни маски ни шелкографии на эту плату не применяем — пытаемся конкурировать по цене с китаем.
                                                                                    0,9 это с доставкой — нас устраивает. Переход на принципиально другой камень на 3.3 вольта это сложно технически и программно и не обойдется без пары преобразователей 3.3-5 что уже недопустимая роскошь. Дада в 2019 году есть устройства которые не понимают 3.3/3.6 на входе на частоте 100 герц всего :) опять же цена.
                                                                                    Конечно же когда встанет вопрос разработки нового устройства следующего в серии мы попытаемся прикинуть и впихнуть в арм какойто но это очень сложно на текущий момент не смотря на то что атмеги не производятся официально — атмель умер
                                                                                      0
                                                                                      Переход на принципиально другой камень на 3.3 вольта это сложно и не обойдется без пары преобразователей 3.3-5 что уже недопустимая роскошь.

                                                                                      Если это однонаправленные линии, то преобразователь — это транзистор с парой резисторов — это меньше одного рубля :)
                                                                                        +1
                                                                                        Решение хорошее, но не для оптимизации энергопотребления. Правда, делитель мне попадался в плате, на примере которой человек хвастался сроком жизни на батарейке.
                                                                                          0
                                                                                          Да, энергопотребление слегка пострадает, согласен :)
                                                                                          0
                                                                                          Большинство микроконтроллеров ARM от ST толерантны к 5 вольтовому напряжения при питании от 3.3 вольт. Тоесть на вход можно соединять напрямую, на выход тоже, но если 5 вольтовому входу в вашем устройстве 3,3 вольта на входе недостаточно, можете выход ST в виде открытого коллектора сконфигурировать и к 5 вольтам подтянуть. И да, забыл написать для совсем экономных есть ещё клон ST, вроде вполне официальный
                                                                                          можете посмотреть вот здесь
                                                                                          По моим оценкам они стоят где то в два раза дешевле чем аналогичные производства STM, но простейших Cortex-M0 они не производят, только старенькие копируют.
                                                                                          Если важно низкое энергопотребление то не подойдут.
                                                                                            0
                                                                                            А вот эти гигадевайсы это полный клон? В смысле инструментарий разработки и прошивки ровно тот же, что и у STM32?
                                                                                              0
                                                                                              Я натолкнулся на них совсем недавно, искал дешёвые микроконтроллеры для проекта «умной розетки». После месяца переговоров менее чем за сутки до момента заключения договора заказчик выставил невыполнимые условия и получил нахаляву ТЗ растворился. Весьма частая история.
                                                                                              В результате девайсы я так и не опробовал в действии. На сайте написано что они аналоги за исключением совсем мелких деталей в конфигурации. Я так понял все отладочные средства должны действовать, но не проверял.
                                                                                                0
                                                                                                Ясно. Я тоже на днях буквально их впервые увидел, глянул даташит, понял, что не для батареек и пока забыл.
                                                                                                  0
                                                                                                  Да, видно у них старая технология производства, чипы с пониженным энергопотреблением ещё не освоили
                                                                                            +1
                                                                                            Andy_Big, лишний транзистор это лишняя номенклатура на складе, это лишние точки пайки, это лишняя точка отказа, это собственно деньги на этот элемент, логистика его доставки. Оно то вроде как и мелочь но мы не в россии находимся — есть некоторые проблемы с некоторыми поставщиками, ещё нет доступа к автоматической сборке — малые обьемы а потому паяем руками оттуда стоимость точки пайки. Кроме того наше производство ещё и сезонностью обладает и в зимний период обьемы сильно сокращаются а к весне наоборот бум происходит спроса и соответственно производства. Типичный обьем — 600 штук в год одной модели. Всего в производстве 5 моделей. потому между ними максимлаьная унификация. собственно да — платка очень маленькая и потому даже на маске экономим — для ручной запайки это не проблема а потом плата всеравно покрывается лаком.

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

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

                                                                                                Я, конечно, не знаю Ваших условий, но чтобы на складе у компании, занимающейся разработкой и производством электронных устройств, не было самых ширпотребных копеечных транзисторов — как-то с трудом укладывается в голове. Я же не экзотику предлагаю ставить, которую еще поискать и доставить надо :) Про лишнюю точку отказа, если честно, вообще улыбнуло после того как прочел какого качества микроконтроллеры Вы ставите в серийные устройства. Вы не обижайтесь, я без наездов это, просто у меня действительно в голове не укладывается как можно на таких комплектующих делать коммерческую продукцию. Вот уж где не точка отказа, а жирное пятно, на фоне которого обычный транзистор даже в микроскоп не увидеть :)
                                                                                                  +2
                                                                                                  они не бракованные :) просто с особенностями, проходят жесткие испытания в обязательном порядке
                                                                                                  У нас это плавающая штука… там вода конденсат и прочее внутри гермокорпуса — милое дело. но по причине отказа проца ещё ни одной платы за 6 лет работы не вернулось ;) при производстве проблемы да… бывало но… то что ушло наружу обычно возвращается после утопления или наезда на него машины. хотя нет… был один кадр — он катал устройство в багажнике велика без амортизаторов и там тупо все выводные компоненты и штыревые соединения поотламывало(не поотсоединялись а именно поломало штыри у основания платы) так что нет — проблем с процами не бывает а вот с лишними точками пайки которые окисляются — бывает ещё и как.
                                                                                              0
                                                                                              С одной стороны понятно, но мне кажется конкурировать с китайцами вообще не самый правильный бизнес. В общем если он налажен, то ваша стратегия понятно, вопрос стоит скорее о новых разработках.
                                                                                              Но если идёт речь об экономии в несколько центов на плату… Шелкографией ясное дело можно пожертвовать. Маской — тут большой вопрос. Если ваши платы малы по размеру, а судя по косвенным признаком это так, то за счёт такой экономии выиграете вы меньше чем 5 центов за плату.
                                                                                              Кстати, покупая у китайцев неофициально произведённые микроконтроллеры на брак не нарывались? Если нарывались, компенсацию удавалось вырвать?
                                                                                              Ещё хочу заметить, если у вас постоянная потребность в одних и тех же чипах, в размере нескольких тысяч в год хотя бы, то можете обратиться к российским дистрибьюторам, реально защитить проект, сэкономить на этом 10 — 30 процентов, да ещё и товарный кредит получить!
                                                                                              В прошлой жизни я работал пару лет Бренд Менеджером, знаю эту кухню не по наслышке. Так что переход на простейшие АРМы в новых изделиях может даже снизить издержки. ПО у вас не сложное как я понял, модификация вряд ли отнимет много сил и времени.
                                                                                                0
                                                                                                ATSAMC — можно питать от 5 Вольт, ядро — Cortex-M0+. Плюс крайне разумное распределение пинов в корпусе 5 на 5 мм. Из 32 пинов 22 можно использовать как GPIO даже при подключении кварца и отладки. Сами поставили по именно этой причине из-за экономии места на плате, сунуть преобразователи уровней было реально некуда, а вот CAN был нужен позарез, так что хотя бы уже по этой причине все Меги пролетают.
                                                                                          0
                                                                                          Я сейчас к ней присматриваюсь, но тут согласен полностью с мнением mpa4b. Вроде бы документации на неё много, но как то всё не слишком прозрачно выглядит, нужно подстраиваться под их экосистему…
                                                                                          Вычислительная мощность большая, но выводов на корпусе и периферии маловато. Всё сильно заточено под программирование на скриптах.
                                                                                          В общем очень непривычная хотя и крайне любопытная штука.
                                                                                            +1
                                                                                            Камушек довольно противоречивый, хоть и тактовая частота у него 160Мгц реально добиться этого быстродействия невозможно в виду того что из разных сегментов памяти команды выбираются разное время, и толку от 160Мгц если ядро вынуждено ждать 10 тактов для выборки из медленной памяти? А быстрой памяти там кот наплакал и обычно она сильно занята. Можно многое, но с неочевидными ограничениями и приходится тасовать что где лучше всего держать или даже подгружать код по мере необходимости в SRAM.
                                                                                          0
                                                                                          А что добавит переход на Cortex-M4, кроме возросшей в пару раз цены?

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

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

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

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



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

                                                                                          По факту, очень похоже по стилю изложения на маркетолуха.
                                                                                            0
                                                                                            Да что вы говорите? usb host появился ещё в f105 и f205.

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

                                                                                            Вот тут как раз очень большая связь. Расширенную периферию в маркетинговых целях производители очень любят ставить в серии с высокопроизводительными ядрами, чтобы стимулировать их покупку, а не потому? что с ней скажем? тот же Cortex M0 не может справиться.
                                                                                            В этом отношении очень большой плюс, что появились малопотребляющие серии с богатой периферией. По крайней мере для меня, поскольку часто приходится делать проекты с автономным питанием.
                                                                                              0
                                                                                              Вот я это и пытаюсь сказать — что именно маркетолухи любят такие трюки и такой стиль изложения. А на самом деле никакой связи между 'кр00тым' ядром и богатой периферией нет, кроме искусственно заложенной маркетолухами при почёсывании в затылке 'а давайте новую серию замутим!'. Ну и к тому же проц M0+ не то чтобы прям уж сильно отличается от M0 без плюса.
                                                                                            +2
                                                                                            Ну вот в этом году ST выпустит STM32L5 серию со многими вкусняшками для защиты IP и anti-tamper фичами
                                                                                              0
                                                                                              Нельзя объять необъятное, особенно в одной статье, она и так чересчур длинная получилась. Будем изучать… В принципе уровни защиты даже десяток лет назад разработанным микроконтроллеров меня более чем устраивает. А вот появление плеяды АРМов со сверхнизким потреблением очень радует. Пока только до L4 успели ручки дотянуться…
                                                                                              +1
                                                                                              Такого количество заблуждений и откровенной дезинформации, как в этой статье, я никогда еще не встречал. Это же надо уметь — с настолько уверенным в себе видом распространять ошибочную информацию и более того, писать про это статью на сайте с довольно продвинутой аудиторией.
                                                                                                +2
                                                                                                Не могли бы Вы конкретизировать?
                                                                                                  +3
                                                                                                  1. Переходы от семейства к семейству мотивируются вещами, которых в природе нет, причем даже для очень полюбившихся автору STM32. Внимательнее нужно читать даташиты. Ну и о других производителях не забывать, а то смешно было местами.
                                                                                                  2. В описании периферии полно неточностей.
                                                                                                  3. Выводы о сравнении потребления 8-битников и 32-битников крайне спорные. Да, когда куча вычислений в int32 или с плавающей точкой, то да, есть смысл, когда же идет работа с периферией или просто дрыганье ногами, то эффективность ARM гораздо ниже заявленной, так что ни о каком преимуществе речи нет.
                                                                                                  И да, я работал и работаю как с 8-битниками, так и с АРМами, причем не от одного-двух производителей.
                                                                                                    +1
                                                                                                    Переходы от семейства к семейству мотивируются вещами, которых в природе нет

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

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

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

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

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

                                                                                                            Ну, Вы-то со своими категоричными утверждениями еще более свободно подменяете понятие «в некоторых случаях» на «всегда» :)
                                                                                                              0
                                                                                                              Еще раз — сравните BFI и SBI/SBIC/SBIS
                                                                                                                0
                                                                                                                Да что Вы уперлись в эти битовые операции над выводами? Ручная работа с выводами — вообще достаточно редкая операция на фоне всего остального. Если, конечно, не эмулировать программно какой-то аппаратный интерфейс из-за убогости аппаратных возможностей 8-битника :)
                                                                                                                  +1
                                                                                                                  Резюме:
                                                                                                                  * битовые операции есть, но не у всех кортексов и только для регистров общего назначения
                                                                                                                  * DMA помогает не всегда и есть не у всех
                                                                                                                  * богатство периферии с одной стороны приводит к большему оверхеду с настройками
                                                                                                                  Вопрос:
                                                                                                                  Мы точно о преимуществах в работе с низким потреблением говорим?
                                                                                                                    0
                                                                                                                    Другое резюме:
                                                                                                                    * бедность периферии заставляет дергать I/O, руками, хотя битовые операции с I/O чуть-чуть помогают
                                                                                                                    * DMA не помогает нигде и никогда
                                                                                                                    * отсутствие необходимости настройки периферии экономит сотню тактов, но передача пары-тройки байт по софтовому SPI съедает напрочь эту экономию
                                                                                                                    * необходимость провести какие-то вычисления с числами больше байта (например, произвести расчет реального атмосферного давления из полученных от датчика BMP180 данных) приводит к большому оверхеду
                                                                                                                      +1
                                                                                                                      У AVR нет хардварного SPI? Вот это сюрприз!
                                                                                                                      Кстати, а Вы в курсе, что даже у 8-битников бывает DMA? Вот у того же CC2540 с 8051 ядром есть для передачи по SPI. А у nRF51822 с ядром Cortex-M0, сюрприз-сюрприз, нету! Как с этим быть?
                                                                                                                        0
                                                                                                                        У AVR нет хардварного SPI?

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

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

                                                                                                                        А как быть с тем, что у CC2540 нет команд SBI/SBIC/SBIS? И как это увязать с Вашим утверждением «в плане работы с битами ARM всегда проигрывает мелким контроллерам»?
                                                                                                                          0
                                                                                                                          Есть всякие AtTiny с аж 4 каналами fastPWM.
                                                                                                                            0
                                                                                                                            На двух таймерах, один из которых 8-битный :)
                                                                                                                              0
                                                                                                                              Будто Вы никогда не использовали счётчик переполнения счётчика переполнений таймера :)
                                                                                                                                0
                                                                                                                                Аппаратному ШИМу это не поможет :)
                                                                                                                                  0
                                                                                                                                  Это да, я так с input capture баловался, а начало ветки невнимательно прочёл.
                                                                                                                            0
                                                                                                                            У AVR нет двух хардварных SPI

                                                                                                                            Зато иногда в режиме SPI может работать UART (или как он там уже начинает называться).
                                                                                                                              0
                                                                                                                              На мелких камнях у них везде USI, который конфигурируется как spi/twi/uart и тд.
                                                                                                                                0
                                                                                                                                Так это собственно всё один и тот же модуль. Два и больше USART модулей встречаются только в старших моделях контроллеров.
                                                                                                                            0
                                                                                                                            Согласен со всем, кроме одного, бывают таки случаи, когда DMA полезно, ну во всяком случае в ARMaх
                                                                                                                              0
                                                                                                                              Вообще, я это резюме писал на 8-битники, у которых DMA попросту нет :)
                                                                                                                              А при его наличии — да, DMA очень часто дает большой выигрыш.
                                                                                                                        0
                                                                                                                        Сравните bit banding, который есть в M3 (и наверное M4, не уверен), доступен для большей части периферии и ПАМЯТИ, и периферию в АВРках, вылезшую за предел диапазона SBI/CBI/SBIC/SBIS (всего 32 байта тот диапазон).
                                                                                                                          0
                                                                                                                          Вы смотрели, как это осуществляется компилятором?
                                                                                                                            0
                                                                                                                            Если в авр вылезет на пределы тех 32 байтов — то будет read-modify-write, никуда не деться.

                                                                                                                            bitbanding сам по себе в gcc не поддерживается, но можно написать простейшую функцию c __attribute__((always_inline)) и тогда всё хорошо. Номера битов в инклудах есть, покрмере для stm32
                                                                                                        +1
                                                                                                        Спасибо за статью, всё буквально на пальцах, в качестве мотивационной отлична.
                                                                                                        Лично меня в разработке электроники больше всего смутило и удивило, что корпус и/или продажная упаковка часто стоят дороже самой электронной компоненты.
                                                                                                          0
                                                                                                          Спасибо.
                                                                                                          Лично меня в разработке электроники больше всего смутило и удивило, что корпус и/или продажная упаковка часто стоят дороже самой электронной компоненты.

                                                                                                          Это наверно потому, что вы ещё не интересовались сколько стоит молд, или другими словами прессформа, для изготовления кастомного корпуса. Вот это действительно адские деньги! Уложиться в 10K гринов — большая удача!
                                                                                                            +2
                                                                                                            Интересовался, правда, уже после первой собственной метеостанции :)
                                                                                                            Молд — это всё-таки крупная серия, если единицы-десятки штука корпуса ещё дороже, хотя серия суммарно и дешевле. С большим удовольствием читаю, как уродуются пытаются сэкономить на изготовлении ребята из проекта по автономному сборщику мячей для гольфа, используя разные технологии. Да и статьи Milfgard про производство тоже оказались полезными, теперь я знаю, сколько может стоить правильная картонная коробка…
                                                                                                              0
                                                                                                              Лично я бы при не слишком больших сериях присмотрелся бы к плоскостным технологиям. Корпус из нескольких вырезанных из оргстекла слоёв. Ребята делают ещё и из цветных, весьма симпатично получается. Само стекло и его резка лазером в России очень дёшево обходится.
                                                                                                                +1
                                                                                                                Так тоже удобно, а если не клеить, а гнуть, то ещё красиво и оригинально. Особенно удобно, если девайс получается большим, больше коробки для обуви. Но ещё больше мне нравится фанера вместо оргстекла, по деньгам и горючести примерно так же, зато попрочнее, получше со статикой и ультрафиолета не боится (мне важно), а чтобы можно было мыть — оклеить тонировочной плёнкой или полиэтиленовую феном наварить.
                                                                                                          +2
                                                                                                          Мы используем Microblaze внутри ПЛИС.
                                                                                                            0
                                                                                                            Путь настоящих джидаев! По белому завидую. Давно тянет меня ПЛИС, но так пока и не сделал на них ни одного проекта.
                                                                                                              +1
                                                                                                              Так пора начинать. На али куча дешёвых плат. В инете полно рецептов.
                                                                                                                0
                                                                                                                Нет свободного времени да и задач, если честно.
                                                                                                            0
                                                                                                            А как компилируете, отлаживаетесь? gcc, openocd или проприетарный vendor lock?
                                                                                                              0
                                                                                                              Всё в комплекте от производителя. Но там Eclipse-based система для софта. Так что всё вполне стандартно.
                                                                                                            0
                                                                                                            Не подскажете, где поискать DC-DC преобразователи с внутренним потреблением в единицы-десятки микроампер? Это реальная проблема — потребление МК понятно, как уменьшать, а вот найти понижайку пока получилось только с собственными запросами на 160мкА. Нужно получить 3.2В от входных 3.6...6В.
                                                                                                              +1
                                                                                                              Тут надо считать энергопотребление во включенном состоянии. Если ваш прибор подавляющее время спит, а работает совсем короткий по времени участок, то выгоднее может быть заменить на LDO с потреблением в 3 микроампера и не парится и это получится выгоднее. В одном из своих устройств я так и сделал, тут выбор большой мне очень нравятся такие
                                                                                                                0
                                                                                                                Из импульсников вот такие использовал
                                                                                                                TPS6205x 800-mA Synchronous Step-Down Converter
                                                                                                                12-µA Quiescent Current (Typical)
                                                                                                                  0
                                                                                                                  А что-то вроде TPS62745 чем вас не устраивает? У него собственный ток меньше 1 мкА при максимальном выходном токе в 300 мА.
                                                                                                                  И про LDO выше дело написано.
                                                                                                                    0
                                                                                                                    Уникальный серийный номер Каждый микроконтроллер имеет свой уникальный серийный номер, присвоенный ему на производстве. Очень удобная особенность, которую можно использовать при организации серийного производства ваших изделий.

                                                                                                                    Пришлось лезть в гугл… Ну нет не Атмегах серийника, только в версиях с USB он бывает.
                                                                                                                      +2
                                                                                                                      А когда это атмега успела попасть в категорию «простейшего ARM микроконтроллера за пол бакса… одной из простейших серий от ST на основе ядра Cortex-M0 — stm32F03»? :)
                                                                                                                        0
                                                                                                                        Его можно самому генерировать из Wafer_ID и прочих параметров. Хотя, возможно, они только в иксмегах
                                                                                                                          0
                                                                                                                          Я про меги ничего не писал. Последний проект на AVR сделал боле 10 лет назад. Это касалось ARM от ST
                                                                                                                          +2
                                                                                                                          Этот график какой-то менеджер по продажам рисовал?
                                                                                                                          график энергопотребления
                                                                                                                          image

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