AVR или PIC для начала программирования микроконтроллера? [закрытый]


В какой семье я должен начать учиться? (Никогда не программировал на микроконтроллере)

20 34

20 ответов:

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

Для новичка я бы предложил AVR по разным причинам:

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

  • Из-за того, что его C-дружественная архитектура, есть качественные компиляторы C доступны, как коммерческие, так и бесплатные. Вездесущий GCC портируется в AVR и называетсяavr-gcc .

  • Для начала работы Все, что вам действительно нужно, - это несколько базовых компонентов, сам чип AVR и макет . Даже кабель программирования между ПК и AVR может быть построен практически бесплатно (так называемый wiggler). Тем не менее, доступны несколько коммерческих наборов разработки, в первую очередь собственный Atmel STK500 . Коммерческий набор для разработки является более дорогим способом для начала работы, но не требует практически никаких предварительных знаний об электронике. Некоторые наборы для разработки содержат, например, жидкокристаллические дисплеи, поэтому легко получить интересные вещи.

  • У него есть богатое сообщество любителей .

PIC славится своей своеобразной архитектурой. Многие любят ПИК за это, некоторые ненавидят его. AVR более прямолинеен и, похоже, не работает. вызывают столько же крайних и полярных мнений.

Как AVR, так и PIC используются во многих серьезных коммерческих приложениях. Однако это, конечно, не единственные варианты. Мой личный любимый микроконтроллер как для хобби, так и для коммерческой работы-это семейство C8051 Silicon Laboratories, особенно C8051F530. Существует отличный бесплатный компилятор C и ассемблер для семейства C8051 под названиемSDCC .

Резюме: есть много вариантов, но, пожалуйста, не позволяйте этому перегружать ты. Просто выберите один и начните учиться с него. Микроконтроллеры, действительно, удивительно легко освоить, как только вы просто решите начать работать!

Мой босс освоил основы использования AVR в течение недели без предварительного опыта.

Я бы предложил AVR. Он намного превзошел пик в качестве платформы микроконтроллера выбор для общего любительскими проектами. В частности, рассмотрим платформу Arduino (и другие *duino), которая обеспечивает высокое качество AVR в удобном интерфейсе и популярном форм-факторе.

Я очень предпочитаю AVR по сравнению с PIC, чья архитектура мне кажется немного неряшливой. Это может быть только я, и это не будет беспокоить вас, если вы можете писать на языке высокого уровня, скорее всего (какой-то диалект) C.

Поскольку вы новичок в микроконтроллерах, я предполагаю, что производительность не будет проблемой,поэтому вместо этого я бы искал доступность инструментов разработки: платы прототипирования, IDE и средства моделирования/отладки. Лично мне понравилась AVR Studio (бесплатная среда разработки Atmel). много. Джейсон упоминает TI MSP430, который действительно является отличным контроллером, особенно если вы находитесь в приложениях с очень низким энергопотреблением. Но я бы не рекомендовал его для новичка, так как конфигурация немного громоздка. (Напомню, что описание генератора занимало более 20 страниц в руководстве пользователя.)

Некоторые люди прокомментировали странную (и недружественную) архитектуру PIC micro. Это верно для небольших PICs, но 16-битные чипы (PIC24F, dsPIC30 и т. д.) имеют очень четкие архитектуры, которые очень хорошо работают с C.

Линия PIC24F имеет возможность назначать контакты для функций (таймеры, A/D, последовательный ввод-вывод)на лету, что делает его немного проще в проектировании. Среда MPLAB для отладки и разработки довольно приятна.

Я не понимаю, в чем проблема с arduino, это разрушит ваш шанс когда-либо понять, что на самом деле происходит. Я регулярно программирую с AVR и PIC, в основном нет большой разницы, я не вижу, из-за чего весь этот шум. Однако для новичка держитесь подальше от arduino, это может быть просто, но это ловушка, она не дает вам понятия об аппаратной архитектуре, и не знает, что происходит за кулисами, вещи, которые новички должны научиться быть эффективный программист. Когда я был новичком, я начал с ATmega32 A $ 20 USBasp programmer, AVR Studio (бесплатно) и AVRDude (поставляется с WinAVR) и следовал вводным учебникам в AVR Freaks. Это все, что вам нужно, сделано!!!

P.S. Если вы действительно хотите научиться программировать micros и у вас есть время, изучите ассемблер для вашего micro, и вы будете в 20 раз программистом C, чем тот, кто начал использовать arduino.

Я голосую за серию TIMSP430 . Я широко использовал PICs (также немного чипов Atmel), и, безусловно, самое важное для меня-это хорошая отладочная среда IDE. TI проделал довольно хорошую работу над этим, и их компилятор C++ работает очень хорошо. Вы можете начать с платы eval менее чем за 100 долларов, включая IDE + USB-отладчик. У PICs есть лучшая и более разнообразная аппаратная периферия, но MPLAB-это кусок дерьма, и единственная C++ IDE для PICs-это один от IAR, который довольно дорог. (более $2K)

Я немного программировал PIC-в основном потому, что мне понравилась идея, что чип стоит всего доллар или два. Однако для новичка принятие решения исключительно о цене является преждевременной оптимизацией.

Программирование на ассемблере-это опыт. Вы в основном должны изучить около 100 концепций, прежде чем вы сможете мигать светодиодом. (Сторожевой таймер, контакты сброса, 8-битные счетчики / переполнения, петли задержки, шестнадцатеричные, двоичные, битовые маскировки, прерывания, запросы на обслуживание прерываний, порты ввода-вывода и т. д.) Это все очень образовательный-и отличное чувство, чтобы так близко подойти к машине - но возможность кодировать что-то на C скроет часть этой сложности, так что вы можете сосредоточиться на результатах. По этой причине я бы сказал, Идите с AVR. (И я считаю, что цены теперь ближе к фотографиям.)

Также: если вы заинтересованы в том, чтобы сделать что-то (и не возражаете потратить ~$30), проверьте arduino. Парень, продающий их в моем местном магазине электроники, говорил, что продает тонны их студентам-художникам. (Он использует IDE из проекта обработки и компилирует код с помощью avr-gcc.)

Update: исправлен комментарий, что Arduino запускает интерпретируемый код. Также обновлена приблизительная цена Arduino.

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

Я / мы выбрали PIC в основном потому, что есть больше периферийного оборудования по той же цене. И что еще более важно, вы даже не можете найти сопоставимые AVR. Однако я выбрал одну из старых бесплатных версий (начал с PIC18, перешел на dspic33)

IDE свободна, компилятор (C) свободен в студенческой версии (которая отключает оптимизацию после первого месяца). Программисты начального уровня тоже довольно дешевы. Если у вас есть куча прерываний, счетчиков и таймеров, есть шанс, что вы оптимизация не потребуется вообще. Программист прямо с микрочипа стоит $ 30.

Обратите внимание, что приведенные выше замечания о том, что AVR больше подходит для разработки HLL, немного устарели, если вы действительно не используете устаревшие архитектуры, такие как PIC12 и 16.

Обычно программируют более современные PIC18 (8-битные) и 16-битные архитектуры (24F, 30F и dspic33, которые основаны на том же основном ядре) в C. 16-биттеры даже используют GCC. Теперь есть также 32-биттеры на основе MIPS, но они соперничайте больше с ARM в сцене обработки аудио / видео. Как ни странно, современные зачастую дешевле старых. Вероятно, они производятся в более современном процессе, который имеет более высокие выходы.

Еще одно примечание: между тем Microchip/PIC купил Atmel/AVR, но я предполагаю, что в течение первых нескольких лет это не сильно повлияет на продуктовые линии.

Я действительно с нетерпением жду 60MIPs Ethernet с поддержкой 16-Горький, который будет выпущен этим летом (насколько мне известно streetprice чуть выше 10 евро)

Если вы просто хотите знать, что такое программирование MCU, начните с Arduino-это хорошая идея. Это дешево, с удобной для новичков IDE (основанной на языке программирования обработки, который имеет аналогичный синтаксис с C).

Но это не ответ на ваш вопрос, потому что хотя Arduino основан на AVR, вы не можете чувствовать, что за этой современной IDE стоит AVR MCU. :)

Мой первый опыт работы с микроконтроллерами был связан сOOPic-R . Это позволяло мне проводить простые роботизированные эксперименты, не слишком беспокоясь о коде. Поток объектно-ориентированного программирования делает все быстро и легко программируемым.

Недавно я попробовал другую разновидность PIC, дешевую PICAXE. Включенный программный интерфейс-это легкий ветерок для работы. Кроме того, чтобы физически взаимодействовать с PICAXE, вам нужен только порт RS-232, чтобы запрограммировать его и два штифта на чипе (нет необходимости делать сдвиг уровня). Я встроил PICAXE в очень маленькие контейнеры (доступны SMD и DIP чипы), и он работал довольно хорошо.

У меня нет опыта программирования микроконтроллеров в сборке. Если вы хотите попробовать это, AVR может быть более подходящим из-за его большего сообщества пользователей.

Насколько мне известно, самый дешевый способ программирования AVR с помощью инструментов ATMEL-это ATMEL AVR ISP mkII за 35$. Вы можете найти сторонних программистов для 10-15$.

У меня было гораздо больше успеха с PIC, когда я только начинал. Я попытался получить простой стартовый комплект от Arduino и просто не мог получить хороший базовый комплект, не потратив более $ 100-200 никель и затемнение установки вместе. Получил отличный маленький стартовый комплект от PIC примерно за 40 долларов, и в нем есть все: IDE, программатор, стартовая плата со встроенной схемой для демо-версий и учебников. Одна покупка. Кроме того, окружение PIC было очень легко настроить и работать. Я играл с ним. в течение часа.

Я бы сделал свой выбор, основываясь на доступности кросс-компилятора C. В прошлом это сделало бы выбор AVR. Я не уверен, каков сейчас статус.

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

Одной из лучших особенностей AVR является сообщество на форумах по адресу www.avrfreaks.net вы получаете кучу опытных инженеров-электронщиков, готовых помочь новичкам начать работать.

Я бы сказал, что я считаю микроконтроллер 8051 самым простым, и Atmel придумал микроконтроллеры с таким количеством встроенных функций .... но все же люди более предпочтительно используют AVR... моя рука поднялась бы с семьей 8051 (если бы это было удобно) или AVR ...

Я люблю AVR. его легко программировать и ресурсы доступны. есть несколько сообществ, как arduino работает с ним.

Еще несколько слов о превосходстве AVR, с другой стороны переполнение стека: http://embeddedgurus.com/stack-overflow/2009/04/pic-stack-overflow/

Популярность 8-битных картинок ставит меня в тупик. Это ужасная архитектура – ограниченный стек вызовов - это только первая ужасная вещь. Бросьте в воду потребность в подкачке и банковском обслуживании вместе с единственным вектором прерывания и у вас есть кошмарная модель программирования. Это было бы одно дело если бы это было нормой для 8 - битных устройств – но это не так. Стабилизатор архитектура сдувает пик прочь, в то время как HC05 / HC08 также являются улицы перед рисунком. Если бы у меня был выбор, думаю, я бы даже взял ... 8051 над рис. Я не вижу никаких преимуществ в стоимости, упаковка преимущества (Atmel только что выпустила SOT23-6 AVR, который по существу набор инструкций, совместимый с их крупнейшими устройствами) или периферийными устройствами установите преимущества. Короче говоря, я ничего не понимаю! Кстати, это не анекдот. обвинительное заключение по микрочипам-они великие компания и мне очень нравится много их других продуктов, их веб-сайт, техническая поддержка и так далее (возможно, именно поэтому рис так широко используется?)

Я начал с Motorola M68HC11, это было достаточно просто. Я думаю, что вы получите примерно такой же опыт с любыми 8-битными контроллерами.