Выбор микроконтроллера

Я хочу отойти от Arduino и начать несколько проектов с использованием более многофункциональных микроконтроллеров. Я смотрел на PIC18F4550 из-за его набора функций, но я избегаю продуктов PIC, в основном потому, что у меня нет программатора, а picKIT немного дорогой (50 долларов за picKIT II, ​​70 долларов за picKIT III) . Я не так много изучал предложения AVR, но думаю, что, возможно, захочу. Вот что я ищу:

  1. 32+ контакта цифрового ввода/вывода
  2. Программируется с минимальным внешним оборудованием. Бонусные баллы, если я смогу использовать USB-чип на плате разработчика Arduino или мой кабель ftdi-usb , чтобы запрограммировать его по дешевке.
  3. Встроенный USB. Это одна из причин, по которой я действительно склонялся к 18F4550. Есть ли аналогичный чип AVR со встроенными возможностями USB?
  4. Хорошие онлайн-ресурсы. Я хотел бы изучить прямую сборку, и было бы хорошо, если бы были хорошие онлайн-ресурсы для изучения сборки для моей платформы без необходимости читать 500-страничное техническое описание.
  5. Монтаж через отверстие.
  6. Минимум внешних схем для запуска. Внутренний осциллятор был бы хорош для быстрого прототипирования, но я без проблем добавлю кварц, если понадобится.

У кого-нибудь есть рекомендации в ту или иную сторону?

Если вы хотите начать с более мощных микроконтроллеров, picKIT будет небольшой частью ваших инвестиций. Кроме того, PIC18 очень похож на ATmega на Arduino. Сколько еще мощности вы хотите? Наконец, № 5 — Монтаж через отверстие — сильно ограничивает ваши возможности. Я понимаю, что вам может нравиться макетирование или неудобная пайка, но мощные микросхемы предназначены для поверхностного монтажа, и это трудно обойти.
Возможно, мой вопрос вводит в заблуждение. Я согласен с вычислительной мощностью Arduino, но несколько проектов, о которых я думаю, требуют большего количества ввода-вывода, периферийных устройств, программной памяти и т. д. Мои платы будут изготовлены профессионально, и я согласен с базовой пайкой поверхностного монтажа, но на самом деле только самые широкие поля.
Это имеет больше смысла. Отредактировал текст, чтобы отразить это. Кроме того, вы должны прочитать обличительную речь/мантру на electronics.stackexchange.com/q/16868/857 о важности таблиц данных; чтение таблицы данных является обязательным, если вы серьезно относитесь к электротехнике.
Я не обязательно против таблиц данных, мне просто трудно учиться на них как на первоисточнике. Гораздо проще, если кто-нибудь сначала объяснит мне функции и основы использования, чтобы я знал, что ищу в техническом описании.

Ответы (6)

Хотя PIC18F4550 является приличным uC, и существует довольно много примеров его использования для USB, он по-прежнему 8-битный и, вероятно, находится в той же «лиге», что и ваш Arduino.

Если вам нужно немного больше мощности, я бы, возможно, посмотрел на 16-битный PIC24 / dsPIC (намного более мощный и все еще доступный в сквозном отверстии) или даже PIC32 (только для поверхностного монтажа, и вы обычно используете C для программирования это)

Я думал, что PicKit3 (я полагаю, вы имеете в виду это) был не так уж и плох с точки зрения цены, с точки зрения программистов, но если вы хотите дешевле, вы можете выбрать PicKit2, который, хотя официально больше не поддерживается, по-прежнему будет использоваться с 99% Ассортимент микросхем.
Есть также много других достойных программаторов для PIC, например, предложения Embed Inc - если вы выберете 16-битные части 3,3 В, я думаю, LProg за 25 долларов подойдет.

Хотя онлайн-ресурсы и хорошая связанная книга (например, Learning to Fly the PIC24 — обратите внимание, что она написана на C) облегчают начало работы, я бы привык к тщательному чтению таблиц данных (и справочного руководства по семейству в случае PIC24/dsPIC). , это необходимая часть использования любого микроконтроллера и единственный способ (ИМХО) научиться использовать их в полной мере, особенно более сложные. Даже в приведенной выше книге (хотя и хорошо написанной) упущено много деталей более низкого уровня.

Microchip PIC Stick за 25 долларов стоит довольно дешево microchip.com/stellent/…
У меня тоже есть такой ebay.com/itm/…
@kenny - они тоже выглядят довольно хорошими вариантами. Особенно второй, который поддерживает 3,3 В и 5 В от PIC10F до PIC24 по цене ~ 21 доллар США с учетом P + P. @ CMP Перед покупкой стоит проверить список поддерживаемых устройств (с помощью любого программатора), чтобы узнать, включены ли чипы, которые вы хотите использовать. Однажды я обжегся на программаторе Wellon из-за невнимательной проверки (более 10 000 поддерживаемых устройств, к сожалению, 95% из них старше 5 лет, и больше нет обновлений прошивки...)
Да, у этого программатора есть некоторые ограничения устройства, он «совместим» с PicKit2.
@kenny - я видел это, но это выглядело довольно поверхностно. Как качество? Похоже, это именно то, что мне нужно, но если я куплю один, а он сломается, я с тем же успехом мог купить пикит 2.
Дизайн хоть и дешевый, но сделан добротно. Кабель USB короткий, поэтому вам, вероятно, понадобится удлинитель. Вместо корпуса у него желтая «термоусадочная пленка».

Лично я клянусь чипами PIC.

Я тоже часто ругаюсь на них.

Да, вы получаете много контактов ввода-вывода. Да, вы получаете внутренний осциллятор. Да, вы получаете встроенный USB, CAN, SPI, I²C, АЦП, ЦАП (на некоторых dsPIC), кухонную раковину и даже луну на флешке.

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

Вы говорите, что программатор PIC дороговат? Это не должно быть. Я использую дешевый клон с ebay. В нем нет всех наворотов (нет отладки), но он хорошо работает для меня, и все основные программы для программирования работают с ним. Аппаратное обеспечение с открытым исходным кодом — вы можете скачать схемы и прошивку с Microchip, если хотите. Вы также можете загрузить спецификации того, как выполнять программирование, если хотите создать свой собственный программатор — он просто последовательный, поэтому (кроме +12V Vpp) вы сможете создать программатор с помощью Arduino.

Что касается других… Я знаю, что в новых платах Arduino UNO чип FDTI заменен на чип Atmel MEGA8U2 со встроенным USB. Я не уверен, доступен ли он в виде PDIP или нет.

1 и 5: Многие модели AVR Atmel поставляются в 40-контактном DIP-корпусе, соответствующем этим требованиям. 40-контактная модель, которую я сейчас использую, имеет 4 8-битных порта ввода-вывода == 32 порта ввода-вывода (если не используются какие-либо другие периферийные устройства).

2: Arduino может реализовать этот метод программирования, используя свой загрузчик, который всегда находится во флэш-памяти чипа. Для программирования через UART (что и делает Arduino для программирования) может потребоваться немного работы. Вот еще немного информации о загрузчике, если вам интересно. Хорошей новостью является то, что вам ничего из этого не понадобится, если вы используете программатор ICSP, который не требует внешних схем.

3: Посмотрите здесь и используйте Ctrl+F в браузере, чтобы найти детали с поддержкой USB.

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

5: См. первый пункт.

6: В наши дни внутренние генераторы стали почти стандартной функцией. Опять же, обратитесь к описанию их продукта или обратитесь к техническому описанию, чтобы знать наверняка. Пример: щелкнув случайную часть на сайте Atmel и прокрутив параметры, вы обнаружите поле, которое говорит вам Calibrated RC Oscillator: yes<-- это означает, что есть внутренний осциллятор.

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

Боюсь, если вы настаиваете и на USB, и на сквозном разъеме, то вы, вероятно, застряли либо с AVR, либо с PIC. Большинство «больших парней» используют QFP или QFN для чипов с USB и достаточным количеством контактов, чтобы иметь 32 GPIO. Однако использовать разделительную доску QFP не так уж сложно. Если вы хотите попробовать это, вот пара, которую я могу предложить:

1) МСП430. Приятная маломощная 16-битная архитектура, разумный набор инструкций, довольно простые (IMO) периферийные устройства. Комплект за 4,30 доллара доступен в виде безрискового вступления (включает в себя программатор и отладчик). Тем не менее, DIP-части, такие как на Launchpad, довольно ограничены, и вам придется перейти на QFP, если вы хотите что-то для своих требований.

2) Чип Cortex-M3 или Cortex-M0 ARM. На рынке есть несколько предложений, например серия LPC от NXP (см. LPCXpresso , около 30 долларов) или STM32 от ST (STM32VLDISCOVERY, около 12 долларов). Эти красавицы 32-битные, поэтому обладают большой мощностью, но несколько сложнее, чем 8-битные.

Почему бы вам не придерживаться Arduino, потому что Arduino Due будет использовать микроконтроллер на базе ARM Atmel SAM3U?

Если вы хотите изучить язык ассемблера, я предлагаю найти хорошего программиста, который поддерживает отладку. Как правило, они дороже (50-100 долларов), но когда у вас есть ошибка, которую вы просто не можете понять, нет ничего лучше, чем увидеть, что происходит внутри микроконтроллера. Поскольку вы пришли из мира Arduino, вы, вероятно, очень привыкли к отладке с использованием вывода данных через последовательный порт, но особенно если вы хотите изучить язык ассемблера, просто включение последовательного порта без отладчика потребует «Кодирование в темноте». ".

Мне очень понравилась ATXMega. Многие чипы Atmel могут быть запрограммированы на C с использованием Atmel Software Framework, который имеет отличные примеры и отлично справляется с сокрытием использования указателей (что является большим преимуществом при программировании на Arduino). Он отвечает всем вашим требованиям, указанным выше, включая некоторые с USB и особенно вводом-выводом с 34-78 в корпусах от 44 до 100 контактов, за исключением того, что он доступен только для поверхностного монтажа, но я припаял его вручную с помощью паяльника, фитиля припоя и 7-кратного увеличения, чтобы убедиться, что не было любые паяные мосты.

Мне очень нравится Atmel Studio, но я немного предвзят, потому что моя повседневная работа использует Visual Studio, и Atmel Studio основана на ней. Отладка в Atmel Studio действительно удобна, поскольку все регистры конфигурации и их состояния хорошо видны. Я смог протестировать изготовленные на заказ печатные платы, используя только метод main() и отладчик.