Сравниваем микроконтроллеры до 50 рублей: ARM жаждет крови

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

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


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

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

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

    Выводы


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

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

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

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

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

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


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

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

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


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

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

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

    Комментарии / вопросы / мнения — в студию!
    Поделиться публикацией
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 100
    • +2
      Спасибо, приятный кратенький обзор!

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

      Насчет умножения 32*32->64, он это делает за один такт? А деление?
      • 0
        Hardware Divide (2-12 Cycles) & Single-Cycle (32x32) Multiply (не ясно, =>32 или =>64).
        • 0
          Multiply with
          64-bit result
          32 UMULL, SMULL, UMLAL, and SMLAL.

          Результат 64 бита.
          • 0
            Да, такую инструкция вижу, но не вижу что именно для неё нам обещают выполнение за один такт. Маркетологи такие маркетологи, вполне возможно что только 32x32->32 за 1 такт успевает.
            • 0
              Узнал точно, 32*32->32 1 такт. 32*32->64 — 5-7 тактов, равно как и деление.
        • +4
          сравнивать мипсы 8- и 32-битных контроллеров некорректно. например у AVR нет аппаратного умножения (в тини13 точно), так что умножение занимает несколько десятков тактов, а в Cortex — есть и выполняется за 1-2. плюс за один такт можно обработать не 8, а в 4 раза больше — 32 бита данных.

          как-то раз я ради интереса сравнил один и тот же алгоритм (XTEA) на ATmega8 и LPC1786. Даже при одинаковой частоте ARM был в 3-4 раза быстрее
          • +2
            Само собой некорректно, потому примечание о мясистости мипсов и написал.
            Код с 32-х разрядной арифметикой вообще будет на порядки отличаться :-)
            • 0
              в tiny умножения нет, в mega есть
            • +5
              А меня в ARM'ах пока что останавливают корпуса. Я еще не достиг того уровня ЛУТ'а, чтобы влегкую делать платы для LQFP48 и прочих малюток. Поскольку серийным производством я не занимаюсь, делаю все для себя, то заказывать платы на производстве для меня слишком дорого. А PIC'и и Atmeg'и есть в дип-корпусах, что очень радует.
              • +1
                Ламинированная бумага (не фотобумага) + мощный советский утюг могут выдать удивительно тонкие дорожки.
                • +1
                  Я знаю :) Я много всяких вариаций ЛУТ'а перепробовал. Но тут без опыта никуда, а его у меня пока маловато. Вершина миниатюризации для меня сейчас — SOIC8 (это часики DS1307 были).
                  • +4
                    Я тоже малоопытный, но недавно попробовал ЛУТ с фольгой вместо бумаги — был приятно удивлен тем что всё получилось с первого раза, никакой мороки с размачиванием и отдиранием бумаги.
                    • +3
                      Я про этот способ читал, впечатлился. Но побоялся фольгу в принтер запихивать :)
                • 0
                  Тут надо разбираться с чем конкретно у вас проблемы — у ЛУТа проблемы начинаются только от 0.15мм.
                  Мастерства не нужно, просто правильная температура, правильный журнал, и гладить через ровную тряпочку равномерно :-)
                  • +1
                    Vogue и Playboy — достаточно правильные журналы?
                    • 0
                      Должны, у меня к сожалению только плееры от них остались :-)
                      Я печатал на Хакере и DigitalPhoto :-)
                    • 0
                      Я по совету Di Halt'а использую глянцевую фотобумагу Lomond 130 г/м2. Недавно сделал breakout для 74HC595 в SSOP-корпусе, работает.
                    • 0
                      Попробуйте пленочный фоторезист — оно только из описания кажется что сложно и муторно. В реале получается удивительно стабильный и повторяемый результат. Как-то из спортивного интереса провел дорожку между ногами TQFP44 (0.8мм шаг) толщиной 0,1мм — она вполне вышла :)
                    • +4
                      А есть ли что-то уровня AVR Studio для программирования ARM процессоров?
                      • +4
                        Для ARM есть gcc и gdb а там уж по желанию, Eclipse или Emacs
                        • +2
                          keil или IAR. у IAR IDE так себе, у кейла повеселее. в принципе можно к той же вижуал студии прикрутить соответствующий компилятор. я сейчас Netbeans + gcc + CMake пользуюсь
                          • 0
                            А как cmake для arm'ов прикрутить, скажем cortex'ов m0 m3?
                            Может поделитесь примерчиком?
                            А то вот недавно познакомился с этим cmake'ом, весьма понравилось, особенно то, что не надо редактировать его даже когда пере собираешь под embeded linux.
                            • 0
                              с cmake я только начал разбираться, вот пример для AVR, для ARM будет в целом аналогично, только имена компиляторов/пути поиска заголовков/флаги поменять
                              pastebin.com/CnHZBguM
                              запускать как
                              cmake -G «Unix Makefiles» -D(дополнительные дефайны переменных)
                              make
                              • 0
                                Во, благодарю! Буду разбираться на досуге.
                                Ну для AVR пока все таки решает обычный makefile. Так как он ничем не отличается, вне зависимости от платформы (если написан по феншую =), у меня он кочует из проекта в проект).
                                А вот с помощью cmake хочется интеграции для ARM, чтоб прописал cmake && make в директории и проект собрался на любой машине (linux/windows) с установленными тулчейнами. А еще лучше прописать все это на хоткеи среды. Меня очень прет, что для очистки, сборки и заливки в камень avr, у меня настроено в среде три кнопки F4, F5, и F6 соответственно, которые выполняют make clean, make all и make program. Что либо подобное хочется и под ARM с cmake.
                                • 0
                                  ну этот пример — самая элементарщина, чтобы собралось для конкретно моей машины. для меня он поначалу оказался не совсем очевидным. понятно, что можно и нужно добавить кучу разных проверок, разные компиляторы, разные системы… в перспективе эта штука должна будет собирать проект для разных архитектур — в том числе стм8 и арм
                          • +1
                            Keil uVision
                          • +4
                            а linux запустить можно таком чипе?
                            • 0
                              Все роутеры щас идут на ARM, думаю ответ очевиден)
                              Главное что бы тактовой хватило)
                              • +3
                                ну это понятно, что linux идет на ARM, я о минимальных требованиях линукс-ядра
                                • 0
                                  Здесь наверное пока не проверишь, не узнаешь)
                                  По идеи ядро должно запуститься, но вот хватит ли тактовой для минимального набора приложений?
                                  • +2
                                    пару мегагерц хватает вполне :)
                                    эмулятор на JS подтверждает это.
                                    • +2
                                      Мегагерц-то хватит, только там 64кб озу.
                                      • +2
                                        Я могу ошибаться, но можно ж подключить память?
                                        • +2
                                          А вот не факт, что-то я в даташите этого не вижу.
                                          • +1
                                            К МК от STM в лучшем случае дорогущая SRAM подключается (и только в старших моделях), так что не судьба.
                                      • +2
                                        Дело не в паре МГц. Нормальный линукс (читай: не uCLinux) требует блока MMU. На армах младшей линейки этого блока отродясь не было.
                                        • 0
                                          порт на nommu уже давно в ванильном ядре
                                          • 0
                                            Тем не менее, на M3 кортексе линукс запучтить нереально. В частности из-за отсутствия SDRAM контроллера.
                                    • +1
                                      На MIPS их не меньше, поверьте)
                                    • +3
                                      на Cortex-M — нет. там нет MMU. uCLinux может можно портировать, но готовых портов вроде нет
                                      • –1
                                        В Cortex M3 в целом MMU опционален, но без контроллера внешней памяти все это бесполезно.
                                        Впрочем, обрезаный Линукс и без MMU может работать.
                                        • 0
                                          ИМХО куда больше имеет смысл ставить туда дотнет микрофреймворк.
                                          Он в целом выполняет ту же функцию, несмотря на то что, разумеется, не является ОС — он дает абстракцию от оборудования и возможность использовать более удобный подход в написании приложений.
                                          При этом на многие кортексы он должен встать (судя по требованиям) без дополнительных аппаратных затрат.
                                          • 0
                                            ну так уже успешно ставят
                                            цена, правда, еще покусывается, но придет время…
                                            • –1
                                              Ну дотнет то влезет и в обычную СТМку, цена которой существенно ниже. Во всяком случае, в серии STM32F103xx есть модели с подходящим размером Flash и RAM на борту — не знаю, портирован он туда уже, или нет, но по требованиям подходит.
                                              • 0
                                                Да и в атмел он тоже влезает, но цена меньше не становится. Происки маркетологов.
                                                • –1
                                                  Я в данном случае имел в виду цену аппаратной платформы)
                                                  • –1
                                                    *прошу прощения, себестоимость.
                                                    Имеется в виду что такую же штуку, по идее, можно подешевле изготовить самому.
                                          • +1
                                            Опционален там MPU, а это далеко не MMU по функционалу. Он не поддерживает виртуальные адреса и может использоваться только для установки прав доступа к участкам адресного пространства.
                                        • +1
                                          Именно на таком — нет, т.к. мало памяти, а внешняя не подключается. На чипы постарше с внешней памятью линукс встает.
                                          • +1
                                            На недавнем форуме «Время электроники» в Питере представители STM и ARM говорили о том, что полноценный линукс на микроконтроллерах Cortex M запустить вряд ли удастся — для этого есть Cortex A0
                                            • 0
                                              На ARM9 и на некоторых ARM7
                                                • 0
                                                  Жесть — уже хочу. А то для идеализации идей смотрел на конструктор типа Arduino, а здесь все в куче да и еще с экраном.
                                                  ЗЫ. Кто через этот сайт заказывал отпишетесь плз.
                                                  • 0
                                                    Через этот сайт все электронщики кормятся, я вот заказывал да и много кто вообще :-)
                                                    • 0
                                                      Спасибо за информацию.
                                                • 0
                                                  Ток сегодня гулял по сайту starterkit.ru/html/index.php у них ядро уже в комплекте и с нужными дровами. ИМХО для старта лучше не придумать.
                                                • +2
                                                  относительно недавно теже STMicroelectronics, что делают STM32F10х, выпустили очень дешевые, но не менее производительные 8-битные контроллеры серии STM8S103Fx и STM8S101Fx. при частоте до 16МГц, Flash-памяти до 8кило и полным фаршем периферии(АЦПушки, куча таймеров, SPI, UART и прочие плюшки) вы получаете его не более чем за 20-30р в зависимости от объема партии и памяти: STM8S103F2P3, STM8L101F2P6.
                                                  • +3
                                                    камни хорошие, но непонятки с компиляторами. GCC под них нет и не особо планируется, а проприетарные с ограничением в 16кб кода либо платные
                                                    • 0
                                                      В STM8 какой-то очень урезанный и неортогональный RISC (мне напомнило 6502). Там есть интересные фишки, но за счет компиляторов и огромного количества документации Atmel выигрывает среди 8-биток.
                                                      • 0
                                                        вообще соответствуя документации на эти контроллеры у них CISC-архитектура и явный доступ к памяти минуя регистры (их, кстати, вообще почти нет). ничего урезанного и, как вы выразились, неортогонального. просто архитектура другая. компиляторов тоже хватает. тот же IAR уже 3 версии настряпали. документации валом. их оф.сайт напичкан ею по полной. может вы просто не правильно их готовите?)
                                                        • 0
                                                          Ой, так он CISC. Вот я облажался)

                                                          Про компиляторы и документацию я имел в виду не совсем это. Во-первых, открытых компиляторов нифига нету, а извращаться с IAR под Linux-ом мне как-то не хочется. Во-вторых, кроме документации на офсайте еще очень ценны наработки сообщества, а их как-то маловато.
                                                          • 0
                                                            Oh She~ а сколько тактов на команду в STM8?
                                                      • +1
                                                        А как сравнить этой таблицей наличие периферии на борту? налицие всяких там цап ацп таймеров и прочего?
                                                        • 0
                                                          Ну, тут сравнивать сложно — т.к. этого добра у всех навалом :-)
                                                          Понятно что 6-8 ногие МК существенно ограничены )
                                                        • +3
                                                          вроде для ARM-ов не всегда нужен программатор, там на большом количестве кристаллов еще и бутлоадер сериальный вшитый есть. Не знаю как у STM32F100, но у STM32F103 точно есть.
                                                          • 0
                                                            Были бы они с сигма-дельта ацп… К сожалению, 10/12 бит АЦП это мало набортное. Так что ADUC847 пока для наших задач рулит.
                                                            • 0
                                                              Kinetis 50 серия будет с ним
                                                              • 0
                                                                Помимо АЦП туда напихивают еще столько, что это опять не под наши задачи :(
                                                                Надо бы быстрое ядро для математики + АЦП+ЦАП+UART+I2C+SPI + ножки желательно >=0.5.
                                                                А! Самая главная проблема, по которой пролетают кортексы — нужна совместимость с ТТЛ уровнями.
                                                                А у них максимум — 5V-tolerant.
                                                                Так что рано еще списывать старые добрые 8битники со счетов.
                                                            • –3
                                                              я что-то не понял смысла статьи, у вас сравнение идет *только* по стоимости?
                                                              а то что разработать pcb будет стоить в 25 раз дороже мы забываем? а заказать и сделать шестислойку еще больше.
                                                              а то что одним jtag дело не ограничивается, и в итоге все равно нужно будет брать какую-нибудь борду с разведенными интерфейсами мы тоже забываем?
                                                              а то что экран вы просто так не подключите, мы тоже забываем? :)

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

                                                              самым оптимальным вариантом, имхо, для начала является эта плата:
                                                              image
                                                              mini6410
                                                              Продается тут
                                                              Ей много лет, она на стареньком проце, но зато её легко превратить во все что нужно.

                                                              Далее, есть большое количество плат от StarterKit, но, как и любой порядочный селлер в РФ, они ломят цены. Кстати там как раз есть продукция на основе STM32

                                                              а вот хорошая плата с Кортексом будет стоить дороже, с кортексом способным обработать видео — так вообще под 200 евро (см PandaBoard). и тем более, зачем кортекс-то?

                                                              не сочтите за занудство — но тема совсем не раскрыта, просто какие-то статистические данные. один быстрее другого, ну хорошо, и что из этого? для хорошей разработки нужен проц в первую очередь *с саппортом и готовыми решениями*, а не самый быстрый или маложрущий. нужен проц для которого есть хорошие девборды, разработаные не китайцами на выходных. и вот от этого стоит уже отталкиваться, что бы потом не попасть в такую ситуацию, когда programming manual на проц либо стоит бешеных денег, либо вообще лежит под NDA.
                                                              • +2
                                                                С каких пор под контроллер уровня кортекс М0 требуется шестислойка?
                                                                www.st.com/internet/evalboard/product/250863.jsp

                                                                Вот эта плата стоит 300 рублей. Ее вполне хватает чтобы перейти с 8-битных контроллеров на 32-битные. Не все эмбеддед-устройства требуют многослойных плат, здоровых графических дисплеев и иже с ними.

                                                                А подключение всем набивших оскомину знакосинтезирующих дисплеев и LCD от Nokia к плате на стм32 ничем не будет отличаться от подключения к той же аврке, учитывая количество мануалов, я думаю, с этим справится любой начинающий.
                                                                Такие платы в начале пути только будут мешать — если человеку после АВР дать плату на АРМ9, с его ММУ, с внешним DRAM и прочим это только замедлит процесс обучения. Если же обучать последовательно, по нарастающей, то до монструозных Cortex A0 и иже с ними вполне можно обойтись без плат за 300 баксов.
                                                                • +1
                                                                  Cortex M3 и ARM7, на котором построена mini6410, — это совершенно разные процессоры, предназначенные для разных задач.

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

                                                                  Вы будете смеяться, но мини разработана именно китайцами (не знаю насчёт выходных).
                                                                  • +1
                                                                    ARM7 и Cortex M3 как раз примерно для одних и тех же задач спроектированы, просто кортекс это новое ядро а амр7 постепенно отойдет :)
                                                                    • –1
                                                                      <сноб mode on>
                                                                      но это еще не самое интересное из не понимаемого, самое интересное — текущие несогласные со мной комментаторы не понимают сути различия между arm, avr и pic, вообще, в принципе не понимают.

                                                                      не важно arm7, 9, 11 или 100500, важно то, что упор в 32-битных контроллерах, которые контроллерами то язык не поворачивается назвать, идет на работу с операционными системами и программами, записанными во внешней памяти, без которой они не работают вообще. тогда как простые 8/16 предназначены для легкой обработки и не более и могут быть прошиваемыми. да, 32-битные процессоры хранят бутлоадер и мелкие сервисные вещи, но не более. и теперь мы наконец приходим к необходимости продуманной и провереной борды или схемы распайки. отсюда мы опять таки выходим на цену этого продумывания и приходим к тому что я выше описал.

                                                                      дополнительные пачки инструкций это, кстати, вообще другая тематика, и поверьте, даже если вы знаете что они есть — возможно вы их не сможете использовать т.к. а) у вас тупо не будет мануалов б) мануалы будут под ценником ц) инструкции будут безбожно бесполезными или какую-то операцию все равно придется выворачивать через обычный набор.
                                                                      </сноб mode off>
                                                                      • +2
                                                                        на самом деле есть довольно простенькие мк от Analog Devices на ядре арм7, которые они сами даже микроконтроллерами не называют, а зовут «микроконвертер», потому что там основной упор на аналоговую часть.

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

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

                                                                        но вы правы: различия между 8 и 32-бит архитектурами слошком велики, чтобы их вообще сравнивать
                                                                        • +1
                                                                          >важно то, что упор в 32-битных контроллерах, которые контроллерами то язык не поворачивается назвать, идет на работу с операционными системами и программами, записанными во внешней памяти, без которой они не работают вообще.
                                                                          — Угу, скажите это тем, кто проектирует вот такие модули:
                                                                          www.electronshik.ru/card/datchik-3h-osevoy-akselerometr-giroskop-magnitniy-kompas-chr-6dm-112513

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

                                                                          За пруфами добро пожаловать на сайт армов и производителей ими лицензированных, допустим
                                                                          http://ics.nxp.com/products/lpc1000/lpc1100/

                                                                          У вас какие-то вывернутые наизнанку представления, которые, похоже, базируются на знаниях о здоровенных АРМах трехлетней давности. «Продуманная и проверенная схема распайки» для кортекса м3 это тот же резонатор и два кондера что и в вашей горячо любимой ардуине.

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

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

                                                                          В общем, подводя итог — вы, конечно можете продолжать утверждать, что заявление самих АРМов и производителей контроллеров по их лицензии о том что «кортекс М0-М3 созданы для замены 8/16-битных микроконтроллеров и обеспечивают производительность 32-битного процессора при простоте использования 8-битного» — это все маркетинговые ходы, тайный заговор правительства и массонов, но, вообще говоря, факт остается фактом.
                                                                          Там где городят этажерки ардуин т.к. не хватает одной или пытаются запихнуть в них обработку сигнала и матерятся на нехватку производительности, самое время применить кортексы М0 — М3.

                                                                    • +2
                                                                      В целом верно, хотя не так все сложно 48LQFN вполне разводится по двум сторонам и можно уже делать девайс. Также не везде нужен экран.

                                                                      Но в целом, изготовить девайс на STM32 ободйется ощутимо дороже чем сделать то же на AVR тем более в подавляющем большинстве моща стмок будет простаивать.
                                                                      • 0
                                                                        Там и одной стороны может быть достаточно, ничем не отличается от AVR-ок в таком же корпусе :-)
                                                                        Само собой DIP проще, но мне он всегда казался анахронизмом который вот-вот исчезнет…
                                                                        • +2
                                                                          Дип я даже не рассматривают. LQFP мало того, что мелкий, так еще и питалово у него с четырех сторон, да в таком виде что без пересечений его хрен раскидаешь. А все домены питания надо запитывать, иначе камень может сдохнуть внезапно. Плюс выводы столь тонкие, что рядом с ними никакой кондер или переходную дырку не сделаешь — банально не влезет. Вот и получается что на однослойке LQFP занимает места едва ли не больше чем PLCC или даже DIP т.к. в центре стоит чип, от него во все стороны уходят дорожки плотняком, а как только расползутся на более менее вменяемое расстояние начинают ветвиться уже и что либо к ним подключаться.

                                                                          Были бы они в корпусах аля атмега128 или хотя бы soic/ssop с двухрядным расположением выводов было бы куда приятней все это разводить.
                                                                          • +3


                                                                            Вот пример. В центре огромный пятак дорожек. А ведь это двусторонка. На одном слое он был бы в полтора два раза больше.
                                                                    • 0
                                                                      У тех же StarterKit есть решения которые позволяют делать не сложные платы периферии starterkit.ru/html/index.php?name=shop&op=view&id=53 (согластно описанию, лично в руках не держал).
                                                                    • +2
                                                                      Цена на 8ми битки аля PIC и AVR зависит от их популярности. Они популярны, востребованы потому и дорогие. Хочешь быстро склепать проект? Берешь AVR и хреначишь, собирай код из готовых кусков кои за 10 лет наклепали на все что угодно. Качество печатной платы опять же не столь высокое. В 90% можно обойтись односторонкой с дорожками 0.3 минимум.

                                                                      Если хочешь сделать что то на Cortex то мануал в зубы и изучай все с нуля. Плата куда более сложная и геморойная в изготовлении, обязательно двусторонка. И с дорогами 0.2мм. Что намного повышает трудоемкость изготовления прототипа в домашних условиях.

                                                                      Так что если я что то делаю то делаю на AVR — привычней, дешевле в общем зачете (ощутимо дешевле). И быстрей, намного быстрей.

                                                                      А STM32 лениво так изучаю, чтобы не отстать от технологий.
                                                                      • 0
                                                                        Да, привычность это само собой всегда главное :-)

                                                                        Но если учить все равно с нуля — можно сразу учиться новому и перспективному.

                                                                        0.25 дороги надо, а это все-же не 0.15, и очень близко к 0.3 :-)

                                                                        В домашних условиях прототипа питание на разные стороны чипа можно и перемычками дотянуть, и все…
                                                                        • +1
                                                                          Да тут все тоже не так однозначно. Даже имея опыт разработки на разных семействах я все равно охреневал с того обьема инфы, что на меня свалися в связи с изучением кортексов. Там просто нереально всего дохрена. И если, потенциально уже зная где что искать и на что смотреть в даташите, адски торможу и туплю, то каково будет тому кто в это с нуля полезет.

                                                                          Имхо идеальный МК для изучения МК это АТ89С51 накосячить и затупить там негде, а вот разобраться и проникнуться можно будет очень быстро :)
                                                                          • +1
                                                                            Но все же в потолок АВР рано или поздно упрешься.
                                                                            Конечно, зависит от реализуемых задач, но вот обработка сигнала довольно быстро показывает пределы АВР. Не спорю, при желании туда можно много чего запихнуть (сам эксперементировал, пихал преобразования, корреляции и иже с ними) но быстро приходит осознание что это не нужно. В смысле, чем биться за каждый такт в АВР и жертвовать разрядностью, можно за те же деньги взять СТМку и получить полноценную 32-битную платформу за те же деньги.
                                                                            Поплатившись, правда, несколько более труднопроизводимой в домашних условиях платой.

                                                                            Мое мнение такое — начинать-то можно и с АВР, а дальше, когда достигаешь потолка — уже смотреть в сторону младших АРМов.
                                                                            Просто мне лично кажется неправильным, когда люди совершенно дуреют от ардуино — в том плане что они пытаются ВСЕ на нем сделать. А когда не влезает — делают этажерки из модулей.
                                                                            Это ИМХО неоправдано, всю эту этажерку из 2-3 модулей можно заменить на один кортекс, будет и дешевле и компактнее.
                                                                            • +1
                                                                              Всему приходит предел. Но вообще если упираешься в потоковую обработку, то тут прямая дорога на DSP или ПЛИС. Т.к. по быстродействию кортексы конечно пошустрей аврок, но не то чтобы уж сильно радикально.

                                                                              ардуионо, особенно в каноничном варианте, с использованием родной среды и вайринга как основного языка это вообще клиника, т.к. тупейшие скетчи могут занимать просто невероятное количество места и никого это не смущает.
                                                                              • 0
                                                                                Ну вот не всегда требуется мощь «тяжелых» ДСП, вроде тех что предлагают AD и TI, а АВРок уже не хватает)
                                                                                Поэтому появление на рынке процессоров с кортекс М3 на борту меня лично очень обрадовало — это как раз та идеальная середина для меня (по крайней мере, пока).
                                                                                У них есть ДСП-инструкции, типа MAC, 32-битного умножения и деления, при этом они в целом не намного монструознее больших АВРок (имея в виду трудозатраты на железку)

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

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

                                                                                P.S.
                                                                                Спасибо за статьи, кстати) Я познакомился с Cortex M3 именно после твои статей на easyelectronix)
                                                                                • 0
                                                                                  как вариант можно посмотреть в сторону М4 — это тоже ядро М3 + дополнительные DSP инструкции, для обработки сигналов значительно быстрее М3, в остальном почти не отличаются
                                                                                  • 0
                                                                                    А навскидку не назовете модельку-другую с ядром М4? Самую младшую, не монструозную)

                                                                                    Дело в том, что часто бывают задачи для обработке не очень быстро изменяющегося сигнала, звукового, допустим, или с датчиков.
                                                                                    В этом случае на АВР/ПИК дискомфортно все така из за отсутствия аппаратного multiply-accumulate и низкой разрядности, а большие тяжелые ДСП избыточны — тогда М3 в самый раз подходит)
                                                                                    • 0
                                                                                      Знаю, что фрискейл начал их выпускать.
                                                                                      Самые маленькие Kinetis 10, 20.

                                                                                      Еще у них есть очень дешевая отладка для 40 семейства, но они все совместимы по коду и выводам, поэтому она подойдет и для освоения младших

                                                                                      www.freescale.com/webapp/sps/site/prod_summary.jsp?code=KWIKSTIK-K40&tid=vanKWIKSTIK-K40

                                                                                      стоит у них долларов 30 + к ней можно докупить дополнительные модули с акселерометрами, вайфай и тд
                                                                            • 0
                                                                              Да уж, даже после твоих курсов ARM все равно весьма непросто разобраться, пришлось читать AVR курс, он попроще написан. А в связи с популярностью Arduino считаю самым удобным для изучения Atmega168 — он умеет практически все то же что и Atmega16, компактнее, дешев, мало ест, полностью совместим с той же Arduino, по позволяет поначалу купить Arduino и тренироваться на ней, а потом самому сделать платку, не меняя кода, то есть развиваться постепенно. При этом код и Arduino проектов и под AVR gcc будет отлично работать. Раздолье. А стало мало памяти — переходи на Atmega328p, 1280, 2560.
                                                                              • 0
                                                                                Только у этого пути есть предел — ни камеру, ни экран нормальный не подключить… Тупик )
                                                                                • 0
                                                                                  Камеру и к STM32F103VET6 не подключить — 72 МГц не хватит для обработки видео. вообще на мой взгляд хорошо иметь разделение — для 5В периферии и управления механикой Atmega в самый раз, а для WiFi, экранов 240х320 (если нужен) и обработки данных посложнее — STM32. Я вот купил такой девайсик для изучения:

                                                                                  В качестве бортового компьютера для миниробота на мой взгляд самое то
                                                                      • +1
                                                                        В целом все более или менее так, как и написано. У AVR только 3 заметних плюса: корпуса, относительно маленький и простой набор комманд(все же для 1к памяти часто удобнее писать на ассемблере), доступность и простота программаторов и отладчиков + очень неплохая IDE в лице AVR Studio.
                                                                        + для указанных двух армов нет никаких упоминаний о usb интерфейсе.
                                                                        • +1
                                                                          В таком ценовом диапазоне(до 50р) USB нам пока не видать ) В моделях чуть постарше есть.
                                                                          А насчет памяти/ассемблера — мне было бы приятнее писать на C в 16кб памяти, чем на асме в 1 за те же деньги :-)
                                                                        • +1
                                                                          Ну какие-то микрочиповские МК отстойные. Вот недавно купил горсть pic16f1827

                                                                          40 рублев. Для самоделкиных всяких заглаза хватает.

                                                                          Program Memory Type Flash
                                                                          Program Memory (KB) 7
                                                                          CPU Speed (MIPS) 8
                                                                          RAM Bytes 384
                                                                          Data EEPROM (bytes) 256
                                                                          Digital Communication Peripherals 1-A/E/USART, 2-MSSP(SPI/I2C)
                                                                          Capture/Compare/PWM Peripherals 2 CCP, 2 ECCP
                                                                          Timers 4 x 8-bit, 1 x 16-bit
                                                                          ADC 12 ch, 10-bit
                                                                          Comparators 2
                                                                          Temperature Range © -40 to 125
                                                                          Operating Voltage Range (V) 1.8 to 5.5
                                                                          Pin Count 18
                                                                          XLP Yes
                                                                          Cap Touch Channels 12
                                                                          • 0
                                                                            Хотелось бы заняться микроконтроллерами, что почитать для начала?
                                                                            • 0
                                                                              Выбирать микросхему по вкусу и читать на неё DataSheet, гуглить в инете по названию как с ней работать, примеры там, программатор… Например если это stm32 — то его и гуглить )
                                                                            • 0
                                                                              Здравствуйте. Есть желание сделать носимое устройство (повязка на лбу с некоторым функционалом). Нужен bluetooth,вот такой датчик, вибромоторчик. Соответственно возникает вопрос: на какой плате (достаточно плоской чтобы абсолютно не ощущалась на лбу) это можно было бы сделать. Подскажите хотя бы направление в котором копать. Спасибо. (Я в этом нуб совершенный, так что буду признателен за любые полезные советы.)

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