Переключение с PIC на AVR [закрыто]

Я работаю с PIC16 и PIC18 уже более трех лет и хотел бы также познакомиться с AVR. У меня нет конкретного проекта, но я хотел бы попробовать разные архитектуры. Я хотел бы получить отчет о совместимости PIC и AVR.

Программное обеспечение UC
Я знаком с ассемблером и C для PIC16 и PIC18. Чем варианты Assembly и C для микроконтроллеров AVR отличаются от вариантов PIC? Много ли различий?

Программное обеспечение ПК
Какое программное обеспечение мне потребуется для компиляции и сборки моих программ для чипов AVR? Это бесплатно и где можно скачать?

Аппаратное обеспечение
для программирования Я использовал Wisp648 от VOTI для программирования PIC, но эта плата не может программировать AVR. Должен ли я покупать программатор или в Интернете есть схемы, которые я могу собрать самостоятельно?

Аппаратное обеспечение
uC Для PIC я часто использовал PIC18F4620 . Я ищу AVR с аналогичными функциями. Особенности, которые мне нравятся:

  • Внутренний осциллятор
  • Таймеры
  • Версия 5В и 3,3В
  • АЦП
  • MSSP с поддержкой I2C и SPI
  • (Е)USART
  • ШИМ
  • Много контактов ввода/вывода
  • >= 32 КБ программной памяти, >= 2 КБ ОЗУ
  • DIP-пакет

Какой чип AVR будет иметь такие же функции? Пакет нарушает условия сделки, я действительно хочу DIP, PDIP или SPDIP. Каким должен быть AVR с сопоставимыми характеристиками?

Варианты SPI и I2C
Мне сказали, что у Microchip есть свои варианты протокола SPI и I2C. Я часто использую ведомые устройства SPI и I2C от микрочипа в сочетании с PIC. Смогу ли я использовать эти чипы (23K256, RTC, ENC28J60, ...) в сочетании с AVR? В дополнение к этому, можно ли связать AVR и микросхему PIC с помощью I2C или SPI?

@LeonHeller извините, я не совсем ясно выразился, у меня нет в голове конкретного проекта, но я хотел бы немного поиграть, чтобы познакомиться с другой архитектурой.
Этот вопрос слишком широк и не подходит для нашего формата вопросов и ответов, но в целом вы читаете спецификации процессоров, которые планируете использовать. Я не знаю, как обстоят дела на Темной стороне, но у Atmel, вероятно, есть руководство по выбору, как у Microchip. У этих компаний слишком много микропроцессоров, чтобы их можно было запомнить. Я выполнил более 100 проектов PIC за 15 лет профессионально, но все же обращаюсь к руководству по выбору при выборе нового.
Какой набор инструкций использует AVR, инструменты разработки и т. д., легко исследовать. Эти вещи хорошо поддерживаются, например PIC. Рекомендую это занимательное видео: youtube.com/watch?v=DBftApUQ8QI
Взгляните на electronics.stackexchange.com/a/66163/8627 и замените Linux на Windows. Инструментальная цепочка во многом такая же. Не идентичны, но полны вещей для Google.
@джиппи мило! Сохранено в моей закладке, когда мои образцы прибудут :)
Я использую «старый» Arduino в качестве программатора, дешевое и универсальное решение.
Еще до того, как этот пост был закрыт, я удалил все субъективные части. Пожалуйста, пересмотрите свои близкие голоса.
Я думаю, что первый и последний вопросы могут быть здесь, может быть, по отдельности. Остальные либо слишком широки, либо слишком локализованы, либо на них можно ответить, погуглив (например, аппаратное обеспечение для программирования). Я думаю, что он все еще нуждается в доработке перед открытием.
@clabacchio спасибо за ваши советы, я отредактировал свой вопрос. Аппаратную часть программирования я не убрал, но немного уточнил, с гуглом сейчас меньше шансов найти. Я надеюсь, это нормально?
Нет, вы, по сути, запрашиваете широкий спектр информации, а не публикуете вопрос, на который конкретно должен ответить сайт, для которого предназначен сайт.

Ответы (3)

программное обеспечение УК

Наборы инструкций PIC и AVR похожи, но я бы не стал программировать AVR на ассемблере. Программа на C, с Atmel Studio. Он поставляется в комплекте с AVR-версией gcc и имеет действительно хороший дизассемблер, который показывает написанную вами строку C, а под ней результирующие инструкции по сборке, что очень удобно. Я бы тоже WinAVR скачал .

программное обеспечение ПК

Используйте Атмел Студио . Не беспокойтесь об Eclipse, Programmer's Notepad или любых других случайных IDE, которые люди используют. Atmel Studio основана на Visual Studio, имеет все виды подключаемых модулей, доступных от Atmel, и имеет хороший встроенный симулятор.

Аппаратное обеспечение для программирования

Есть много дешевых программаторов AVR, таких как Bus Pirate, но возьмите Atmel ICSP . Это полностью оправдывает дополнительные расходы, если вы собираетесь реализовать более одного проекта AVR. Он использует USB и управляется из Atmel Studio.

аппаратное обеспечение UC

Существует инструмент выбора , но в целом типичное аппаратное обеспечение AtMega низкого уровня:

Internal Oscillator (8 MHz)
3 Timers
2.7-5.5V Supply range
8-channel multiplexed ADC
I2C and SPI support
USART
2 PWMs that work in conjunction with the 8 bit timers

Переход на более производительные чипы купит вам больше таймеров и ШИМ. Объем доступной флэш-памяти и SRAM зависит от конкретного чипа. Большинство частей AtMega доступны в PDIP, а QFP — это действительно большое количество контактов.

Варианты SPI и I2C

Можно использовать устройства MCP I2C (TWI для AVR) и SPI с контроллерами AVR uC. Вам действительно нужно внимательно прочитать разделы SPI и TWI спецификации AVR, не пропуская ни строчки. Для каждого интерфейса имеется несколько управляющих регистров для порядка данных, полярности тактовых импульсов и т. д. Все это изложено в даташитах и ​​очень читабельно. Было бы несложно связать AVR и PIC. Вам просто нужно будет поиграть с режимами SPI или TWI, пока вы не установите связь.

ATtiny — младший брат ATmega. Они очень похожи, когда дело доходит до их программирования. Я «портировал» программное обеспечение с мега на крошечное, просто изменив тип детали в Makefile.
Джиппи @CamilStaps делает хорошее замечание. Я не знаю, похоже ли это на PIC, но процессоры AVR по большей части имеют одинаковые имена регистров и порядок битов. Есть некоторые исключения, например, более производительный процессор может разбить управляющий регистр на две части. Во всех таблицах данных есть раздел описания регистров в каждой главе, что упрощает сравнение.
PIC тоже, по крайней мере, в одном семействе (PIC16, PIC18, ..). Спасибо за подсказку (@jippie)!
Это отличное объяснение. Мои любимые чипы AVR — ATmega328p и ATtiny24. Другими распространенными линиями являются tinyx5 и tiny2313. Все они доступны в DIP, и все они имеют один и тот же интерфейс программирования на основе SPI: ISP. Для дешевого и быстрого старта попробуйте этот USB-программатор от Sparkfun: sparkfun.com/products/9825 Также стоит упомянуть популярный пакет программ для Windows, известный как WinAVR: winavr.sourceforge.net Вам не нужна какая-либо разработка плата, только блок питания, шунтирующие конденсаторы, а может и кристалл.

Я одинаково хорошо работаю на PIC и AVR (и на других тоже).

Мне нравятся AVR во многом из -за AVR-libc . Это достойная встроенная библиотека с открытым исходным кодом и достаточно хорошо документированная ( В отличие от plib от Microchip, но у plib есть полный исходный код, что я искренне ценю). AVR используют обычные старые gcc и gdb, что означает, что никакие идиотские IDE не мешают мне. Одни и те же инструменты работают в Windows, OSX и Linux, и мне не нужна 600 МБ+ IDE с Java и Netbeans или Eclipse, чтобы споткнуться или загрязнить мое исходное дерево своим собственным мусором.

Программирование AVR обычно выполняется через ISP или JTAG ( недавно был вопрос об этом), и с точки зрения программирования он не сильно отличается от любого другого микроконтроллера.

С личной точки зрения, мне очень не нравятся таблицы данных и нумерация деталей Microchip. Я освоил дизайн встраиваемых систем с помощью Microchip, и они мне очень-очень нравились, но когда я ищу микро в эти дни, я склонен начинать с Atmel, хотя они тоже не лишены недостатков. (SAM-BA - мусор для их частей SAM, и у меня тоже были некоторые проблемы с их заводской поддержкой.)

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

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

  • Что касается IDE и программатора, у Atmel есть предложения, аналогичные Microchip, просто зайдите на их веб-сайт, загрузите бесплатную IDE и выберите программатор.

  • Чип, аналогичный 18F, может быть чем-то вроде ATMega328 (тот, который используется в Arduinos). Я полагаю, что у них есть версии в корпусе DIP.

  • Да, I2C и SPI должны работать одинаково. Связать AVR и PIC не должно быть проблемой.

Отказ от ответственности - я не использовал AVR в течение длительного времени. В настоящее время я в основном использую PIC и ARM, но в прошлом у меня никогда не было проблем с подключением чего-либо через SPI/I2C, поскольку я часто использовал SPI для соединения, например, между PIC/Atmel EEPROM/Cortex-M3/FPGA. SPI — это очень простой протокол, который практически любой современный микропроцессор должен поддерживать аппаратно.
I2C немного сложнее. Я не могу вспомнить историю лицензирования/наименования (например, 2-wire, I2C, SMBus) навскидку, но, насколько мне известно, большинство периферийных устройств совместимы на базовом уровне. Прочитайте страницы Wiki для более подробной информации.

TWI (двухпроводной интерфейс) Atmel совместим с I2C. I2C может быть лицензирован NXP (бывшая технология Philips), но Atmel удалось обойти лицензионный сбор.