LINUX.ORG.RU

И снова AVR vs ARM. Что разумнее выбрать?

 , ,


1

1

Всем доброго времени суток. Давайте поговорим. Находил кучу холиваров по поводу того, что же лучше: AVR или ARM (STM32, например). Бросания говен в этих холиварах совершенно не интересны, поэтому, может ли кто-то внятно и адекватно выразить свое личное мнение по поводу того, какое семейство МК лучше. Я пишу на Си под arm-ы, embedded linux, поэтому, наверное, мне было бы проще использовать мой тулчейн gcc и скорее всего, я выбрал бы ARM-контроллеры, но что-то не замечал особой гибкости в их периферии и объемах памяти. Мне нравится, когда в МК есть только то, что мне нужно, а того, чего мне совершенно не нужно, там нет. Например, если стоит задача: снимать показания датчика света и отправлять по i2c, мне бы не хотелось использовать STM32 для такой простой задачи, ведь для этого нужен слабенький, маложрущий, маленький и дешевый МК, какой-нибудь AtTiny. (Ок, они все относительно дешевы, если штучно). Не хотелось бы углубиться и изучить что-либо, а потом, матерясь, забывать это и изучать другое. Каково ваше мнение, какие МК лучше? (И, по возможности, аргументацию). Спасибо.



Последнее исправление: G-virus (всего исправлений: 1)

Ответ на: комментарий от vaddd

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

Dark_SavanT ★★★★★
()
Последнее исправление: Dark_SavanT (всего исправлений: 1)
Ответ на: комментарий от G-virus

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

vaddd ★☆
()
Ответ на: комментарий от Dark_SavanT

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

vaddd ★☆
()
Ответ на: комментарий от vaddd

А потом ВНЕЗАПНО происходит неожиданное. Так что быстро и дёшево не всегда правильно. Ещё раз - надо чётко понимать насколько дёшево можно делать, не дешевле разумного. Иногда надо наоборот продавить дороже но надёжнее, чтобы сэкономить своё же время в будущем.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от Dark_SavanT

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

vaddd ★☆
()
Ответ на: комментарий от vaddd

А вот за такое в приличном обществе бьют канделябром.

Dark_SavanT ★★★★★
()

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

Древние и «вечно живые» Intel 8051 ©, работающие с 1980 г. до сих пор :)

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

Мне недавно принесли на переделку мою плату на z80, на которую я когда-то писал на ассемблере :) Попросили слегка модернизировать. Чуть не упал в обморок )

vaddd ★☆
()
Ответ на: комментарий от quickquest

Даже новые дизайны микросхем с ними есть. Вин, чо.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от quickquest

Видимо, не очень живые, раз я, не разбирающийся в микроконтроллерах, не наткнулся на них при поиске :D Ну, как обычно, плохо искал

G-virus
() автор топика

Arm. Иногда оверкилл, но унификация кода куда важнее, а цена одинаковая. Ненужную переферию включать никто не заставляет.

Для нубов или быстрого прототипирования на али есть платы с stm32f103 по 100 рублей размером с ардуино нано. Там только минимальная обвязка, да светодиод. Идеально для небольших быстрых проектов, если не охото разводить плату и паять smd.

KivApple ★★★★★
()
Ответ на: комментарий от anonymous

У stm32f103 и stm32f407 заметно отличаются только rcc, gpio и usb. Плюс у старших МК больше переферии (например, у f4 есть интерфейс камеры). А вот, скажем, uart и i2c идентичны, таймеры очень похожи...

У avr все таймеры те же немного отличаются даже на одном МК. Для stm32 можно же написать универсальную функцию настройки таймера, принимающую его базовый адрес и она будет работать для всех таймеров общего назначения, например.

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 1)
Ответ на: комментарий от vaddd

Лучше день потерять, потом за 2 часа долететь!

Это — главный принцип разработки. Поэтому мы, линуксоиды, пишем целый день скрипт, вместо того, чтобы копипастой за 5 часов задачу решить. Зато потом этот скрипт решит ее за несколько минут.

Так и с МК: нужно разрабатывать свои полноценные сниппеты, потом ты их в нужном месте вставишь, и все будет отлично. И не будут данные теряться из-за того, что 1-wire 750мс паузу выжидает, или еще по какой причине. Абдуринщики — те еще придурки. Они абдурину как однозадачный контроллер понимают, и если ресурсов не хватает (на их взгляд), берут еще одну абдурину!

anonymous
()
Ответ на: комментарий от vaddd

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

KivApple ★★★★★
()
Ответ на: комментарий от vaddd

Это называется «криво-косо, лишь бы деньги прямые были». Подход, совершенно недостойный профессионала!

Профессионал обязан сделать качественно. И ногодрыг с абдуриной здесь никак рядом не стояли!

Это как с плиткой: можно положить за 2 дня 50 квадратов, а можно покласть за месяц. Правда, здесь уже невооруженным глазом будет видно, где плитку ложили, а где клали.

anonymous
()
Ответ на: комментарий от Dark_SavanT

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

KivApple ★★★★★
()
Ответ на: комментарий от anonymous

Так и с МК: нужно разрабатывать свои полноценные сниппеты, потом ты их в нужном месте вставишь, и все будет отлично.

Хе. Это если вы сидите на однотипных проектах.

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

Ну и молодцы. А вы потонете в многозадачности и наложите себе подводных камней на долгое будущее. И с каждой модернизацией будете расхлебывать свою многозадачность заново

vaddd ★☆
()
Ответ на: комментарий от KivApple

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

anonymous
()
Ответ на: комментарий от KivApple

Иногда второй контроллер ставить приходится. На что-нибудь особо real-time зависимое, например сбор данных с ацп на приличных частотах. Если есть возможность, можно конечно обойтись таймер+DMA+SPI и оно будет работать практически не нагружая основное ядро, но получается не всегда.

В общем случае один контроллер конечно предпочтительнее нескольких.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от vaddd

Два контроллера дороже чем один и сложнее в отладке. Без необходимости городить многоузловую систему - нахрен не упало.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от KivApple

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

Это не «велосипедить» систему связи, это счастье и радость от того, что не свзялся с ногозадачностью :)

vaddd ★☆
()
Ответ на: комментарий от vaddd

Что значит «однотипных»? Не хватает сниппета — сделай его!

Я вот набил себе сниппетов под STM8 и STM32, и мне их вполне хватает. Конечно, как новая железка получается, приходится малость дорабатывать (TSYS01, например; сюда еще придется пришпиливать CAN и USB — для STM32F0 я этого еще не делал), но ничего в этом страшного нет.

И да, я — никакой не электронщик. По образованию астрофизик, к.т.н., работаю энэсом.

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

Полный бред. Быстрей ты потонешь в обвесе 100500 МК и попытке общения со всеми ними. Я уже проходил это извращение вроде общения десятка пиков по UART'у, где девятым битом направление выбиралось. Проще уж CAN запилить, если нельзя ограничиться одним МК на все (для работы с сотней термодатчиков мне придется делать «гнездовой» способ со связью «гнезд» по CAN — ну не придумал я, как 100 I2C'шных железяки иначе опрашивать без нагромождения говна и палок)!

anonymous
()
Ответ на: комментарий от vaddd

Не соскакивай с проблемы, ты вначале не о распределенной системе говорил!

А то эдак еще выяснится внезапно, что wifi надежней проводной связи...

anonymous
()
Ответ на: комментарий от vaddd

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

KivApple ★★★★★
()
Ответ на: комментарий от Dark_SavanT

Это вам только кажется. Все полностью наоборот. Несколько простых контроллеров с простыми функциями очень сильно облегчают жизнь главному. Легче и быстрее в разы.

vaddd ★☆
()
Ответ на: комментарий от Dark_SavanT

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

KivApple ★★★★★
()
Ответ на: комментарий от vaddd

см. выше про цену контроллеров. Плюс место на плате. Где-то такое нужно, чаще нет.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от anonymous

ну не придумал я, как 100 I2C'шных железяки иначе опрашивать без нагромождения говна и палок

Как вариант i2c мультиплексоры. Если скорость опроса не важна, вполне валидное решение. типа http://www.ti.com/product/pca9548a/datasheet

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

Dark_SavanT ★★★★★
()
Ответ на: комментарий от G-virus

Есть дешевле. Такая вытянутая, синенькая. Стоит от 100 до 130 рублей, не больше, но почему то они не всегда попадают в поиск, надо уметь искать.

Выглядит так - http://www.rogerclark.net/wp-content/uploads/2014/11/STM32Mini-300x300.jpg

Я как то раз купил 10 штук за 1100 рублей.

KivApple ★★★★★
()
Ответ на: комментарий от anonymous

Полный бред. Быстрей ты потонешь в обвесе 100500 МК и попытке общения со всеми ними. Я уже проходил это извращение вроде общения десятка пиков по UART'у, где девятым битом направление выбиралось. Проще уж CAN запилить, если нельзя ограничиться одним МК на все (для работы с сотней термодатчиков мне придется делать «гнездовой» способ со связью «гнезд» по CAN — ну не придумал я, как 100 I2C'шных железяки иначе опрашивать без нагромождения говна и палок)!

Хе. Ну кто вам мешает сделать лишний уровень? В этом и смысл распределенности ) Зачем пытаться опрашивать сто железяк, если можно сделать опрос десяти? Пусть контроллер-десятник не торопясь опрашивает десять и принимает часть решений. Наверх передает только выходящие за рамки допусков сведения. А на верхний контроллер можно хоть UI повесить - у него времени вагон будет. Итакую систему отлаживать и запускать гораздо проще и быстрее. И главное - она универсальнее.

vaddd ★☆
()
Ответ на: комментарий от vaddd

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

Если ты не умеешь использовать RTOS, то это не значит, что многозадачность это плохо. У меня проблемы с ней были только, когда я от скуки велосипедил свою РТОС. При использовании готовых никаких проблем, одни решения. И я с ужасом вспоминаю свои проекты из нескольких ардуин.

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 1)
Ответ на: комментарий от G-virus

stm32f103 шитодат смотри, я честно говоря не помню сколько там таймеров и каналов на них. Вполне возможно что и сможет.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от KivApple

Готовые кирпичики хороши, когда они есть

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

vaddd ★☆
()
Ответ на: комментарий от Dark_SavanT

А, ещё надо смотреть чтобы нужные ноги выведены были.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от G-virus
7 timers
– Three 16-bit timers, each with up to 4
IC/OC/PWM or pulse counter and
quadrature (incremental) encoder input
– 16-bit, motor control PWM timer with deadtime
generation and emergency stop
– 2 watchdog timers (Independent and
Window)
– SysTick timer 24-bit downcounter
Dark_SavanT ★★★★★
()
Ответ на: комментарий от Dark_SavanT

Да, серьезная штука, думаю, стоит попробовать.

G-virus
() автор топика
Ответ на: комментарий от G-virus

Может. И это только 1 таймер. А их там больше одного - то ли 3, то ли 4, которые ШИМ умеют. То есть 12-16 каналов. А еще пределитель таймера это 16-битное число, а не набор из нескольких вариантов, так что частоту ШИМ можно задавать по вкусу.

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 2)
Ответ на: комментарий от Dark_SavanT

Длина линии все равно потребует как-то общаться с этими мультиплексорами, не используя I2C/SPI: как минимум RS-485.

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

anonymous
()
Ответ на: комментарий от KivApple

У этих разводку надо смотреть: во-первых, бывает, что USB Dp/Dm не подключают к МК, а во-вторых, там нет антистатической защиты, МК легко спалить. Годится лишь если заземлишься браслетом.

anonymous
()
Ответ на: комментарий от G-virus

4 независимых — вряд ли, но я точно не помню, что там за МК. Но есть вполне и такие, что имеют 4 независимых аппаратных ШИМа.

anonymous
()
Ответ на: комментарий от KivApple

Если таймер один, то линии зависимые: частота ШИМа везде будет одинаковой, ты только скважность менять сможешь. А это не считается за 4 раздельных каналов.

А еще у них можно два таймера объединить в один, 32-битный. Ну или еще более сложные приколы делать с зависимостью таймеров...

anonymous
()
Ответ на: комментарий от vaddd

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

Встроенная ESD защита там какая-то совсем уж смешная. Я на работе на контроллере одной хрени так спалил одну ногу (странно, что больше ничего не выгорело), благо, были свободные ноги, а эта использовалась лишь для опроса кнопок — перепрограммировал прошивку на другую ногу. А спалил просто - «сэмулировал» нажатие кнопки отрезком провода. Видать, сначала на пин подключил, а не землю, вот статика туда и стекла... С тех пор без браслета стараюсь никуда не лезть.

anonymous
()
Ответ на: комментарий от anonymous

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

vaddd ★☆
()
Ответ на: комментарий от G-virus

управление 4-мя устройствами с помощью ШИМ

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

SergeySVold ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.