Как перейти от Arduino к использованию микроконтроллера напрямую?

19

Я работал над проектом Arduino. После того, как я все заработаю, используя Arduino, я бы хотел перейти к решению, которое НЕ использует Arduino. То есть я бы хотел использовать микроконтроллер без использования платы Arduino. Это позволит одну доску, без щита решение.

Я знаю, что есть способы сделать мой собственный Arduino на макете, но это не совсем то, что я пытаюсь сделать.

Я не совсем уверен, как это сделать.

Если нет лучшего варианта, я склоняюсь к использованию ATmega328, который используется Arduino. Я понимаю, что инструменты разработки доступны бесплатно или, по крайней мере, не очень дорого.

В целях этого вопроса, предположим, что я могу получить + 5В к моей схеме.

Мой первый вопрос - как запрограммировать MCU. Я считаю, что есть два варианта:

  1. Купите программатор, запрограммируйте микроконтроллер и вставьте микросхему в мою схему.
  2. Разработайте мою схему, чтобы включить поддержку внутрисхемного программирования.

Я предполагаю, что если я выберу вариант 1, это так же просто, как вставить запрограммированный чип в мою схему; Мне больше ничего не нужно. Конечно, изменение программного обеспечения было бы неудобно.

Но для варианта № 2 я не уверен, что мне нужно. Судя по тому, что я прочитал, думаю, мне нужен кабель для программирования и разъем на моей плате (какого типа?). Затем, я думаю, я (правильно) подключаю разъем к определенным контактам ATmega.

В любом случае, мне понадобится студия Atmel.

Во-вторых, кроме блока питания, есть ли на Arduino что-нибудь, что мне абсолютно необходимо? Я думаю, может быть, переключатель сброса?

стог
источник
2
Вы можете использовать Arduino для программирования AVR. Мне лично нравится использовать инструменты командной строки и make-файл, а не IDE.
Джиппи
1
Этот вопрос может быть более подходящим для Arduino Stack Exchange. arduino.stackexchange.com Теперь в публичной бета-версии
akellyirl
4
Но моя цель - дизайн без Arduino.
Рик
"Есть ли что-нибудь на Arduino, что мне абсолютно необходимо?" Я думаю, что вам понадобятся контакты UART (он же последовательный порт), это удобно для отладки.
vvy
Атмел студия абсолютно не требуется. Я программирую свои фишки из командной строки (и текстового редактора). Хотя предоставленная для крупных проектов студия Atmel определенно облегчит это
Крис Лапланте

Ответы:

10

Добро пожаловать в удивительный мир Atmel. Позвольте мне предложить вам ответы на ваши вопросы, основываясь на моем хобби и профессиональном опыте.

Ничего не беспокойтесь, НО внутрисхемное программирование. Если вы не идеальный кодер, удаление чипа каждый раз, когда вы хотите его запрограммировать, - это кошмар. Я рекомендую AVRISPmkII в качестве инструмента программирования начального уровня. Недостаток в том, что аппаратная отладка не поддерживается. Альтернативой является дракон, но у меня нет опыта с этим. Я могу сказать, что JTAGICEmk3 - хороший инструмент для отладки.

Атмел студия хороша для программирования. На самом деле это моя любимая встроенная среда разработки. Вы можете использовать инструменты CLI, такие как AVRDUDE и AVR-GCC, но IDE позаботится об этом за вас.

В ИТОГЕ:

Купите AVRISP для простого программирования (проще, подключи и играй) или ДРАКОНА (не могу дать совет).

На вашей плате выньте контакты ICSP к 6-контактному двухрядному 0,100-дюймовому разъему - соединения описаны в этой спецификации .

Переключатели сброса не нужны.

HL-SDK
источник
1
У меня были отличные результаты с EvUSBasp.
Игнасио Васкес-Абрамс
После того, как я вынесу выводы ICSP на свою плату, нужно ли их выделять для внутрисхемного программирования, или я все равно могу их как-то использовать в качестве выводов GPIO?
Рикардо
2
Вы можете использовать их как GPIO, так как они разделяют функции с SPI. Программист сбрасывает чип, а затем связывается с ним.
HL-SDK
1
Связанные серии руководств по программированию микроконтроллеров . Они используют AVRMega и проходят через процесс подключения интернет-провайдера, а также роскошный C-код для мигания светодиода.
MDMoore313
1
@ HL-SDK прав, что для ICSP действительно должен быть выделен только вывод RESET, но для других выводов необходимо соблюдать определенную осторожность, т. Е. Их, вероятно, следует использовать в качестве выходных выводов, а не входных выводов (поэтому сигналы не Это не должно мешать внешним схемам в режиме ICSP), и все, что к ним подключено, должно быть разработано так, чтобы оно не реагировало отрицательно на любую случайную комбинацию сигналов, которую им передает программный трафик.
микротерион
10

Вам не нужно «выпускать» все сразу. Вот как я преобразовал:

Для начала я продолжал использовать Arduino, но преобразовывал вызовы библиотеки Arduino в чтение и запись в регистр, по одной строке за раз, чтобы проверить, все ли мои программы работали. Таким образом, я привык к использованию регистров и увидел, что они не являются радикально прерывистыми по отношению к Arduino. Функции Arduino, такие как digitalWrite (), просто управляют регистрами - вы можете читать и записывать их прямо в свои эскизы.

Следующим моим шагом было поставить ATTiny 85 на макет и запрограммировать его с Arduino в качестве интернет-провайдера ( http://highlowtech.org/?p=1695 ). Если вы покупаете макетный блок питания и используете внутренний генератор ATTiny, для этого требуется смехотворно небольшая проводка. Я использовал Arduino IDE для компиляции, но продолжал использовать регистры столько, сколько мог.

Затем я установил бесплатный набор инструментов командной строки Crosspack и скомпилировал мигающую программу. После еще нескольких проб и ошибок мне удалось запрограммировать ATTiny только на avrdude, оставаясь полностью вне экосистемы Arudino.

Как только вы достигнете моргания только с помощью инструментов командной строки, вы свободны от Arduino. Исследуйте различные периферийные устройства и их регистры, и вскоре это будет совершенно естественно.

После всего этого я часто использую Arduino, потому что это быстрее. Я обнаружил, что просмотр описаний регистров отстой; нет смысла делать это, если не нужно. Хотя хорошо знать, как это сделать.

user24505
источник
8

Я согласен с комментарием HL-DSK выше. Я потратил бы дополнительные деньги и получил бы программиста с возможностями отладки. Я использую JTAGICE3, около $ 110 на цифровой ключ.

Читайте о программировании ISP здесь . Он покажет вам, как вывести соединения SPI. Соединения SPI на вашем чипе будут указаны в спецификации ATmega. Смотрите на странице 2 контакты MISO / MOSI / SCK / RESET. Программист должен иметь возможность контролировать строку сброса. Не забудьте использовать подтягивающий резистор на линии сброса, чтобы ваша микросхема заработала после отключения программатора.

Получите себе заголовок 2х3 здесь . Или сделайте свой собственный, используя отколовшиеся заголовки.

qce88
источник
2
Во-вторых, я получу программиста с поддержкой отладки. Ранее в этом месяце меня бросили в глубокий конец проекта PIC32 без какого-либо предшествующего опыта работы на низком уровне. Даже когда кто-то другой пишет функциональность с минимальными битами, я даже не хочу думать о том, насколько сложнее выяснить, где были мои проблемы, если бы все, что я должен был видеть внутри, это один красный / зеленый светодиод.
Дэн Нили
Это, когда у вас есть профессиональные инструменты, нет пути назад.
Мэтт Янг
7

Разница между Arduino и голым ATmega328 - только две вещи. Загрузчик Arduino и библиотеки Arduino. Вы можете кодировать Arduino на голом C или C ++ без использования каких-либо библиотек. Вы также можете использовать сборку вместо. Загрузчик позволяет вам загружать новый код через последовательный порт, не проходя (немного) более сложное внутрисхемное последовательное программирование (в основном SPI).

Вы можете использовать стандартные библиотеки программирования и avr-gcc практически с любым ide. Вопреки тому, что могут сказать другие, кодирование Arduino в основном похоже на кодирование голого микроконтроллера с некоторыми дополнительными удобствами за счет некоторой производительности.

проезжий
источник
4
Но вы также можете использовать загрузчик Arduino и библиотеки с чистым ATmega328.
Игнасио Васкес-Абрамс
@ IgnacioVazquez-Абрамс, который превращает его в Arduino с голыми руками, естественно.
Прохожий
5

Я покупаю предварительно загруженные чипы Atmega328P и программирую их внутрисхемным кабелем FTDI. и avrdude, так же, как я запрограммировал Arduino. Мне нравится Eclipse IDE, но вы можете использовать любую среду, какую пожелаете - Atmel Studio, Arduino IDE, emacs или barefoot в командной строке.

Эта плата строится в тот момент, когда она достаточно полна для тестирования с помощью программы Hello, используя кабель для программирования, питания и терминала. Ему все еще понадобится источник питания - в моем случае сверхмалый стабилизатор напряжения LM2936 и разъем аккумулятора, а также любые другие встроенные компоненты и внешние разъемы, которые понадобятся проекту:

NotDuino

Поскольку у вас есть Arduino, вы можете сэкономить немного денег и использовать непрограммированные чипы, используя Arduino для установки загрузчика. Приятные синие ярлыки с пинаутом помогают мне сдержать глупость! Я использую кристалл 16 МГц, но если вы можете работать с внутренним осциллятором, то количество ваших компонентов уменьшится на 3 (конденсатор xtal и 2).

JRobert
источник
2

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

  1. Выберите отладчик. Отладчики предоставляют вам возможность запрограммировать микроконтроллер, а также отладку, которая включает в себя «пошаговую» обработку, «точки останова», которые позволяют вам приостановить выполнение программы на определенной строке кода, чтобы проверить, для чего предназначен код. ISP (In-Circuit Programming) - это последовательный интерфейс, использующий 3 контакта, который хорош, но не обеспечивает полной функциональности, которую мог бы захотеть новичок. JTAG,Интерфейс использует 4 контакта, которые предоставляют вам практически полную функциональность с точки зрения использования точек останова и прочего. Люди обычно больше склоняются к провайдеру, потому что его «относительно» легче настроить, но если вы спросите меня, JTAG не сложен в настройке, но это также сводится к личным предпочтениям. И есть Debug Wire интерфейс, который я хотел бы пропустить в этом обсуждении, потому что вы скорее используете ISP, чем отладочный провод.
  2. Купите отладчик, который имеет функции ISP и JTAG. Я думаю, что вы покупаете один раз, но покупаете товар, который поможет вам в будущем, если вы хотите изменить свой дизайн. Я рекомендую AVR Dragon или JTAGICE. Оба подключаются к ПК через USB и оба предоставляют ISP и JTAG. JTAGICE немного дороже, чем AVR Dragon, но я определенно рекомендую AVR Dragon.
  3. Вы обнаружите, что большинство микроконтроллеров Atmel имеют функциональность ISP, но не многие имеют JTAG. Небольшие микроконтроллеры, такие как серии AT90S2313 или ATTINY, используют серии ISP, поскольку они имеют небольшие размеры. Но если вы хотите не только мигать несколькими светодиодами, но и хотите взаимодействовать, скажем, с ЖК-экраном или клавиатурой или чем-то еще, я рекомендую заняться микроконтроллером чуть большего размера. Если вы используете питание 5 В, я рекомендую вам ATMega8 или даже ATMega16 или ATMega128 (моя любимая). ATMega16 и ATMega128 имеют интерфейс ISP и JTAG.
  4. Что касается IDE, я использовал Code Vision и AVR Studio, но я рекомендую использовать Atmel Studio 6.0 или новее, которая отвечает всем вашим потребностям.

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

Дэвид Норман
источник
1

Честный Совет

Arduino для начинающих, отсюда два пути

Способ 1: Понимание того, как работает микроконтроллер / процессор (предпочтительный подход)

Atmel 8051

Под этим я подразумеваю изучение архитектуры и кода сборки (или голого металла) для микро-п / к. Если вам нужна отправная точка для этого, я бы предложил Atmel 8051, который представляет собой 8-битный микроконтроллер с самой простой архитектурой и набором инструкций по сборке. Любой другой современный 32-битный или 64-битный процессор имеет производную от него форму архитектуры. Этот микроконтроллер все еще используется как часть моей курсовой работы для аспирантов, потому что это хорошая отправная точка и много литературы доступно.

Да, и комплекты для создания вашей платы ISP продаются (полностью собранные комплекты с процессором, паяными компонентами и комплектами платы, и вы можете собрать плату разработки самостоятельно, для этого требуется всего пара ИС / кабелей / разъемов RS-232)

Поскольку это высокотехнологичный, все компоненты будут дешевыми.

Способ 2: переход к аппаратно-программному подходу (менее предпочтительный)

Raspberry Pi Бигль кость Черный

Это подход для бездельников, которые погрузились в небольшую сборку и «выбили» ИЛИ людей, которые хотят перейти на большее количество программного обеспечения, чем аппаратного обеспечения. Я бы предложил перейти на другую платформу для любителей, например, Raspberry Pi или BeagleBoneBlack с процессорами ARM, и начать заниматься проектами и их творчеством.

Dexobox
источник
0

Вы можете использовать плату Arduino, не используя библиотеки песочниц и окружение, вы можете сами все программировать. Если вы хотите использовать их загрузчик через serial / uart для программирования, это прекрасно работает. Но большинство / все части avr также могут быть запрограммированы другим способом, с частью, удерживаемой в сбросе, что означает, что она не подлежит обработке кирпичом. это довольно легко укусить Spi от Arduino или другого микроконтроллера или с FDDI из какого-то аромата. У sparkfun есть платы arduino и non-arduino (например, 32u), что заголовок spi очевиден. и панели управления ftdi, которые вы можете легко добавить в бит, используя библиотеку ftdi или библиотеку ftdi, которая поставляется с linux.

Документация для каждой части показывает параметры загрузки и параметры программирования flash. да, это не сложно просто купить некоторые детали и сделать свою собственную разделочную доску. Я не буду этого делать, пока вы не воспользуетесь существующим прорывом или простой платой eval, а затем клонируете это, если это будет необходимо. В идеале начать с детали с внутренним генератором постоянного тока, в основном, с питанием, заземлением и контактами программирования ...

Старожил
источник