94

STM32 от Булкина. Atmega и Arduino vs STM32 и HAL

Долго думал над содержанием, но всё-таки решил написать статью-сравнение Atmega vs STM32 и немного пройтись по Arduino vs HAL.


Предыдущие статьи:


Настройка Sublime Text 3, SW4 и STM32CubeMX для разработки STM32 под Windows 10

Настройка Sublime Text 3, SW4 и STM32CubeMX для разработки STM32 под Linux

STM32 от Булкина. Урок 1: Вводный, где мы немножко похулиганим


Вступление


Давайте немного определимся с понятиями и что же мы будем сравнивать.


Для начала зададимся вопросом, а корректно ли сравнивать 8-битную архитектуру МК Atmega/ATtiny и 32-битную ARM STM32?


Собственно, в этой статье я обсуждаю преимущества, которая даёт 32-битная архитектура в целом, а также преимущества МК STM32 относительно МК Atmega/ATtiny в частности. Вопрос из той же оперы, как стоит ли переходить с процессоров i486 на i7.


Я сам занимаюсь автоматикой. Так что и вижу я картину с точки зрения автоматики, в основном промышленной.


Немного теории о 8 битах


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


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


А что с производительностью?


Тут можно обратиться к сухим синтетическим тестам, например CoreMark. Он хорош ещё и тем, что даёт показатель CoreMark/MHz. Просто навскидку из таблицы:


- ATmega2560 (на частоте 8МГц): 0.53 CoreMark/MHz

- ATmega644 (на частоте 20МГц): 0.54 CoreMark/MHz

- STM32F103RB (на частоте 72МГц): 1.50 CoreMark/MHz

- STM32F051C8 (на частоте 48МГц): 2.20 CoreMark/MHz


Ещё раз подчеркиваю, это показатель производительности на МГц частоты. Общая производительность вообще разгромная:


- ATmega2560 (на частоте 8МГц): 4.25 CoreMark

- ATmega644 (на частоте 20МГц): 10.21 CoreMark

- STM32F103RB (на частоте 72МГц): 108.26 CoreMark

- STM32F051C8 (на частоте 48МГц): 105.61 CoreMark


Я привёл примеры наиболее используемых МК из готовой таблицы.


Если ещё коснуться ARM, то они имеют набор команд Thumb, которые позволяют делать, например, множественные пересылки данных одной командой.


Давайте сюда ещё прибавим модуль FPU, который есть на всех STM32 начиная с серий F3xx. Значительно ускоряет вычисления с плавающей точкой. Конечно, можно изгаляться с псевдо-плавающей точкой, типа умножать такие числа на 1000 и считать их целыми. Но на деле это далеко не всегда возможно и удобно.


И ещё потом добавим DMA, который на порядок ускоряет работу с периферией и не только.


Выходит очень вкусно, я считаю.

А что с потреблением?


Тут всё по канонам. В сравнении с 32-бит, 8-битные МК производят в 4 раза больше циклов обращения к памяти и большее количество команд для копирования того же объема данных. Также, например, ARM позволяют выполнять по 2 команды Thumb за такт. У 32-бит меньше работы, меньше потребление.


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


Также это всё значит, что и работаем на пониженном напряжении. Это 3.3В у STM32 против 5В у Atmega. Конечно, у Atmega можно снизить напряжение, но придётся снижать и частоту в разы. Если брать те же 3.3В, то придётся снизить частоту до 10МГц.


Это кстати, ещё преимущество для STM32. Далеко не вся периферия работает на 5В, поэтому приходится ставить дополнительный регулятор напряжения для неё при использовании ATmega/ATtiny.


Хотя, чего греха таить, я сам предпочитаю использовать импульсный регулятор на входе на 4.5-5В и потом опускаю линейником до 3.3В. Это особенно важно там, где используются ADC/DAC.

Ну и не забудем про такую серию у STM32, как Lxxx. Это МК с ультра-низким потреблением. Хотя они дороговаты. Но у них, зато, есть ещё и EEPROM на борту, как у Atmega/ATtiny.

А что с ценой?


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


Если брать современную серию STM32 на Cortex M4 и Cortex M7, это F3xx и выше, там цена выше, конечно, но и плюшек море.


Замучил уже, сравнивай в таблице!

Я решил разбить сравнение на 4 части:


Микро: ATtiny861A-SU vs STM32F030F4P6

Мини: ATmega328P-AU vs STM32F103C8T6

Средне: ATmega644PA-AU vs STM32F303CBT6

Макси: ATmega2560-16AU vs STM32F405VGT6


Линейка чипов огромная о обоих производителей. Я выбирал такие чипы, которые схожи по ногам, более менее по памяти и периферии. В каждом пункте ниже дам немного описаний, почему и как.
Я намеренно не сравниваю отладочные платы, особенно с Ali. Их вообще надо использовать только для отладки софта и разработки готового устройства. Мы же серьёзные люди, да?
Я не буду брать цены с Ali, только Российские поставщики. Я не буду давать тут рекламу, могу в комментах ответить, где я покупаю. Всегда есть, где подороже, а где подешевле. Нам важны относительные цены. К тому же, через неделю они могут поменяться, все зависит от курса $.

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


Я везде в STM32 отмечаю наличие CRC32. Это очень важная и нужная фишка. Позволяет считать контрольные суммы налету. Очень нужно, если пишете свой протокол обмена данными, например. Для того же Modbus можно приспособить.


Все фотки самих чипов я делал на планшет, цифры сейчас нет под рукой. Все фото мои личные, фотал чипы из своих запасов.

Микро: ATtiny861A-SU vs STM32F030F4P6


Собственно решение для минимальных задач. Выбирал МК по доступности, количеству ног ну и более-менее нормальной периферии.

STM32 от Булкина. Atmega и Arduino vs STM32 и HAL Stm32, Atmega, AtTiny, Arduino, Длиннопост

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

STM32 от Булкина. Atmega и Arduino vs STM32 и HAL Stm32, Atmega, AtTiny, Arduino, Длиннопост

Мини: ATmega328P-AU vs STM32F103C8T6

STM32 от Булкина. Atmega и Arduino vs STM32 и HAL Stm32, Atmega, AtTiny, Arduino, Длиннопост

Слева ATmega, справа STM32. При схожих размерах, ног у STM32 больше.

STM32 от Булкина. Atmega и Arduino vs STM32 и HAL Stm32, Atmega, AtTiny, Arduino, Длиннопост

Средне: ATmega644PA-AU vs STM32F303CBT6


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


Относительно STM32F303CB стоит заметить, что это очень сбалансированный чип по всем параметрам. Богатая периферия, много памяти, нормальная цена. Есть FPU, аппаратная поддержка RS485 (умеет аппаратно дёргать ногой направления передачи данных) и куча других плюшек.

STM32 от Булкина. Atmega и Arduino vs STM32 и HAL Stm32, Atmega, AtTiny, Arduino, Длиннопост

Слева ATmega, справа STM32. При сравнимом количестве ног, размер у STM32 меньше.

STM32 от Булкина. Atmega и Arduino vs STM32 и HAL Stm32, Atmega, AtTiny, Arduino, Длиннопост

Макси: ATmega2560-16AU vs STM32F405VGT6


Ну выбор МК от AVR в этой категории очевиден. STM32F405 выбрал также из-за его сбалансированности. А ещё вкусной цене при таких-то характеристиках.

STM32 от Булкина. Atmega и Arduino vs STM32 и HAL Stm32, Atmega, AtTiny, Arduino, Длиннопост

Выводы


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


Где-то года полтора назад я сам наткнулся на подобное сравнение и был ошарашен. К тому моменту уже больше года у меня было несколько отладочных плат на STM32 и я всё никак не мог к ним подступиться. Но тогда твёрдо решил добить. Отложил дела и потратил месяц на изучение. Через вопли, бури возмущения, сопли и ярость. А теперь не понимаю, как я раньше жил на Atmega’х и Arduino.


Ладно. Хочу отметить некоторые вещи, которые здорово влияют на выбор с обеих сторон.


Плюсы Arduino и вообще.


Конечно же сама экосистема. Огромная база знаний, огромное коммьюнити.

Библиотеки есть подо всё, прям вообще.

Доступность шилдов подо всё и вся.

Чрезвычайно низкий порог вхождения, вот для любого.

На борту есть EEPROM, это очень удобно и круто.

Отдельно стоит отметить, что даже без Arduino программировать под Atmel довольно легко. Библиотеки, Atmel Studio и прочее.


Но есть и глобальные недостатки.


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

На Arduino нет нормальной отладки. Serial.print() - это нефига не отладка.

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

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

Сама по себе платформа, не смотря даже на то, что и STM32 тоже может работать с Arduino, подразумевает усреднение. Отсюда даже на нормальных чипах ты получаешь кастрата. И по-любому приходится лезть в дебри. Ну и в чём смысл тогда?

Если касаться Atmel Studio - это тяжелейший монстр, который даже на моем i5 с 24Gb и SSD тормозит так, как Quake на 486-м.


А что сказать хорошего про STM32?


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

У тебя всегда изначально куча периферии. И ты выбираешь, на какие ноги её вешать и плату разводишь, как тебе удобно. А МК уже конфигурируешь исходя из этого.

Из неочевидного, например, на любую ногу можно сделать как PullUP, так и PullDown. А это очень облегчает проектировку плат, поверьте.

HAL, на самом деле, очень мощный инструмент. Хотя некоторые его хают за громоздкость, но на деле это в основном набор готовых #define, которые сильно облегчают написание и чтение кода. И переносимость!

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

STM32CubeMX вообще панацея. За пару минут переносится код на почти любой другой STM32. Что-то поменял? Нет проблем, галочки расставил, пересобрал проект и всё!

Тот же SPI на F405 можно запустить на 41Мбит! Я просто EEPROM на SPI пользую на 21Мбит. А ещё прибавьте к нему DMA и вообще красота! Летает!

А наличие USB и RTC почти во всех STM32?


Ладно, плюсами можно до бесконечности. Что из минусов есть:


Довольно трудный вход. Разобраться сходу не получится, нужно иметь базис.

Библиотек в свободном доступе не то чтобы нет. Есть и много. Но они либо под устаревший StdPerif, либо заточены под конкретного человека и его собственный набор библиотек. Либо и то, и другое сразу. Так, чтобы почти без доработки большая редкость. К сожалению, сложно абстрагировать библиотеку в STM32, они часто повязаны друг с другом и заточены подо что-то конкретное

Так что да, вам придётся писать свои библиотеки довольно часто. Даже под элементарные вещи вроде LCD1602

Вас будет бесить написание HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET) в сравнении с digitaWrite(LED1, HIGH). Вас будет бесить, что вы должны ВСЕГДА указывать размер буфера приёма. Ведь какая красота в Arduino Serial.available()! Нет, в STM32 мы тоже можете сделать подобное, но придётся взрыть тонны документации, чтоб понять некоторые неочевидные, но элементарные вещи.

Вас будет бесить переход к C99 после C++, но потом даже будете этому рады.

Вас будет бесить объем и количество документации по STM32. Но потом вы проникнетесь и увидите лаконичность и очень грамотную подачу относительно документации Atmel.

На борту нет EEPROM, кроме серии STM32Lxxxx, которая дорогая, как изумруд.


Стоит ещё отметить такую штуку, как Mbed. Довольно крутая вещь для IoT. Большое коммьюнити, мощная поддержка. Куча библиотек для всего. Хотя для моих задач не очень подходит. Посмотрите, если в чистом виде STM32 пугает. STM выпускает платы Nucleo под эту платформу. Так что есть готовые решения, есть =)


Ладно. Всего не отметишь. Обо всём не расскажешь. Каждый должен сам решить, стоит ли. Я вот прошел этот рубеж и безумно этому рад. Я не пошёл по простому пути Arduino -> RPi и в результате имею сейчас гораздо более мощные инструменты. Конечно, одноплатки нужны и они крутые. Туда и Linux можно накатить, и сервачок поднять с БД. Но это другая опера.


На сегодня всё, удачи!

Дубликаты не найдены

124 комментария

по актуальности
+4
Ой ну правда? А меня ещё недавно на пикабу пытались убедить что Ардуино это даже для профи маст хэв. Главное ведь это поменьше думать и делать копипаст из кучи готовых проектов. Нам наплевать на цену, на оптимизацию, лишь бы не разводить плату, не писать свои либы, вообще ничего не делать. Ну вот когда профи так думали!?
В общем рад, что на пикабу появились адекваты в этом вопросе.
Эх написать что ли про stm8...
раскрыть ветку 6
+1
Ой, рискуете, против истины восстали ведь!😂
А напишите! Мне вот точно интересно было бы.
раскрыть ветку 1
0

Против истины едва ли)

может под НГ когда зачёты закрою)

-1

Справедливости ради, замечу, что ЧПУ станки изобрели такие же лентяи.

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

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

Стыд-позор!

раскрыть ветку 3
+2

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

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

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

раскрыть ветку 2
+2

@ComradeBulkin делает хорошие посты, нет сомнения, но на мой взгляд, он взялся за это дело не с той стороны. Ардуинщиков всё равно не перетащишь на STM, по моему опыту, для них главный критерий - дешевизна. А вот новым программистам, ещё не знакомым с микроконтроллерами, полезнее, на мой взгляд будет объяснение тонкостей архитектуры - что такое NVIC и с чем его ядять, как организовано адресное пространство МК и что такое бит-алиасы, как работает DMA и чем USART отличается от UART.


Это, конечно, чисто моё мнение, ваше может с ним не совпадать.

раскрыть ветку 5
+1

Ну во-первых, ценой таки бьёт =) А во-вторых, я двигаюсь путём, которым сам пришёл в STM32. Не переживайте, я обязательно обо всем этом напишу =)

раскрыть ветку 1
0

Ну, посмотрим :)

Иллюстрация к комментарию
0
Ардуинщиков всё равно не перетащишь на STM, по моему опыту, для них главный критерий - дешевизна.

Они одинаково стоят. А если покупать дебильные шилды (имхо самое неудачное в ардуине), то ардуино дороже окажется.

Проблема в пороге вхождения и малом комьюнити.

Ведь активнее те, кто занимается этим из-за хобби, а не по работе.

раскрыть ветку 2
0

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

раскрыть ветку 1
+2
Библиотеки есть подо всё, прям вообще.
А вот под мой TDA7448 нету. Я прям конкретно упоролся и поискал, нетути, с нуля надо писать. Там вроде совсем просто, но для человека который с нуля учит, сложновато.



Я тоже года полтора столкнулся с этой темой и тогда-же начал делать свои первые шаги в направлении МК. Но достаточно медленно, маловато времени. И в целом, я всегда очень медленно учусь.

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

раскрыть ветку 18
0

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

раскрыть ветку 2
0

Ах да, напоминаю :-)
#comment_101350133

раскрыть ветку 1
0

разберись как данные в I2C слать/принимать и тебе не понадобятся никакие библиотеки, там вообще всё просто

раскрыть ветку 8
0
и тебе не понадобятся никакие библиотеки

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

раскрыть ветку 4
0
Нет, делать либу-обвязку то правильный подход. Просто многие переоценивают сложность написания своей микролибы.
раскрыть ветку 2
0
Ну так купи плату с mbed, будет очень похоже.
раскрыть ветку 5
0

Но библиотеки под TDA7448 у них один фиг нету :-)

раскрыть ветку 4
+1

А ко мне едет новый полетник на F3 процессоре -_-. F4 и F7 будут избыточны, их гонщики на свои гоночные коптеры пихают, согласно последним пискам моды. Хотя, в F7 пытаются уже не только полетную прошивку запихать, но и обработку видео хотят повесить (накладывать данные с датчиков на видеопоток с камеры), и тем самым выкинуть глючный osd чип, который мрет от косого взгляда. Вывезет он такое?

раскрыть ветку 4
+1
Как-бы народ и на F4ом делал векторный осд (чип от maxim символьный).
Мощи f7 получается с избытком, так что можно всё собрать в одно. Минус только один - куча рт кода на одном чипе.
раскрыть ветку 1
0
И да, обработки видео там скорее всего нет. Только хитрое наложение аналогового сигнала осд на сигнал от камеры.
0

Не понял, вопрос про F3 или про F7?

раскрыть ветку 1
0

F7

+1
STM32CubeMX вообще панацея.

Ну для начала - может быть и да. Но не зря на околоэлектронных форумах рунета его обычно называют "калокубом" :)

раскрыть ветку 7
+1

Ну и зря. За последний год он сильно вырос и изменился. Баги почистили, возможностей нарастили. Реально мощный и полезный продукт получился.

А на подобных форумах в основном обитают те, кто изначально программил напрямую регистрами и/или в StdPerif. У них куча собственных библиотек, прикрутить к HAL Их затруднительно. К тому есть некие предрассудки насчет убогости HAL. Но это также давно уже не так.

раскрыть ветку 6
+2

Ну я давно сижу под StdPeriph, хотя могу и регистрами. Соответственно сейчас появляются небольшие проблемы с переходом от F4 к F7 и H7... но на куб переходить ни в коем случае не буду - иначе так вот возникнет необходимость использовать что-то из NXP/Atmel/что-то в этом духе - и будешь недоумевать как это сделать с одним даташитом и небольшой кучкой примеров.
Короче с кубом очень легко опуститься до уровня ардуинщиков.

раскрыть ветку 5
+1

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

раскрыть ветку 29
+2

Не смотря на огромную базу кода, Ардуино всё-таки это сегмент DIY, а STM - профессиональный.

раскрыть ветку 3
0

Ну так и я о том же. Любителям, школьникам и в детский сад - ардуину, студентам STM, а профессионалам - еще что-нибудь.

раскрыть ветку 2
+1

Да ну ладно уж. Чтобы нормально разбираться, что с AVR, что с STM надо читать даташиты, и там и там они неплохо написаны. В плюс к STM идет отличная отладка практически на любом чипе, то есть даже если чего не понял в даташите - всегда можно вручную галки потыкать в режиме отладки и посмотреть, что оно дает. На AVR мало какие чипы поддерживают отладку по JTAG, именно по этой причине в свое время начал изучение с 32ой меги, там все это есть и процесс вкуривания происходит быстро и безболезненно.


Так то, если смотреть вообще с нуля, то AVR все-таки проще и предпочтительнее, особенно, если начинать как полагается с ассемблера (варнинг, будешь хорошо знать исподнее микроконтроллера, но переход на Си будет ломкой просто). Только стоит все-таки брать камень с поддержкой отладки по JTAG-у. Ну а после основ хорошего тона в программировании для встраиваемых систем уже можно переползать на Си и на STM, ибо по железу камни реально улет.

раскрыть ветку 20
0
А знаете, что я вам скажу? Вот взялись и написали бы статейку типа "Программирование STM для чайников". Хотя нет, это громоздко, еще проще, "Мигаем светодиодом на STM и смотрим отладку по JTAG". Как-то так).

Я заглядывал, ужаснулся и закрыл. Поясню: я нисколько не профи, это так, мое хобби. В далеких 80-х годах нигде не преподавали информатику. Зато сяли бронь со студентов и призывали в армию после 1 курса ВУЗов. Так и со мной случилось. Вернувшись через 2 года, я с удивлением узнал, что программа обучения изменилась и мне надо досдать информатику, чтобы учиться дальше. Это было совершенно неизведанное поле. Друг, который не служил по здоровью, уже этим увлекся и дал мне книжку по Паскалю. Я взял задание по лабам, книжку, за 1,5 м-ца смог сделать лабы, которые заработали с первого раза. По этой же книжке я сдал экзамены на 5. И с тех пор больше не  пользовался этими знаниями. А пару лет назад, я просто открыл сайт Ардуино ру и смог делать простые вещи. Сейчас лучше получается, пользуюсь своими библиотеками, реально работают некотоые вещи (я тут про теплицу писал - она работает отлично, совсем не вызывает нареканий). Понадобилось к ней ВайФай модуль подключить, а он на STM. Сунулся - темный лес. Нашел  статью, как программировать их на ардуино, подключил, но осадочек остался. Хотелось бы пользоваться, но отсутствие базовых знаний не позволяет. А когда тебе под 50 - тяжело браться. А с Ардуиной можно. А были бы статьи не для профи по STM - я бы взялся. А так, сколь не хвали STM, да зуб неймет.)

раскрыть ветку 19
+1

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

раскрыть ветку 3
+2

Популярность - это не продажи. Популярность - это количество информации. Любители с радостью делятся своими кривыми наработками, а профессионалы молчат, зачем им конкуренты? Да хоть и здесь посмотрите. Продажи - потому что используют, очевидно, для производства.

раскрыть ветку 2
0
Немного поздновато с комментарием, но все же. Почему все постоянно сравнивают STM32 и Atmega. Почему все упускают из виду Xmega. Atmega в сравнении с ней, нервно курит в сторонке. Там и DMA, и куча других приколюх. В плане переферии не дотягивает до ARM, но и сильное отличие от Atmega. В России Xmega не прижилась, но "за бугром" ее активно используют.
раскрыть ветку 1
+1

Стоимость чипов несопастовима.

0
А про пики? Будет статейка?
раскрыть ветку 1
0

Боюсь, это не ко мне =) Опыт есть, конечно, но я не тяну на гуру никак в этом вопросе.

0

а как у стм с точностью таймеров?

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


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

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

раскрыть ветку 11
0

Сможет, в принципе, почему нет? У нас вот STM-ка на 120 МГц работает. Вот табличка.

Иллюстрация к комментарию
раскрыть ветку 8
0

я сейчас делаю говноустройство измерения скорости лыжника(gps в горах сильно врет).

Имеем прибор с  лазером и фотодиодом.  Пересекая лазер мы запускаем таймер.

ставим 2 таких прибора на расстоянии 10 метров друг от друга.

пересекаем первый - запускаем таймер. пересекаем второй - останавливаем.  обмен данными по радио с фиксированным(почти) временем доставки.


10 метров из за малой частоты таймера(1 тик - 100мкс). радиоканал вносит довольно большую погрешность и геморой.

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

раскрыть ветку 7
0

1мкс это уж совсем круто как-то. Вот не пробовал с таким минимумом. Но теоретически, да, возможно. Но надо будет подбирать резонатор и настроить системную шину так, чтоб делитель таймера дал в итоге импульс 100нс хотя бы. Если речь таки про 12мс, то любой таймер можно настроить на 1мкс. Я таким таймером пользуюсь, например, для OneWire. Если смотреть осциллографом, то, например, задержка 400мкс на экране порядка 410мкс. Но это скорее погрешность курсора, который ручками выставляешь для измерений.

раскрыть ветку 1
0

да, крутовато и слегка избыточно) в 10 раз)))

0

А есть тут кто машинки по больше кодит? Siemens? B and R? AlenBradley? Асушники в общем?

0
Как вы платы делаете? расскажите подавану
раскрыть ветку 10
+1
Вы будто спросили, как я детей делаю, ну вот так. И так 😀 Не знаю даже, с чего начать. В KiCAD я делаю платы, производство на заводе. Прототипы сам запекаю в печке, которую сам сделал для этого. Ну и так далее. Что конкретно интересует?
раскрыть ветку 9
0
Приятно видеть, что мои усилия по KiCad не пропали даром.
0
Да, интересно как прототипы делаете. На каком оборудовании. Что применяете для изготовления прототипов плат. Мне заводское изготовление не интересно. Я радиолюбитель)
раскрыть ветку 2
0

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

а если у тебя говнопринтер с говнобумагой, то конечно проще готовую ардуинку купить чем мудохаться с лутом)

раскрыть ветку 4
0

Какую среду пользуешь?

раскрыть ветку 1
+1
Sublime Text 3 для кодинга, Keil или SW4 для отладки.
0
И ты выбираешь, на какие ноги её вешать и плату разводишь, как тебе удобно.

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

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

Ну да, в таком контексте не совсем корректно звучит, ваша правда. Я имел ввиду, что периферии много и можно переназначать на разные ноги почти всегда (не на любые, к сожалению). Или просто, если нужен USART, то есть вариант выбрать из нескольких доступных (или даже больше). А GPIO можно вообще на любую ногу, хоть PullUP, хоть PullDown, хоть OpenDrain. Кра-со-та!

раскрыть ветку 1
+1
Когда небыло cubemx'а выбор портов был жудкой головной болью.
0

Espruino рулит для входа и для даже кода. А вот когда начнут вылезать с ним НЬЮАНСЫ [, Петька,] , тогда уже к нормальным вещам. И стандарт C99 я бы ставил выше чем c++ для МК по удобству и возможностям, от его извращений тут один вред, плюс вещи неявные которые есть в 99 есть только в C++13 и выше.

раскрыть ветку 1
+1

Ну тут не поспоришь. C99, конечно, не имеет некоторых фишек C++, но для программирования МК просто идеален.

0

Слежу, читаю. Много думаю....

Вопрос: а как насчёт перехода с AVR на STM на уровне программ, т.е. перекомпиляция?

раскрыть ветку 2
+1

Что-то близкое можно получить с переходом на STM32Duino. Если использовать совместимые платы, например, с Uno, то работа минимальная.

раскрыть ветку 1
0

СПС.

0
А можешь рассказать про прошивку stm под arduino?
0
Все никак не получается собраться с силами и засесть за изучение STM32. А начать надо. Подпишусь. Спасибо!
0
Ах да, сейчас появился монстр H7. У меня микропроцессор в роутере был слабее чем этот микроконтроллер.
раскрыть ветку 2
0

На него уже и линь можно накатить даже =)

раскрыть ветку 1
0
Может и можно, mmu там вроде завезли. Но зачем? Там лучше nuttx если нужно позиксовое.
0
Странно что M0 уделывает более навороченное ядро M3. F050 очень прикольная замена всяким тини. У F3 самые крутые блоки usart, там реально куча фишек. Например можно поменять местами rx/tx. Можно включить инверсию сигнала, данных. Всякие SBUS'ы заводятся без внешнего обвеса.
Меня только огорчает ущербный DMAv1 (из f1). Могли бы взять и из 2-4, особенно учитывая что порядок был 1-2-4-3-0.
раскрыть ветку 2
0

Привык к тому, что f3 любой s-bus жрет, при настройке f1 долго пытался понять, почему приемник отказывается работать с процом по s-bus. Пришлось инвертор на куске светодиодной ленты паять.

раскрыть ветку 1
+1

Аххах, а что, а выход! =)

0
Крайне занимательно было узнать такие нюансы. Рекомендую к прочтению. Спасибо, Васяня!
раскрыть ветку 1
0

Благодарю =)

Похожие посты
Похожие посты закончились. Возможно, вас заинтересуют другие посты по тегам: