Почему я рад, что микрочип покупает Atmel

Почему я рад, что микрочип покупает Atmel
Почему я рад, что микрочип покупает Atmel
Anonim

Sega против Nintendo, Mac против ПК, Android против iOS - в наше время технологическая индустрия породила изрядную долю «священных войн». Но есть одна проблема, которая с девяностых годов будоражит производителей и инженеров встраиваемых систем - война 8-битных микроконтроллеров: PIC от Microchip против AVR от Atmel.

После объявления в среду о том, что Microchip купит Atmel за 3,56 миллиарда долларов, война наконец закончилась? Что это означает для будущего разработки встраиваемых систем?

Вероятно, в краткосрочной перспективе это не так уж и много. Microchip и Atmel продолжат производить и обеспечивать поддержку своих существующих устройств и в будущем, поскольку они участвуют во всем. У вас дома, в машине, в кармане - на сегодняшний день Microchip поставила более 12 миллиардов PIC, а Atmel megaAVR - это чип, который послужил основой для первого Arduino, который познакомил множество производителей с миром физических вычислений.

Но здесь многообещающе. У Microchip/Atmel есть возможность объединить лучшее из мира AVR и PIC в потрясающую платформу микроконтроллера. Несмотря на растущую популярность и снижение стоимости мощных 32-битных чипов ARM, по-прежнему существует множество приложений, в которых достаточно 8 бит.

Так в чем же разница между PIC и AVR и имеют ли они вообще значение? Если вы только начинаете заниматься встраиваемым программным обеспечением, вам, вероятно, подойдет плата Arduino и ее простые в использовании инструменты. Но когда вы захотите сделать следующий шаг - превратить свой прототип в готовое к производству устройство или создать критичные по времени приложения - вам придется сделать выбор.

AVR: открытый исходный код, удобство для разработчиков

Изображение
Изображение

Если вы раньше использовали Arduino, значит, вы уже запрограммировали AVR - он есть в Uno, Pro, Mega, Gemma, LilyPad, Leonardo, Diecimilia, Duemilanove и других. Он популярен среди создателей, потому что его поддержало сообщество разработчиков открытого исходного кода. Если вы хотите начать самостоятельное программирование AVR, все необходимые инструменты доступны бесплатно для всех операционных систем. AVR-GCC - это полнофункциональный и хорошо поддерживаемый компилятор C (если вы используете Mac, настроить его так же просто, как установить CrossPack), а утилита AVRDUDE позволяет загружать свой код в микроконтроллер AVR с помощью одного из многих устройств программирования, например Официальный AVRISP mkII от Atmel или карманный программатор AVR от Sparkfun.

Буква «R» в AVR означает RISC: вычисления с сокращенным набором команд. Это означает, что если вы когда-нибудь захотите испачкать руки каким-нибудь языком ассемблера, вы будете в восторге. Набор команд хорошо подходит для компиляторов C и достаточно прост, чтобы обеспечить возможность ручного кодирования подпрограмм, ограниченных по времени. Существует значительное количество потрясающих AVR-проектов, которые делают удивительные вещи с языком ассемблера: демонстрационные платы Линуса «lft» Окессона Craft, Phasor и Bitbanger, игровая консоль Uzebox и мой собственный проект Terminalscope, который позволяет вам просматривать веб-страницы на ваш осциллограф.

К сожалению, AVR не справляется со своими задачами. ATmega328P, сердце Arduino Uno, стоит $3,70 за макетный DIP-корпус. Это дает вам 32 КБ ПЗУ для вашего кода, 2 КБ ОЗУ и 23 контакта ввода-вывода: шесть из которых можно использовать для считывания аналоговых напряжений, а шесть из них могут выводить сигналы ШИМ для управления двигателями или затухания светодиодов. Если вам нужно больше контактов или больше памяти - скажем, 16 КБ ОЗУ и 32 контакта ввода-вывода в 40-контактном DIP-корпусе - вам придется перейти на ATmega1284, что обойдется вам в колоссальные 7,67 доллара! Если вас устраивает пайка для поверхностного монтажа, есть более дешевые варианты с более экзотическими периферийными устройствами, такими как встроенный USB, но вы найдете аналогичные детали от других производителей за небольшую часть этой цены.

“Для этого есть PIC”

Изображение
Изображение

До Arduino чип Microchip PIC был выбором как для любителей, так и для профессионалов. Их линейка продуктов огромна, они наполнены периферийными устройствами и стоят очень дешево. Хотите 28 аналоговых входных каналов в корпусе DIP? PIC16F1717 стоит 2 доллара. Хотите сделать что-то классное, которое будет общаться с вашим компьютером через USB? PIC16F1454, 1,40 доллара США, никаких дополнительных компонентов не требуется!

Microchip установила в свои PIC несколько довольно интересных периферийных устройств, которые могут уменьшить или устранить необходимость во внешних компонентах, что потенциально снижает затраты. Многие из них имеют встроенные цифро-аналоговые преобразователи (ЦАП) для генерации истинного аналогового выходного напряжения. Дополнительный генератор сигналов может упростить управление двигателями постоянного тока. А конфигурируемая логическая ячейка похожа на крошечную ПЛИС: она может выполнять простые операции (И, ИЛИ, исключающее ИЛИ и т. д.) над входными сигналами и направлять их на выходы без какого-либо вмешательства со стороны основного процессора - даже в спящем режиме.

Итак, PIC очень дешевы, широко доступны и имеют на борту множество интересных вещей - в чем же их обратная сторона? Почему именно AVR стал мегазвездой в результате революции микроконтроллеров Maker в середине 2000-х, а не PIC? Многие скажут, что дело в инструментах. Несмотря на то, что существует множество бесплатных инструментов с открытым исходным кодом для разработки AVR, если вы хотите программировать PIC, вам потребуется использовать программное и аппаратное обеспечение Microchip.

Еще несколько лет назад разработка PIC была доступна только пользователям Windows. Текущая интегрированная среда разработки (IDE) Microchip, MPLAB X, построена на платформе NetBeans и работает в Windows, OS X и Linux. Размер загрузки составляет 500+ МБ. Пользовательский интерфейс может показаться сложным из-за множества панелей инструментов, боковых панелей и диалоговых окон конфигурации. Если вам больше нравится командная строка, вы можете использовать сценарий, спрятанный глубоко внутри пакета приложений MPLAB X, для загрузки кода в ваш чип.

В отличие от чистой RISC-архитектуры AVR, память PIC сегментирована на банки по 128 байт, из которых одновременно может быть активен только один. Такая договоренность препятствовала развитию компиляторов с открытым исходным кодом. Компилятор C Small Device - единственный, о котором я знаю. Я использовал его для получения рабочих результатов, но он может поддерживать не все функции новейших чипов и содержит некоторые ошибки. Если вы хотите запрограммировать PIC на языке C, единственным вариантом будет компилятор Microchip XC8. Бесплатная версия не выполняет никакой оптимизации вашего кода: если вы хотите создать максимально быстрый код, вам придется купить лицензию Pro, которая обойдется вам в тысячу долларов. Оправданные расходы для профессионального инженера, поставляющего миллион устройств, но, к сожалению, недоступные большинству любителей.

Что касается программистов устройств, PICkit 3 (50 долларов США) - единственное устройство, гарантированно поддерживающее новейшие модели PIC. Их может быть сложно настроить (мой не работал с моим Mac из коробки, и мне пришлось использовать ПК с Windows для обновления его прошивки), но они отлично справляются со своей задачей.

Будущее

Я мечтаю о том, чтобы Microchip/Atmel выпустили микроконтроллеры нового поколения с архитектурой AVR, набором инструментов с открытым исходным кодом, широким выбором периферийных устройств PIC и низкой ценой – но не слишком ли поздно? 32-битные устройства ARM Cortex-M, такие как Teensy и Arduino Due, готовы занять рынок бюджетных систем, а полнофункциональные системы Linux, такие как Raspberry Pi Zero и CHIP, можно купить за несколько долларов. долларов. Но есть что сказать о простоте 8-битного микропроцессора. Вы можете узнать все, что нужно знать об одном человеке, за несколько недель. Выжимание производительности из чипа до последней капли - подсчет тактовых циклов, написание вручную настроенного ассемблера, вырезание инструкций, чтобы ваш код уместился на более дешевой части - вот что поддерживает меня и бесчисленное множество других хакеров в восторге от разработки встроенных систем.