Запуск кода Arduino для Bluefruit LE на чистом ATMega328

Мне нужно подключить Bluefruit LE Breakout (на базе nRF8001) на чип ATMega328 (чтобы использовать его в качестве беспроводного UART), и это похоже на библиотеку предусмотрено для Arduino.

То, что у меня есть, это просто голая ATMega328 (обратите внимание на отсутствие "p"), которую я собираюсь программировать (с помощью avrispmkii напрямую). Поскольку MCU у меня уже собран, я не хочу менять, скажем, на Arduino Uno, чтобы иметь возможность использовать библиотеку. Скорее всего, я сначала «поиграюсь» с Bluefruit на Arduino, чтобы прочувствовать его, но код нужно запускать на «голом» ATMega328. Другая часть программы (которая подготавливает данные для отправки из atmega) тривиальна, поэтому я без проблем перепишу ее с C на Arduino. Перенос библиотеки Adafruit с C++ на C, вероятно, намного сложнее.

Таким образом, один из возможных подходов — скомпилировать мой код + код Bluefruit LE для Arduino, но загрузить в ATMega328.

И вот тут мне нужна помощь:

Как заставить Arduino (инструмент командной строки подходит) скомпилировать в MCU, который у меня есть? Думаю, в результате должен получиться какой-то hex-файл для прошивки (и eeprom?).

И, может быть полезно, какие флаги использовать с avrdude, если есть что-то конкретное для кода, сгенерированного Arduino. (Мне не нужны никакие загрузчики на чипе, только программа, и у меня нет UART-USB подключенного к атмеге).

Конечно, пожалуйста, укажите, есть ли более эффективные способы, которые я упустил, например, какой-нибудь совместимый с Arduino набор инструментов gcc для компиляции смеси C++/C в код avr (avr-g++?). Или, может быть, есть какая-то C-библиотека для компонента, с которым должен общаться atmega.

ОБНОВЛЕНИЕ: аналогичный вопрос: http:// www.avrfreaks.net/forum/using-arduino-ide-general-atmel-microcontroller-no-bootloader-no-cristal

, 👍0


1 ответ


Лучший ответ:

1

UNO — это просто ATMega328(P). Таким образом, вы можете запустить тот же скомпилированный код для UNO на чистом ATMega328.

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

Вы можете просто выбрать нужную плату Arduino UNO. Выберите avrispmkii в качестве программатора. Затем вместо Загрузить выберите Загрузить с помощью Programmer (в меню Скетч).

,

Тогда все просто, спасибо. Я проверю это, как только выясню, как настроить F_CPU и предохранители в Arduino (я использую внутренние часы 8 МГц), и решу, что делать с выводом RST для модуля BLE., @Roman Susi

Просто загрузите мое [определение досок](http://algemeenbekend.nl/misc/atmega-1.5.zip). Просто извлеките и поместите в папку «оборудование» в папке скетчей Arduino (создайте, если ее еще нет). Плата 328 @ 8mhz должна быть добавлена в меню Tools->Boards после перезапуска IDE., @Gerben

Единственное место, где вам *придется* беспокоиться о сравнении 328 и 328P, - это конфигурация программатора - хотя файл обычно работает между чипами, программа откажется загружать его в другой файл, отличный от ожидаемого., @Chris Stratton

Просто для подтверждения: я сделал свое определение «платы» (MCU, предохранители, частота), и «Загрузка с помощью программатора» определенно работает: я смог использовать BLE «UART»! Насчет отказа загружаться, да, было одно предупреждение, когда у меня была промежуточная конфигурация (забыл поменять mcu с atmega328p на atmega328). Я не пробовал менять частоты (и загрузчик) на Uno, поэтому переключился на «голый» чип, как только понял uart., @Roman Susi

А, верно. В моих платах сверху отредактируйте boards.txt и измените atmega328-8mhz.build.mcu=atmega328p на atmega328-8mhz.build.mcu=atmega328., @Gerben